Condividi tramite

Come collegare più fatture statiche foglio 1 al registro foglio 2

Anonimo
2025-03-04T15:10:11+00:00

Ciao a tutti,

vorrei provare a fare questo:

Nel foglio 1 ho il formato statico di una fattura

Nel foglio 2 vorrei che mi riportasse in automatico i dati della fattura in un registro

Come posso fare (se si può fare) che ogni volta che faccio una fattura nel foglio 1 (cancellando la fattura fatta prima e inserendo nuovi dati) mi compila in automatico il registro del foglio 2 inserendo di volta in volta una riga con i nuovi dati della nuova fattura.

Grazie

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

5 risposte

Ordina per: Più utili
  1. Anonimo
    2025-03-12T17:43:50+00:00

    La risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o parole insolite.

    Ciao Luca

    Grazie per la tua risposta.

    Ottima domanda! Il problema del tuo codice attuale è che, dopo aver corretto la fattura nel Foglio 1 e aver eseguito nuovamente la macro AggiungiAlRegistro, questa aggiunge una nuova riga nel registro invece di aggiornare quella esistente. Per risolvere, dobbiamo modificare la macro per cercare la fattura nel registro e aggiornare i dati esistenti invece di aggiungere una nuova riga. Ecco come fare:


    Passo 1: Modifica della Macro "AggiungiAlRegistro"

    Aggiorna la macro per:

    1. Cercare se la fattura esiste già nel registro (tramite il numero fattura).
    2. Sovrascrivere i dati se esiste, altrimenti aggiungere una nuova riga. Sub AggiungiAlRegistro()     Dim wsFattura As Worksheet     Dim wsRegistro As Worksheet     Dim prossimaRiga As Long     Dim numeroFattura As String     Dim rigaTrovata As Range     Set wsFattura = ThisWorkbook.Sheets("Foglio1")     Set wsRegistro = ThisWorkbook.Sheets("Foglio2")     ' Ottieni il numero della fattura dal Foglio 1     numeroFattura = wsFattura.Range("B2").Value     ' Cerca la riga nel registro     Set rigaTrovata = wsRegistro.Columns(1).Find(What:=numeroFattura, LookIn:=xlValues, LookAt:=xlWhole)     If Not rigaTrovata Is Nothing Then         ' Se la fattura esiste, sovrascrivi i dati         rigaTrovata.Offset(0, 1).Value = wsFattura.Range("B3").Value ' Data         rigaTrovata.Offset(0, 2).Value = wsFattura.Range("B5").Value ' Cliente         rigaTrovata.Offset(0, 3).Value = wsFattura.Range("B10").Value ' Importo         MsgBox "Fattura " & numeroFattura & " aggiornata nel registro!", vbInformation     Else         ' Se non esiste, aggiungi una nuova riga         prossimaRiga = wsRegistro.Cells(wsRegistro.Rows.Count, "A").End(xlUp).Row + 1         wsRegistro.Cells(prossimaRiga, 1).Value = numeroFattura         wsRegistro.Cells(prossimaRiga, 2).Value = wsFattura.Range("B3").Value         wsRegistro.Cells(prossimaRiga, 3).Value = wsFattura.Range("B5").Value         wsRegistro.Cells(prossimaRiga, 4).Value = wsFattura.Range("B10").Value         MsgBox "Nuova fattura " & numeroFattura & " aggiunta al registro!", vbInformation     End If     ' Cancella i dati della fattura (opzionale)     If MsgBox("Vuoi cancellare i dati della fattura corrente?", vbYesNo) = vbYes Then         wsFattura.Range("B2, B3, B5, B10").ClearContents     End If End Sub

    Passo 2: Come Funziona Ora

    1. Usi RiprendiFattura per caricare una fattura esistente nel Foglio 1.
    2. Modifichi i dati nel Foglio 1 (es. correggi l'indirizzo o l'importo).
    3. Quando esegui AggiungiAlRegistro, la macro:
      • Cerca il numero della fattura nel registro.
      • Se trova una corrispondenza, aggiorna la riga esistente.
      • Se non trova nulla, aggiunge una nuova riga (come prima).

    Note Importanti

    1. Blocca la Modifica del Numero Fattura:
      • Se cambi il numero della fattura nel Foglio 1, la macro la tratterà come una nuova fattura.
      • Per evitare duplicati, potresti aggiungere un controllo per impedire la modifica del numero fattura:
      ' Aggiungi questo all'inizio di AggiungiAlRegistro If wsFattura.Range("B2").Value = "" Then     MsgBox "Inserisci un numero fattura valido!", vbExclamation     Exit Sub End If
    2. Gestione Errori:
      • Aggiungi un controllo per evitare dati mancanti:
      If wsFattura.Range("B2").Value = "" Or wsFattura.Range("B3").Value = "" Then     MsgBox "Compila tutti i campi obbligatori!", vbExclamation     Exit Sub End If

    Esempio di Flusso di Lavoro

    1. Correzione di una Fattura:
      • Esegui RiprendiFattura ➔ inserisci il numero fattura da correggere.
      • I dati vengono caricati nel Foglio 1.
      • Modifichi l'indirizzo (cella B5) e l'importo (cella B10).
      • Esegui AggiungiAlRegistro: i dati nel registro vengono aggiornati, non duplicati.
    2. Creazione di una Nuova Fattura

    >:

    • Inserisci un nuovo numero fattura nel Foglio 1.
    • Compili i dati ed esegui AggiungiAlRegistro: viene aggiunta una nuova riga nel registro.

    Miglioramento della Macro "RiprendiFattura"

    Ecco una versione migliorata con gestione degli errori:

    Sub RiprendiFattura()
    
        Dim wsFattura As Worksheet
    
        Dim wsRegistro As Worksheet
    
        Dim numeroFattura As String
    
        Dim rigaTrovata As Range
    
        Set wsFattura = Worksheets("Foglio1")
    
        Set wsRegistro = Worksheets("Foglio2")
    
        numeroFattura = InputBox("Inserisci il numero della fattura da correggere:")
    
        If numeroFattura = "" Then Exit Sub
    
        Set rigaTrovata = wsRegistro.Columns(1).Find(What:=numeroFattura, LookIn:=xlValues, LookAt:=xlWhole)
    
        If Not rigaTrovata Is Nothing Then
    
            ' Carica i dati nel Foglio 1
    
            wsFattura.Range("B2").Value = rigaTrovata.Value
    
            wsFattura.Range("B3").Value = rigaTrovata.Offset(0, 1).Value
    
            wsFattura.Range("B5").Value = rigaTrovata.Offset(0, 2).Value
    
            wsFattura.Range("B10").Value = rigaTrovata.Offset(0, 3).Value
    
            MsgBox "Fattura caricata per la modifica. Dopo le correzioni, esegui 'AggiungiAlRegistro'.", vbInformation
    
        Else
    
            MsgBox "Numero fattura non trovato.", vbExclamation
    
        End If
    
    End Sub
    

    Suggerimenti Finali

    • Backup del Registro: Prima di modificare macro complesse, salva una copia del file.
    • Protezione Fogli: Proteggi il Foglio 2 (registro) per evitare modifiche accidentali.
    • Pulsanti per le Macro: Assegna le macro a pulsanti nel Foglio 1 per un accesso rapido.

    Con queste modifiche, il tuo sistema gestirà correttamente sia l'aggiunta che la modifica delle fatture! 

    Spero che questi suggerimenti ti siano stati utili!

    Sentiti libero di farmi sapere se hai altre domande o hai bisogno di ulteriore aiuto.

    Migliori saluti

    Adrian.C-MSFT | Specialista del supporto della community Microsoft

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2025-03-12T14:00:49+00:00

    Per esempio ho inserito questo codice.

    Mi riprende la fattura del foglio 2 ma una volta corretta nel foglio 1 mi riporta un'altra riga nel foglio 2 invece di correggerla.

    Sub RiprendiFattura()

    Dim wsFattura As Worksheet 
    
    Dim wsRegistro As Worksheet 
    
    Dim numeroFattura As String 
    
    Dim rigaTrovata As Range 
    
    Set wsFattura = Worksheets("Foglio1") 
    
    Set wsRegistro = Worksheets("Foglio2") 
    
    ' Ottieni il numero della fattura da correggere 
    
    numeroFattura = InputBox("Inserisci il numero della fattura da correggere:") 
    
    ' Cerca la riga con il numero della fattura nel registro 
    
    Set rigaTrovata = wsRegistro.Columns(1).Find(What:=numeroFattura, LookIn:=xlValues, LookAt:=xlWhole) 
    
    If Not rigaTrovata Is Nothing Then 
    
        ' Se la fattura esiste, trasferisci i dati nel Foglio 1 per la modifica 
    
        wsFattura.Range("B2").Value = rigaTrovata.Value ' Numero fattura 
    
        wsFattura.Range("B3").Value = rigaTrovata.Offset(0, 1).Value ' Data 
    
        wsFattura.Range("B5").Value = rigaTrovata.Offset(0, 2).Value ' Cliente 
    
        wsFattura.Range("B10").Value = rigaTrovata.Offset(0, 3).Value ' Importo 
    
        ' Aggiungi altre righe se necessario per altri campi 
    
    Else 
    
        MsgBox "Numero fattura non trovato nel registro.", vbExclamation 
    
    End If 
    

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Eleuterio Tedeschi 18,590 Punti di reputazione Moderatore volontario
    2025-03-12T08:45:22+00:00

    Un'altra domanda (sempre se si può fare)... se volessi riprendere una fattura nel FOGLIO 1 per fare delle correzione.

    per esempio: mi accorgo nel FOGLIO 2 ho caricato un importo sbagliato e un indirizzo sbagliato, come riprendere tutta la fattura nel FOGLIO 1 e correggerla.

    Grazie

    Non ti basta più neppure il codice che ti è stato fornito, perché la registrazione della fattura nel 2° foglio prevede il controllo che la stessa non sia già presente.

    Se potessi fornire il codice modificato o, meglio, condividere il file di esempio, si può contestualizzare la soluzione.

    Ciao.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2025-03-12T08:29:11+00:00

    Un'altra domanda (sempre se si può fare)... se volessi riprendere una fattura nel FOGLIO 1 per fare delle correzione.

    per esempio: mi accorgo nel FOGLIO 2 ho caricato un importo sbagliato e un indirizzo sbagliato, come riprendere tutta la fattura nel FOGLIO 1 e correggerla.

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2025-03-05T05:26:40+00:00

    La risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o parole insolite.

    Ciao Luca

    Benvenuto nella community Microsoft.

    Mi rendo conto che hai riscontrato un problema con " Come collegare più fatture statiche foglio 1 al registro foglio 2 ", e capisco come ti senti. Non preoccuparti, farò del mio meglio per aiutarti.

    Per creare un registro automatico delle fatture in Excel, puoi utilizzare una combinazione di formule e macro VBA. Ecco come procedere:


    Passo 1: Struttura dei Fogli

    • Foglio 1 (Fattura): Definisci celle fisse per i dati della fattura (es. Numero Fattura, Data, Cliente, Importo, ecc.). Ad esempio:
      • Numero Fattura: Cella B2
      • Dati: Cella B3
      • Cliente: Cella B5
      • Importo: Cella B10
    • Foglio 2 (Registro): Crea una tabella con intestazioni corrispondenti ai dati della fattura (es. "Numero Fattura", "Data", "Cliente", "Importo").

    Passo 2: Usare una Macro VBA per Automatizzare

    Per copiare i dati dal Foglio 1 al Foglio 2 ogni volta che crei una nuova fattura, usa questo script VBA:

    Sub AggiungiAlRegistro()
    
        Dim wsFattura As Worksheet
    
        Dim wsRegistro As Worksheet
    
        Dim prossimaRiga As Long
    
        Set wsFattura = ThisWorkbook.Sheets("Foglio1")
    
        Set wsRegistro = ThisWorkbook.Sheets("Foglio2")
    
        ' Trova la prima riga vuota nel registro
    
        prossimaRiga = wsRegistro.Cells(wsRegistro.Rows.Count, "A").End(xlUp).Row + 1
    
        ' Copia i dati dalla fattura al registro
    
        wsRegistro.Cells(prossimaRiga, 1).Value = wsFattura.Range("B2").Value ' Numero Fattura
    
        wsRegistro.Cells(prossimaRiga, 2).Value = wsFattura.Range("B3").Value ' Data
    
        wsRegistro.Cells(prossimaRiga, 3).Value = wsFattura.Range("B5").Value ' Cliente
    
        wsRegistro.Cells(prossimaRiga, 4).Value = wsFattura.Range("B10").Value ' Importo
    
        ' Cancella i dati della fattura (opzionale)
    
        wsFattura.Range("B2, B3, B5, B10").ClearContents
    
    End Sub
    

    Passo 3: Collegare la Macro a un Pulsante

    1. Vai al Foglio 1.
    2. Inserisci un pulsante (Menu: Inserisci > Forme o Inserisci > Controlli).
    3. Assegna la macro AggiungiAlRegistro al pulsante.
    4. Ogni volta che completi una fattura, clicca il pulsante per salvare i dati nel registro e cancellare il template.

    Note Importanti

    • Personalizza le Celle: Modifica i riferimenti alle celle (B2, B3, ecc.) in base al tuo template.
    • Backup: Fai sempre un backup del file, poiché le macro non sono reversibili.
    • Sicurezza: Abilita le macro in Excel tramite File > Opzioni > Centro protezione > Impostazioni Centro protezione > Macro.

    Esempio Senza Macro (Formula Dinamica)

    Se preferisci non usare VBA, puoi usare formule come INDIRETTO o tabelle dinamiche, ma non sarà automatico quando cancelli i dati. Esempio:

    • Nel Foglio 2, usa =SE(FOGLIO1! B2<>""; FOGLIO1! B2; "") per ogni cella, ma dovrai copiare manualmente i valori.

    Con questa configurazione, ogni nuova fattura verrà aggiunta al registro in modo automatico e organizzato! 

    Spero che questi suggerimenti ti siano stati utili!

    Sentiti libero di farmi sapere se hai altre domande o hai bisogno di ulteriore aiuto.

    Migliori saluti

    Adrian.C-MSFT | Specialista del supporto della community Microsoft

    La risposta è stata utile?

    0 commenti Nessun commento