Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Ciao a tutti, ho un problema riguardante il collegamento di una colonna con un'altra.. e fin qui sembra una cavolata, ma in realtà mi sta facendo uscire matto. Allora mi spiego meglio, ho bisogno di creare questo file che mi permette di copiare delle colonne presenti in un altro foglio presente in uno sharepoint aziendale (di cui non dispongo dell'accesso, per questo ho bisogno di crearne un altro per la modifica). E fin qui tutto ok, nulla di più semplice. Il problema è che ho bisogno di aggiungere un'altra colonna affianco alle altre ( come vedete in foto) con una convalida dati ad elenco, ma essa, quando nel file viene aggiunta una riga in mezzo oppure cancellata, la riga presente nella colonna etichette non segue l'ordine oppure non viene cancellata.. mi sta facendo uscire matto. Sapete aiutarmi in qualche modo?
Ciao, intanto grazie per la risposta. Per quanto allegare il file, preferirei di no in quanto è presente in un server aziendale appunto. Mi spiego meglio, quando modificano il file originale inserendo qualche riga in mezzo oppure la cancellano, la colonna etichette con la convalida, non segue l'ordine.
Ad esempio, se io eliminassi la riga dove è presente OV24-06968/10, il flag FATTO non scompare.
I dati vengono esclusivamente importati copiando le colonne del file originale. L'unica modifica che io debba fare è soltanto aggiornare la colonna etichette mettendo FATTO oppure DA CREARE, TEORICA, DA CONTROLLARE.
Il problema è che se io copiassi le colonne, poi esse si aggiornano sempre col file originale.. e starei sempre da punto accapo.. forse il VBA è la soluzione migliore, ma non saprei proprio come fare.
Grazie a @gianfranco per la "nomination" e mi scuso per il ritardo ma leggo solo adesso.
Cosa intendi quando dici: se io eliminassi la riga dove è presente OV24-06968/10, il flag FATTO non scompare. Se "elimini" la riga tutto ciò che sta nella riga deve scomparire.
Ma forse ho bisogno di capire meglio. Se non ho capito male, "importi" i nuovi dati dal server (immagino col copia/incolla) nel tuo "precedente" file. Se così fosse non c'è nulla che colleghi quanto già scritto nella colonna delle etichette coi nuovi dati. Le etichette solo solo scelte per "quella cella".
Tu vorresti, invece, che quando copi/incolli i nuovi dati quelle precedenti rimangano collegati alle etichette. Direi che con formula non è possibile risulta alquanto difficile anche con VBA. Visto che i nuovi dati vengono sovrascritti ai precedenti bisognerebbe eseguire tutto con VBA in questo modo: Copio i dati nuovi, assegno ad una matrice i nuovi dati OV, con un ciclo controllo ogni valore della matrice col file precedente e se trovo concordanza metto "il dato" (non la convalida) precedente mentre se non trovo concordanza inserisco la convalida (in modo da poter scegliere successivamente). Se quanto sopra risponde alla tue esigenze, si può fare ma non è certo una passeggiata in special modo per uno che afferma "forse il VBA è la soluzione migliore, ma non saprei proprio come fare".
Si esattamente, mi rendo conto che non è una passeggiata.. proprio per questo ne sto uscendo matto. Mi spiego meglio, io debbo associare alla cella OV un flag con la convalida (fatto, teorica etc.) e che lo seguisse in tutta la colonna. Questo perché chi modifica il file originale, fa continui aggiornamenti.. magari spostando gli OV a destra a sinistra o cancellando e mi sballa tutto l'ordine.
Ho elaborato il codice sottostante. Opportunamente adattato alle tue esigenze (nomi dei WorkBooks e dei Fogli) ed associato ad un pulsante (Modulo, non ActiveX) da inserire nel TUO foglio (per intenderci, il foglio dove devi incollare i dati) dovrebbe fare quanto chiedi.
Prova e fai sapere. Per facilitarti il compito allego Cartel1 (vecchio file) e Cartel2 (nuovo file). Se fai clic sul pulsante blu in Cartel2 vedrai che la colonna E viene popolata o col precedente dato (se presente) o con la convalida.
Option Explicit
Sub transfer()
Dim wb1 As Workbook, wb2 As Workbook
Dim ur1 As Long, ur2 As Long, i As Long, j As Long
Dim ov1(), ov2(), c1, c2
Application.ScreenUpdating = False
Set wb1 = Workbooks("Cartel1")
Set wb2 = Workbooks("Cartel2")
ur1 = wb1.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
ur2 = wb2.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ur1
ReDim Preserve ov1(2 To i)
ov1(i) = wb1.Sheets("Foglio1").Range("D" & i)
Next i
For i = 2 To ur2
ReDim Preserve ov2(2 To i)
ov2(i) = wb2.Sheets(1).Range("D" & i)
Next i
For i = LBound(ov1) To UBound(ov1)
For j = LBound(ov2) To UBound(ov2)
If ov1(i) = ov2(j) Then
wb2.Sheets(1).Range("E" & j) = wb1.Sheets("Foglio1").Range("E" & i)
Else
With wb2
.Activate
.Sheets(1).Range("E" & j).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="FATTO,DA CREARE,TEORICA,DA CONTROLLARE"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End With
End If
Next j
Next i
Application.ScreenUpdating = True
Set wb1 = Nothing
Set wb2 = Nothing
End Sub
Spero sia tutto chiaro. Se hai bisogno, siam qui. Ciao,
Ciao Marius, scusa il ritardo per la risposta. Allora ho provato il codice ma compare il seguente errore.. anche usando i tuoi file che hai allegato nel precedente messaggio.
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.
Google Fonts è un servizio per visualizzare gli stili dei caratteri di scrittura gestito da Google Ireland Limited e serve ad integrare tali contenuti all’interno delle proprie pagine.