collegare dati tra colonne di diversi fogli in modo reciproco.

Anonimo
2024-05-03T09:43:23+00:00

Buongiorno,

ho un problema di cui non riesco a venirne a capo e online non trovo nulla a riguardo, quindi confido in voi!

ho due fogli di cui mi interesserebbe "collegare" tra loro due colonne, di queste colonne le celle in esse contenute devono avere lo stesso dato presente in un menu a cascata, e indipendentemente dal foglio in cui lavoro, cambiando il dato, venga riportato sull'altro foglio.

Per intenderci: la cella in K3 ha dato "IN ELABORAZIONE", è nella colonna "STATO", del foglio "ATTIVE"; nel foglio "ARCHIVIO" vorrei ci fosse una colonna paritetica al foglio "ATTIVE", che però per esigenza posiziono nella colonna "S", di cui andando a cambiare un dato mi cambi contemporaneamente anche quella nel foglio "ATTIVE", pariteticamente nel caso volessi cambiare dato nel foglio "ATTIVE" me lo cambi anche nel foglio "ARCHIVIO". I dati di queste celle sono contenuti in menu a tendina (non so se cambi qualcosa per la risoluzione).

Vi ringrazio anticipatamente!

Microsoft 365 e Office | Excel | Per il lavoro | 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

Risposta accettata dall'autore della domanda

Anonimo
2024-05-08T12:25:56+00:00

Ciao prova a scaricare questo file: File Esempio modificato

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2024-05-06T14:51:19+00:00

Ciao,

nel modulo del foglio "ATTIVE" elimina il codice legato all'evento change.

Nel modulo della cartella di lavoro sostituisci il precedente codice con il seguente:

Option Explicit 

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 

   Dim rngSTATO As Range 

   Dim r As Range 

   Dim sColSTATO As String 

   Dim wsDest As String 

   Dim sColDest As String 

   Application.EnableEvents = False 

   Select Case Sh.Name 

      Case "ATTIVE" 

         sColSTATO = "K" 

         wsDest = "ARCHIVIO" 

         sColDest = "S" 

      Case "ARCHIVIO" 

         sColSTATO = "S" 

         wsDest = "ATTIVE" 

         sColDest = "K" 

   End Select 

   Set rngSTATO = Intersect(Sh.UsedRange, Sh.Columns(sColSTATO)) 

   For Each r In Target 

      If r.Row > 2 Then 

         If Not Intersect(r, rngSTATO) Is Nothing Then 

            Worksheets(wsDest).Range(sColDest & r.Row) = r.Value 

            If Sh.Name = "ATTIVE" Then 

               If UCase(r.Value) = "CONCLUSA" Then 

                  With r 

                     .EntireRow.Hidden = True 

                     .Offset(1).Activate 

                  End With 

               End If 

            End If 

            If Sh.Name = "ARCHIVIO" Then 

               With Worksheets(wsDest).Rows(r.Row).EntireRow 

                  If UCase(r.Value) <> "CONCLUSA" Then 

                     .Hidden = False 

                  Else 

                     .Hidden = True 

                  End If 

               End With 

            End If 

         End If 

      End If 

   Next r 

   Application.EnableEvents = True 

End Sub 

In questo modo se il foglio attivo è "ATTIVE" e inserisci "CONCLUSA", oltre a compilare il foglio "ARCHIVIO" con il medesimo valore, la riga viene nascosta.

Se compili il foglio "ARCHIVIO" oltre a venir compilato il foglio "ATTIVE", la riga viene nascosta o visualizzata a seconda che il contenuto sia uguale a "CONCLUSA" o, per scoprire le righe, sia inserito un qualsiasi altro valore diverso da "CONCLUSA".

Ciao

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2024-05-03T15:15:18+00:00

Ciao,

sarebbe preferibile avere il file ma proviamo così.

Nel modulo della cartella di lavoro (nel progetto VBA "Questa cartella di lavoro" inserisci questo codice:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 

   Dim rngSTATO As Range 

   Dim r As Range 

   Dim sColSTATO As String 

   Dim wsDest As String 

   Dim sColDest As String 

   Application.EnableEvents = False 

   Select Case Sh.Name 

      Case "ATTIVE" 

         sColSTATO = "K" 

         wsDest = "ARCHIVIO" 

         sColDest = "S" 

      Case "ARCHIVIO" 

         sColSTATO = "S" 

         wsDest = "ATTIVE" 

         sColDest = "K" 

   End Select 

   Set rngSTATO = Intersect(Sh.UsedRange, Sh.Columns(sColSTATO)) 

   For Each r In Target 

      If r.Row > 2 Then 

         If Not Intersect(r, rngSTATO) Is Nothing Then 

            Worksheets(wsDest).Range(sColDest & r.Row) = r.Value 

         End If 

      End If 

   Next r 

   Application.EnableEvents = True 

End Sub 

Qui trovi un file di esempio dove potresti fare qualche test per capire se è quello che potrebbe fare al caso tuo (magari copiando i dati dal tuo file originario)

File esempio

ciao

La risposta è stata utile?

0 commenti Nessun commento

6 risposte aggiuntive

Ordina per: Più utili
  1. Eleuterio Tedeschi 18,590 Punti di reputazione Moderatore volontario
    2024-05-03T09:53:53+00:00

    sopra riportati avete i due fogli: il primo "ATTIVE" in alto e sotto "ARCHIVIO"

    Gentilmente condividi il file, con le informazioni e le sole immagini è difficile darti una esauriente risposta.

    Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2024-05-03T09:45:27+00:00

    sopra riportati avete i due fogli: il primo "ATTIVE" in alto e sotto "ARCHIVIO"

    La risposta è stata utile?

    0 commenti Nessun commento