Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Convalida dati parte 2

Ultimo Aggiornamento: 22/11/2019 15:54
Post: 64
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
21/11/2019 15:46

Buongiorno a tutti,
nella mia precedente discussione, discussione avente per nome "Convalida dati",grazie al prezioso aiuto di Dodo, riuscii a venire a capo del seguente problema:
"Buon pomeriggio a tutti, sono alle prese con un quesito "strano", fino ad ora le macro che creavo rispondevano alle mie esigenze. Ma in un foglio di lavoro (foglio4) ho un intervallo di celle (e37:e39)
che ho associato a un elenco con il convalida dati. l'origine dei dati e' in altro foglio Foglio1!$AC1:$AC17.
Praticamente e' una lista di importi unitari per redigere una fattura. Senza usare la macro se nella cella e37
inserisco manualmente un valore non presente nell'intervallo (Foglio1!$AC1:$AC17) l'errore avviso da me creato e':
valore non presente in tabella, continuare ? Se volessi confermare io vorrei che tale valore va ad aggiungersi
all'intervallo sopramenzionato, ma ovviamente non lo fa."
-------------
Grazie a Dodo mi risolse il problema inserendo:
creato nome "mElenco" con formula:
=SCARTO(Foglio1!$AC$1;0;0;CONTA.VALORI(Foglio1!$AC:$AC))
vedi menu Formule > Gestione nomi.
e poi nell'evento
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Domanda As String
If Target.Cells.Count > 1 Then Exit Sub
If Sh.Name <> "Foglio1" And Sh.Name <> "Foglio3" And _
Sh.Name <> "Foglio_inizio" And Sh.Name <> "Foglio_start_riep" Then
If Not Intersect(Target, Range("$f$37:$f$39")) Is Nothing Then
If IsEmpty(Target) Then Exit Sub
If WorksheetFunction.CountIf(Range("mElenco"), Target) = 0 Then
Domanda = MsgBox("Aggiungi " & Target & " alla lista ?", vbYesNo + vbQuestion)
If Domanda = vbYes Then
Range("mElenco").Cells(Range("mElenco").Rows.Count + 1, 1) = Target
Call Macro_riordina_convalidadati '(riordina tutti i valori in ordine crescente)
Else
Range(Target.Address) = ""
Range(Target.Address).Select
End If
End If
End If
End If
End Sub

Per PIACERE vi chiedo: devo creare un convalida dati identico nello stesso foglio ma nell'intervallo d37:d39;
nello stesso foglio Foglio_start_riep
-al posto di "mElenco" creo in Formule > Gestione nomi "dElenco";
-il range non e' piu Range("$f$37:$f$39") ma un nuovo Range("$D$37:$D$39")
-origine: non piu' =SCARTO(Foglio1!$AC$1;0;0;CONTA.VALORI(Foglio1!$AC:$AC)) ma
=SCARTO(Foglio1!$AE$1;0;0;CONTA.VALORI(Foglio1!$AE:$AE))
in Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
cosa viene aggiunto a completamento e DOVE si deve aggiungere per avere contemporaneamente le due situazioni (mElenco e dElenco) funzionanti contemporaneamente.
GRAZIE MILLE.
SAVERIO
Post: 2.438
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
21/11/2019 16:16

ciao
prova:

If Not Intersect(Target, Range("$f$37:$f$39,$D$37:$D$39")) Is Nothing Then

saluti



Domenico
Win 10 - Excel 2016
Post: 64
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
21/11/2019 16:39

Grazie mille Dodo.
Provo cio che mi hai inviato e ti aggiorno.
ciao saverio
Post: 65
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
21/11/2019 16:51

Ciao dodo
ho provato ma mi da errore di sintassi e
If Not Intersect(Target, Range("$f$37:$f$39,$D$37:$D$39")) Is Nothing Then lo colora di rosso.
ma no devo anche effettuare una "if" sul nuovo dElenco?
es- If WorksheetFunction.CountIf(Range("dElenco"), Target) = 0 ecc.ecc.
Post: 2.439
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
21/11/2019 17:13

ciao
si, scusa, ma senza file di test....

prova...l'unico dubbio è che fa la macro riordina
saluti
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Domanda As String
If Target.Cells.Count > 1 Then Exit Sub
If Sh.Name <> "Foglio1" And Sh.Name <> "Foglio3" And _
Sh.Name <> "Foglio_inizio" And Sh.Name <> "Foglio_start_riep" Then
    If Not Intersect(Target, Range("$f$37:$f$39")) Is Nothing Then
        If IsEmpty(Target) Then Exit Sub
        If WorksheetFunction.CountIf(Range("mElenco"), Target) = 0 Then
            Domanda = MsgBox("Aggiungi " & Target & " alla lista ?", vbYesNo + vbQuestion)
            If Domanda = vbYes Then
                Range("mElenco").Cells(Range("mElenco").Rows.Count + 1, 1) = Target
                Call Macro_riordina_convalidadati '(riordina tutti i valori in ordine crescente)
            Else
                Range(Target.Address) = ""
                Range(Target.Address).Select
            End If
        End If
    End If
    If Not Intersect(Target, Range("$D$37:$D$39")) Is Nothing Then
        If IsEmpty(Target) Then Exit Sub
        If WorksheetFunction.CountIf(Range("dElenco"), Target) = 0 Then
            Domanda = MsgBox("Aggiungi " & Target & " alla lista ?", vbYesNo + vbQuestion)
            If Domanda = vbYes Then
                Range("dElenco").Cells(Range("dElenco").Rows.Count + 1, 1) = Target
                Call Macro_riordina_convalidadati '(riordina tutti i valori in ordine crescente)
            Else
                Range(Target.Address) = ""
                Range(Target.Address).Select
            End If
        End If
    End If
    
End If
End Sub





[Modificato da dodo47 21/11/2019 17:14]
Domenico
Win 10 - Excel 2016
Post: 66
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
21/11/2019 18:18

Grazie mille.
lo provo in serata e ti aggiorno
ciAo SAVERIO
Post: 67
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
22/11/2019 15:54

Buon pomeriggio a tutti,
GRAZIE DODO, Tutto perfetto funziona a meraviglia.
Grazie e mille e ….a buon rendere.
saverio
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
convalida dati (15 messaggi, agg.: 15/10/2020 09:16)
Convalida dati (6 messaggi, agg.: 23/01/2021 13:00)
Convalida Dati (10 messaggi, agg.: 01/02/2017 10:12)
convalida dati no lettere minuscole (8 messaggi, agg.: 23/04/2017 09:41)
convalida dati o cercavert (9 messaggi, agg.: 09/09/2017 12:53)
convalida dati (5 messaggi, agg.: 08/10/2017 13:28)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 08:00. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com