Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

Condizione IF con vba

  • Messaggi
  • OFFLINE
    Massimo CP
    Post: 1
    Registrato il: 07/02/2016
    Utente Junior
    2013
    00 07/12/2020 16:27
    Buongiorno a tutti,
    per cortesia avrei necessità di un vostro aiuto in quanto non non riesco a fare ciò che avrei bisogno
    il file in allegato è per la giacenza di prodotti.
    ho provato a creare un codice che al momento dellla modifica di una cella, la colonna H, automaticamente dovrebbe aggiornare altre colonne,
    Vorrei che inserendo un valore da 1 a 6 nella colonna H , e se nella colonna N è resina dovrebbe inserire in automatico nella colonna J la parola "depositare"

    Perchè mi rallenta molto di ciclo vba?? inoltre l'immagine in allegato ogni volta che salvo mi appare..è normale??
    Grazie a tutti..
    Massimo
    [Modificato da by sal 10/12/2020 17:58]
  • OFFLINE
    rollis13
    Post: 1.039
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 07/12/2020 17:41
    Per l'ultima e penultima domanda dovresti risolvere entrambe applicando entrambe le risposte fornite in questa discussione: https://microsoft.public.it.office.excel.narkive.com/hEqvVLKa/calcolo-incompleto-ricalcolare-prima-di-salvare

    La prima riguardante la funzione "Application.EnableEvents" è necessaria nelle tue due macro altrimenti farai fare dei cicli inutili ad ogni modifica.
    La seconda non credo sia risolutiva dato che l'errore lo da anche nel mio Excel che è aggiornato. Questo problema potrebbe dipendere da tutte quelle convalide (incomplete) che hai inserito nelle celle (se funzionano).

    Sistemato quanto sopra poi potrai dedicare più tempo l'ulteriore If/Then necessario.
    [Modificato da rollis13 07/12/2020 17:43]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    tanimon
    Post: 1.366
    Registrato il: 27/06/2011
    Utente Veteran
    excel 2007
    00 07/12/2020 17:42
    Ciao,
    rimuovi le connessioni dati o verificane le propietà

    rispondo solo per il quesito posto, e pertanto ho eliminato
    l'altro codice sugli eventi del foglio.

    gurda l'allegato.

    ciao
    Frank
    vb
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim ur As Long, cella As Range
    ur = Cells(Rows.Count, "n").End(xlUp).Row
    If Not Intersect(Target, Range("h2:h10")) Is Nothing Then
        For Each cella In Worksheets("Deposito GOMME").Range("n2:n" & ur)
            If cella.Value = "Resina" Then
                Cells(cella.Row, "j").Value = "depositare"
            End If
        Next cella
    End If
    
            
        
    
    End Sub


    [Modificato da by sal 10/12/2020 17:58]







    Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
    Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
  • OFFLINE
    Massimo CP
    Post: 1
    Registrato il: 07/02/2016
    Utente Junior
    2013
    00 07/12/2020 18:00
    Re:
    tanimon, 07/12/2020 17:42:

    Ciao,
    rimuovi le connessioni dati o verificane le propietà

    rispondo solo per il quesito posto, e pertanto ho eliminato
    l'altro codice sugli eventi del foglio.

    gurda l'allegato.

    ciao
    Frank
    vb
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim ur As Long, cella As Range
    ur = Cells(Rows.Count, "n").End(xlUp).Row
    If Not Intersect(Target, Range("h2:h10")) Is Nothing Then
        For Each cella In Worksheets("Deposito GOMME").Range("n2:n" & ur)
            If cella.Value = "Resina" Then
                Cells(cella.Row, "j").Value = "depositare"
            End If
        Next cella
    End If
    
            
        
    
    End Sub






    Grazie mille
    funziona ma servirebbe una modifica
    se nella colonna H inserisco "montate inv" e se nella colonna N è presente "resina" allora mi deve inserire nella colonna J "depositare"

    Grazie ancora


  • OFFLINE
    tanimon
    Post: 1.367
    Registrato il: 27/06/2011
    Utente Veteran
    excel 2007
    00 07/12/2020 18:09
    Re: Re:
    Massimo CP, 07/12/2020 18:00:




    Grazie mille
    funziona ma servirebbe una modifica
    se nella colonna H inserisco "montate inv" e se nella colonna N è presente "resina" allora mi deve inserire nella colonna J "depositare"

    Grazie ancora





    ciao
    puoi usare
    vb
    target.value


    con un if Then, prima del for Each, tagliando ed incollando il codice sull'evento Worksheet_Change.

    EDIT:
    Ma forse è meglio lasciarlo sul Worksheet_SelectionChange


    N.B.
    "Resina" è diverso da "resina"

    prova, sono certo che ce la puoi fare

    ciao
    Frank
    [Modificato da tanimon 07/12/2020 18:19]







    Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
    Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
  • OFFLINE
    Massimo CP
    Post: 2
    Registrato il: 07/02/2016
    Utente Junior
    2013
    00 07/12/2020 18:20
    Re: Re: Re:
    tanimon, 07/12/2020 18:09:



    ciao
    puoi usare
    vb
    target.value


    con un if Then, prima del for Each, tagliando ed incollando il codice sull'evento Worksheet_Change

    N.B.
    "Resina" è diverso da "resina"

    prova, sono certo che ce la puoi fare

    ciao
    Frank




    ci ho provato:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim ur As Long, cella As Range
    ur = Cells(Rows.Count, "n").End(xlUp).Row
    If Not Intersect(Target, Range("h2:h1900")) Is Nothing Then
    If Target.Value Then ' prova
    For Each cella In Worksheets("Deposito GOMME").Range("n2:n" & ur)
    If cella.Value = "Resina" Then
    Cells(cella.Row, "j").Value = "depositare"
    End If
    Next cella
    End If



    End If
    End Sub


    OVVIAMENTE non funziona!
  • OFFLINE
    tanimon
    Post: 1.368
    Registrato il: 27/06/2011
    Utente Veteran
    excel 2007
    00 07/12/2020 18:31
    Re: Re: Re: Re:
    Massimo CP, 07/12/2020 18:20:




    ci ho provato:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim ur As Long, cella As Range
    ur = Cells(Rows.Count, "n").End(xlUp).Row
    If Not Intersect(Target, Range("h2:h1900")) Is Nothing Then
    If Target.Value Then ' prova
    For Each cella In Worksheets("Deposito GOMME").Range("n2:n" & ur)
    If cella.Value = "Resina" Then
    Cells(cella.Row, "j").Value = "depositare"
    End If
    Next cella
    End If



    End If
    End Sub

    OVVIAMENTE non funziona!



    correggi
    vb
    If Target.Value Then


    con questa
    vb
    If Target.Value = "MONTATE INV" Then










    Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
    Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
  • OFFLINE
    Massimo CP
    Post: 3
    Registrato il: 07/02/2016
    Utente Junior
    2013
    00 07/12/2020 19:12
    Re: Re: Re: Re: Re:
    tanimon, 07/12/2020 18:31:



    correggi
    vb
    If Target.Value Then


    con questa
    vb
    If Target.Value = "MONTATE INV" Then







    Con questa modifica funziona..La colonna J ovviamente si popola con la dicitura "depositare"
    La voce depositare una volta che si va depositare in magazzino viene cancellata.
    Ma con questo codice la riscrive
    Grazie ancora per la tua pazienza

  • OFFLINE
    by sal
    Post: 6.179
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 10/12/2020 18:00
    Ciao Massimo anche qui ho eliminato l'allegato per lo stesso motivo

    Ciao By Sal (8-D
    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    darionardella
    Post: 26
    Registrato il: 18/10/2016
    Città: COSENZA
    Età: 65
    Utente Junior
    Excel 2007
    00 14/12/2020 14:54
    Vba If e calcolo automatico
    Buongiorno,

    il messaggio compare perchè tutti i calcoli previsti non sono stati effettuati.
    Sicuramente è disabilitato il calcolo automatico.
    Se ci sono formule sul foglio, e sono tante, l'aggiornamento di una cella coinvolta nelle formule può rallentare molto l'elaborazione.
    Se gestisci i calcoli da VBA allora sarebbe preferibile eliinare del tutto le formule e aggiornare tutto da VBA.
    Allega il file usato e possiamo essere più precisi.

    Dario
  • OFFLINE
    Massimo CP
    Post: 13
    Registrato il: 07/02/2016
    Utente Junior
    2013
    00 14/12/2020 15:09
    Re: Vba If e calcolo automatico
    darionardella, 14/12/2020 14:54:

    Buongiorno,

    il messaggio compare perchè tutti i calcoli previsti non sono stati effettuati.
    Sicuramente è disabilitato il calcolo automatico.
    Se ci sono formule sul foglio, e sono tante, l'aggiornamento di una cella coinvolta nelle formule può rallentare molto l'elaborazione.
    Se gestisci i calcoli da VBA allora sarebbe preferibile eliinare del tutto le formule e aggiornare tutto da VBA.
    Allega il file usato e possiamo essere più precisi.

    Dario



    Grazie mille Dario
    Ho risolto, ovvero non appare più il messaggio, passando da excel 2013 a excel 2016

    E comunque hai ragione che l'elaborazione è molto lenta.
    Grazie Ancora
    Massimo