gra ha scritto:....chiaro?
Certamente piu' di prima.
Quindi, hai un Foglio1 con diciamo una anagrafica Cliente disposta in orizzontale (N colonne su 1 riga); vuoi poter richiamare i dati anagrafici di un certo Cliente ed eventualmente cambiare qualche parametro, utilizzando allo scopo un Foglio2. Cominciamo a rinominare Foglio1 in “Anagrafica” e Foglio2 in “Work”
Per semplicita’ supponiamo che su Anagrafica l’ anagrafica sia fatta su 4 colonne (A-B-C-D), e riga 1 sia usata per le intestazioni; la “chiave” di accesso sia la colonna A; il processo e’ comunque valido per un numero indefinito di colonne.
Prepariamo Work: anche qui Riga 1 contiene le intestazioni che compiliamo cosi’ (tra VIRGOLETTE i testi, attenzione a copiare le formule dal crt = in avanti):
A1: “Codice” (sara’ la chiave di ricerca nell’ anagrafica); B1: “Riga”; C1 e D1: vuote; E1: =Anagrafica!A1 poi la stessa formula si copia da E1 su F1-G1-H1 in modo che su E1:H1 compaiano le stesse intestazioni del foglio Anagrafica.
Riga 2: A2 la lasciamo vuota; B2 =CONFRONTA(Work!A2;Anagrafica!A:A;0) C2 e’ vuota; D2: “Valori Attuali -->” E2 =SCARTO(Anagrafica!A1;$B$2-1;0) poi si copia da E2 su F2-G2-H2.
A QUESTO PUNTO, se in A2 si digita un codice valido (esistente in colonna A di Anagrafica), B2 conterra’ il numero di riga di quel codice e le celle E2:H2 presenteranno i valori che al momento sono in anagrafica per quel codice. Inoltre alla cella B2 assegnare il nome RNum (Menu ->Inserisci ->Nome ->Definisci)
Prepariamo un’ area di modifica, su riga 7:
In D7: “Modifiche -->” , poi selezioniamo le celle E7:H7 e assegniamole il nome NewVal (Menu ->Inserisci ->Nome ->Definisci) e magari le coloriamo a piacere (tipo Giallo chiaro) per metterle in evidenza. Infine in I7 mettiamo =COLONNE(NewVal)-CONTA.SE(E7:H7;"") e assegniamo il nome CCount. Questo contatore servira’ per contare quanti campi sono stati modificati.
Componiamo infine la nuova riga per l’ anagrafica su riga 12:
In D12: “Nuovi Valori -->” in E12 =SE(E7="";E2;E7) poi si copia da E12 su F12-G12-H12
Suggerisco anche di aggiungere questa formattazione condizionale sulle celle E12:H12
-su Condizione 1 scegliere “la formula e’ “, e nel campo formula scrivere =CCount=0 ; selezionare poi Formato, Tab “Carattere” e scegliere un colore tipo grigio 40%; chiudere con Ok e Ok. In questo modo se non sono state apportate modifiche le righe di Nuovi Valori sono in grigio leggero, a indicare che non ci sono modifiche da registrare.
Penultima operazione, memorizzare la seguente macro:
- Codice: Seleziona tutto
Sub EditAnagr()
'Sposta in Anagrafica i dati modificati, se ci sono state modifiche
If Range("CCount").Value = 0 Then GoTo Skippa:
Sheets("Anagrafica").Select
' OFFR = Range("RNum").Value - 1
' Range("A1").Offset(OFFR, 0).Select
Range("A1").Offset(Range("Rnum").Value - 1, 0).Select
Range("NewLine").Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Offset(Range("Rnum").Value - 1, 0).Select
Skippa:
Sheets("Work").Select
Application.Goto Reference:="NewVal"
Selection.ClearContents
Range("A2").Select
End Sub
Ultima operazione, su foglio Work:
-creare un pulsante, associargli la macro EditAnagr
Modalita’ d’ uso:
sul foglio Work, introdurre in A2 il codice da elaborare; introdurre su E2:H2 le eventuali modifiche, salvarle con la macro attivata dal pulsante.
E’ stato molto piu’ semplice farlo che scriverlo…. Ovviamente va provato dopo aver fatto 2 copie di backup dell’ anagrafica.
Facci sapere se rispecchia i bisogni; se SI puoi “lavorare” su Work, ad esempio per proteggere tutte le celle eccetto quelle dell’ area “Modifiche” e “Codice” e altri lavori di presentazione.
Ciao,