Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Importa dati e flagga presenza allegato

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Importa dati e flagga presenza allegato

Postdi BG66 » 07/08/22 21:05

Ciao a tutti.
Partiamo da quello che pensavo di saper fare :oops:
In pratica nel foglio di lavoro "Scheda Lavoratore" vorrei riportare alcuni dati presenti in "Sheet" legati al nome del lavoratore selezionato in C6
Lo script che non funziona:
Codice: Seleziona tutto
Option Explicit
Sub selez() 'seleziona da Anagrafica
Dim UP As String, RA As String, r As Long, uRG As Long, I As Long
Dim Sh As Worksheet, sh1 As Worksheet
    Set Sh = Worksheets("Scheda Lavoratore")
    Set sh1 = Worksheets("Sheet")
    UP = Cells(6, 3) 'assume C6
    'cerca in Sheet col. A - B - F - G - H - I - J - L
    uRG = sh1.Cells(Rows.Count, 1).End(xlUp).Row
    With Sh
        .Range("c12:h40").ClearContents
        r = 12
        For I = 2 To uRG
            If UP = sh1.Cells(I, 6) Then 'And RA = sh1.Cells(I, 6) Then 'And sh1.Cells(i, 7) <> "NO"
                .Cells(r, 3) = sh1.Cells(I, 1) 'Tipo documento
                .Cells(r, 4) = sh1.Cells(I, 2) 'Descrizione tipo documento
                .Cells(r, 5) = sh1.Cells(I, 6) 'data Inizio
                .Cells(r, 6) = sh1.Cells(I, 8) 'data Scadenza
                .Cells(r, 7) = sh1.Cells(I, 12) 'Durata
                               
                r = r + 1
            End If
        Next I
    End With
End Sub


Mentre sicuramente avrei chiesto aiuto per questo passaggio.
In pratica se in "sheet" la cella riferita al nome NON è vuota vorrei mettere un visto o una lettera per rendere evidente che vi è associato un allegato.
Lo schema sarebbe il seguente:
In "sheet" colonna ALLEGATO non è vuota scrivo o flaggo la colonna H in "Scheda Lavoratore"
In "sheet" colonna ALLEGATO 1 non è vuota scrivo o flaggo la colonna I in "Scheda Lavoratore"
In "sheet" colonna ALLEGATO 2 non è vuota scrivo o flaggo la colonna J in "Scheda Lavoratore"

https://www.dropbox.com/scl/fi/ub56gu7v3im1fcultqpf4/DBoard-Corsi-VForum.xlsm?dl=0&rlkey=lhgm2hbpbczwlqyl8c4glbdh4

Dato atteso selezionando Baudo Pippo:
https://wtf.roflcopter.fr/pics/5SeuUQZg/jO5vk5Lj?t

Grazie in anticipo per l'aiuto.
Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 305
Iscritto il: 20/08/16 07:44

Sponsor
 

Re: Importa dati e flagga presenza allegato

Postdi Marius44 » 08/08/22 06:32

Ciao Gene
(ma ferie niente ....?)

La variabile UP contiene il nome da cercare. Pertanto non puoi riferirla alla col.6 ma alla col.13
Poi puoi mettere tutte le condizioni che vuoi.

Ciao,
Mario
Marius44
Utente Senior
 
Post: 582
Iscritto il: 07/09/15 22:00

Re: Importa dati e flagga presenza allegato

Postdi Marius44 » 08/08/22 06:57

Ciao
Vedi se va bene questo codice
Codice: Seleziona tutto
Option Explicit
Sub selez() 'seleziona da Anagrafica
Dim UP As String, RA As String, r As Long, uRG As Long, I As Long
Dim Sh As Worksheet, sh1 As Worksheet
    Set Sh = Worksheets("Scheda Lavoratore")
    Set sh1 = Worksheets("Sheet")
    UP = Cells(6, 3) 'assume C6
    'cerca in Sheet col. A - B - F - G - H - I - J - L
    uRG = sh1.Cells(Rows.Count, 1).End(xlUp).Row
    With Sh
        .Range("c12:j40").ClearContents
        r = 12
        For I = 2 To uRG
            If UP = sh1.Cells(I, 13) Then 'And RA = sh1.Cells(I, 6) Then 'And sh1.Cells(i, 7) <> "NO"
                .Cells(r, 3) = sh1.Cells(I, 1) 'Tipo documento
                .Cells(r, 4) = sh1.Cells(I, 2) 'Descrizione tipo documento
                .Cells(r, 5) = sh1.Cells(I, 6) 'data Inizio
                .Cells(r, 6) = sh1.Cells(I, 8) 'data Scadenza
                .Cells(r, 7) = sh1.Cells(I, 12) 'Durata
                If sh1.Cells(I, 9) <> "" Then .Cells(r, 8) = "P"
                If sh1.Cells(I, 7) = "" Then .Cells(r, 9) = "-"
                If sh1.Cells(I, 10) = "" Then .Cells(r, 10) = "-"
                '.Cells(r, 6) = sh1.Cells(I, 4) 'Allegato
                '.Cells(r, 6) = sh1.Cells(I, 4) 'Allegato 1
                '.Cells(r, 6) = sh1.Cells(I, 4) 'Allegato 2
               
                r = r + 1
            End If
        Next I
    End With
End Sub


Ciao,
Mario

PS - Io legherei il codice alla variazione della cella C6
Marius44
Utente Senior
 
Post: 582
Iscritto il: 07/09/15 22:00

Re: Importa dati e flagga presenza allegato

Postdi BG66 » 08/08/22 08:26

Ciao Mario,
mi conosci anche e soprattutto in ferie provo a rallentare il cervello ma senza fermarlo :lol:
... anche perchè con i 20 °C notturni il pericolo c'è!!

Ovviamente il tuo script funziona mentre non ho capito il suggerimento:
Marius44 ha scritto:PS - Io legherei il codice alla variazione della cella C6


Io pensavo solo di far svuotare C6 in fase di chiusura del file mettendo in ThisWorkbook:
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("Scheda Lavoratore").Range("C6") = ""
ThisWorkbook.Save
End Sub


Un caro saluto
Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 305
Iscritto il: 20/08/16 07:44

Re: Importa dati e flagga presenza allegato

Postdi Marius44 » 08/08/22 15:10

Ciao Gene
Prova a valutare l'opportunità di utilizzare l'evento Worksheet_SelectionChange del Foglio "SchedaLvoratore" relativamente alla cella C6.
In uscita va bene (credo) il tuo script

Ciao,
Mario

PS - Pensa che qui da me neanche di notte il termometro scende sotto i 25/27 gradi
Marius44
Utente Senior
 
Post: 582
Iscritto il: 07/09/15 22:00

Re: Importa dati e flagga presenza allegato

Postdi Marius44 » 08/08/22 15:36

Volevo dire ... WorkSheet_Change relativamente alla cella C6
Scusa,. Ciao,
Mario
Marius44
Utente Senior
 
Post: 582
Iscritto il: 07/09/15 22:00

Re: Importa dati e flagga presenza allegato

Postdi BG66 » 09/08/22 06:42

Ciao Mario,
ho provato cosi:
Codice: Seleziona tutto
Sub worksheet_change(ByVal target As Range)
Set target = Range("c6")
    If target.Value = "" Then
    Worksheets("Scheda Lavoratore").Range("c12:j40").ClearContents
    End If
End Sub

Ma si inchioda tutto

Attendo tue su cosa sto sbagliando.

Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 305
Iscritto il: 20/08/16 07:44

Re: Importa dati e flagga presenza allegato

Postdi Anthony47 » 09/08/22 09:55

Per questo dovrei essere capace anche io :D :D
-tasto dx sul tab col nome "Scheda Lavoratore";
-scegli Visualizza codice;
-copia il seguente codice e lo incolli sulla pagina vba così aperta:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$6" Then
    Application.EnableEvents = False
    Call selez
    Application.EnableEvents = True
End If
End Sub

Prova...
Avatar utente
Anthony47
Moderatore
 
Post: 18334
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Importa dati e flagga presenza allegato

Postdi BG66 » 10/08/22 05:43

Ciao Anthony,
il tuo script toglie il tasto specifico.... ma mi lascia la curiosità intellettuale di sapere cosa scrivere per pulire i dati presenti nel modulo (Range("c12:j40").ClearContents) quando faccio CANC sul nominativo nella cella C6 :undecided:

Mentre della serie ANCHE A DUPLICARE NON SONO PIU' CAPACE :evil: :
Ho creato una nuova scheda [Diario Corsi] dove in C6 inserisco il codice del TIPO documento ma non visualizzo nessun dato!!

Grazie per la.... rassegnazione nel seminare al vento....con il sottoscritto.

Gene

https://www.dropbox.com/scl/fi/bvv8tsl629fjn1hjvsyqz/DBoard-Corsi-VForum01.xlsm?dl=0&rlkey=ks1ob3re5u892r0df1t3uagqg
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 305
Iscritto il: 20/08/16 07:44

Re: Importa dati e flagga presenza allegato

Postdi Anthony47 » 11/08/22 12:20

il tuo script toglie il tasto specifico....
Non capisco cosa intenda; certamente quel metodo rende inutile il tasto "CARICA DATI" perche' la procedura parte tutte le volte che modifichi C6

ma mi lascia la curiosità intellettuale di sapere cosa scrivere per pulire i dati presenti nel modulo (Range("c12:j40").ClearContents) quando faccio CANC sul nominativo nella cella C6
Se la Sub Selez non gestisce correttamente l'eventuale C6 vuoto allora aggiungiamo un If /End If alla procedura, che diventa:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$6" Then
    Application.EnableEvents = False
    If Target.Value <> "" Then
        Call selez
    Else
        Range("C12:J40").ClearContents
    End If
    Application.EnableEvents = True
End If
End Sub


Ho creato una nuova scheda [Diario Corsi] dove in C6 inserisco il codice del TIPO documento ma non visualizzo nessun dato!!
Su foglio "Diario Corsi" c'e' un pulsante che richiama la Sub selezCorsi.
Immagino che vorresti che anche in questo caso vorresti che, quando modifichi C6 su foglio "Diario Corsi", la sub parta in automatico.
Per questo devi mettere anche nel modulo vba del foglio "Diario Corsi" una Sub Worksheet_Change SIMILE alla precedente, che pero' conterra' la riga Call selezCorsi (invece che Call selez)
La procedura e' sempre quella del Tasto dx /Visualizza codice

MA ATTENZIONE: poiche nell'ultimo file allegato hai avuto la brillante idea di unire C6-D6, nel codice tutti i riferimenti "Target" vanno ora sostituiti con "Target.Cells(1,1)"
Questa dizione e' compatibile sia con l'uso del solo C6 che del C6-D6

Grazie per la.... rassegnazione nel seminare al vento....con il sottoscritto
No, nessuno si e' (ancora) rassegnato, sappiamo che puoi fare di piu' se ti impegni :D :D
Avatar utente
Anthony47
Moderatore
 
Post: 18334
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Importa dati e flagga presenza allegato

Postdi BG66 » 12/08/22 06:22

Ciao Anthony,
chiarisco questo punto:
Ho creato una nuova scheda [Diario Corsi] dove in C6 inserisco il codice del TIPO documento ma non visualizzo nessun dato!!

Su foglio "Diario Corsi" c'e' un pulsante che richiama la Sub selezCorsi.
Immagino che vorresti che anche in questo caso vorresti che, quando modifichi C6 su foglio "Diario Corsi", la sub parta in automatico......etc

No. Volevo solo un aiuto perchè in pratica in questa nuova scheda vorrei elencare tutti gli operatori che hanno seguito il corso selezionato in C6 ma modificando lo script di Mario commetto un errore con il risultato che non visualizza un bel niente!!

Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 305
Iscritto il: 20/08/16 07:44

Re: Importa dati e flagga presenza allegato

Postdi BG66 » 12/08/22 07:45

[RISOLTO]
Ciao Anthony.
Trovato inghippo.

Tutto risolto.

Grazie a tutti e alla prossima
Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 305
Iscritto il: 20/08/16 07:44

Re: Importa dati e flagga presenza allegato

Postdi Marius44 » 12/08/22 08:15

Ciao
Sei stato troppo veloce (ovvero io mi sono alzato tardi ....)
Prova con questaq macro da inserire nel Modulo del Foglio("DiarioCorsi")
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$C$6")) Is Nothing Then
  If Target = "" Then
    Range("C12:J40").ClearContents
  Else
    With Sheets("Sheet")
      ur = .Cells(Rows.Count, 1).End(xlUp).Row
      If ur = 1 Then Exit Sub
      Range("C12:J40").ClearContents
      rg = 12
      For I = 2 To ur
        If .Cells(I, 1).Value = Target Then
          dip = .Cells(I, 13).Value
          If dip <> "" Then
            ini = .Cells(I, 6).Value
            fin = .Cells(I, 8).Value
            Cells(rg, 4) = dip
            Cells(rg, 5) = ini
            Cells(rg, 6) = fin
            riga = Application.WorksheetFunction.Match(dip, Sheets("AnagraficaFull").Range("G3:G8"), 0)
            Cells(rg, 3) = Sheets("AnagraficaFull").Range("F" & riga + 2)
            If .Cells(I, 9) <> "" Then Cells(rg, 8) = "P"
            dip = ""
            ini = ""
            fin = ""
            rg = rg + 1
          End If
        End If
      Next I
    End With
  End If
End If
End Sub


Funziona senza toccare il pulsante.
Ovviamente lascio a te il compito delle dichiarazioni e quant'altro.
Ciao,
Mario
Marius44
Utente Senior
 
Post: 582
Iscritto il: 07/09/15 22:00

Re: Importa dati e flagga presenza allegato

Postdi Anthony47 » 12/08/22 09:17

Mi sono svegliato anche io :D , caffè per tutti?
Avatar utente
Anthony47
Moderatore
 
Post: 18334
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Importa dati e flagga presenza allegato":


Chi c’è in linea

Visitano il forum: Bing [Bot] e 9 ospiti

cron