Risultati da 1 a 5 di 5

Discussione: Copiare il valore di una cella in un'altra sulla base di un terzo valore "SI" di conferma



  1. #1
    L'avatar di dpg70
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Trebaseleghe (PD)
    Età
    47
    Messaggi
    60
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    13

    Copiare il valore di una cella in un'altra sulla base di un terzo valore "SI" di conferma

    Ho scritto un codice di Conferma_prezzo() nel foglio "Cantiere" del file che ora per dimensione non riesco ad allegare, vorrei migliorarlo anche in velocità.

    Questa macro controlla se nella colonna intestata con il nome CONFERMA esiste il valore SI o il NO, questo per ogni riga di appartenenza completata con dati.
    Se la conferma in AX10=SI, copio il valore della cella [PREZZO U.TA'] la copio in un'altra [PREZZO a mano] nella stessa riga di appartenenza.
    Se la conferma in AX10=NO, elimino l'eventuale valore già inserito nella cella [Prezzo a mano].
    Tecnicamente eseguo questo per evitare l'inserimento da tastiera nel [PREZZO a mano], nel file originale la coposizione del prezzo unitario finale nasce una serie di valori e nel campo [PREZZO di listino] questi valori cambiano ad ogni mio aggiornamento dell'elenco specifico, modificando così in modo non voluto, il valore confermato precedentemente.

    Mi sono accorto della lentezza del codice, dovuta all'attivazione di un Worksheet_SelectionChange. E' possibile disattivarlo nell'esecuzione del codice in questione, per poi attivarlo nuovamente?

    Codice: 
    Sub Conferma_prezzo()
    'macro per ricontrollare tutte le conferme dei dati inseriti fissando il prezzo
    Dim i As Long
    Dim Conferma, Ultima As Range
    Dim Col_Conferma As Range
    Dim Messaggio As Integer
    
    
    Messaggio = MsgBox("Stai procedendo al fissaggio di tutti i dati inseriti con Conferma!", vbOKCancel)
    If Messaggio = vbCancel Then
    Exit Sub
    End If
    
    
    i = Range("E" & Rows.Count).End(xlUp).Row
    Set Col_Conferma = Range("AX10:AX" & i)
    
    
    Application.ScreenUpdating = False
    
    
    Range("AX10").Select
    For Each Conferma In Col_Conferma
    If Not Intersect(Conferma, Col_Conferma) Is Nothing Then
         
        If Conferma = "SI" Then
           ActiveCell(1, -2).Select
           Selection.Copy
              
           ActiveCell(1, -2).Select
            'ActiveSheet.Paste:incolla valori e formati
            'mentre questa srittura solo i valori
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
           ActiveCell(2, 7).Select
           
        ElseIf Conferma = "NO" Then
               ActiveCell(1, -5).Select
                Selection.ClearContents
               ActiveCell(2, 7).Select
        End If
    End If
    Next
    
    
    Application.ScreenUpdating = True
    End Sub

  2. #2

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6747
    Versione Office
    2013
    Likes ricevuti
    711
    Likes dati
    162

    Re: Copiare il valore di una cella in un'altra sulla base di un terzo valore "SI" di conferma

    Ciao dpg70

    Non entro nel merito della tua macro ma non capisco il tuo riferimento a Worksheet_SelectionChange ed infatti nella tua macro non ve ne è traccia.

    Tale tipo di macro non va inserita in un modulo standard (come la tua macro) bensì nel modulo di codice del foglio interessato.

    Comunque forse è meglio se alleghi il tuo file senza dati sensibili

    Alfredo

  3. #3
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1098
    Versione Office
    2010
    Likes ricevuti
    141
    Likes dati
    1

    Re: Copiare il valore di una cella in un'altra sulla base di un terzo valore "SI" di conferma

    per disattivare Worksheet_SelectionChange basta definire un flag che se attivato fa un exit sub.
    Codice: 
    public flag
    Sub Conferma_prezzo()
    .......
    flag =1
    .......
    tuo codice
    ........
    flag =0
    End Sub
    
    sub Worksheet_SelectionChange
    if flag = 1 then exit sub
    .............
    tuo codice
    ............
    end sub

  4. #4
    L'avatar di dpg70
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Trebaseleghe (PD)
    Età
    47
    Messaggi
    60
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    13

    Re: Copiare il valore di una cella in un'altra sulla base di un terzo valore "SI" di conferma

    http://www.filedropper.com/gestionec...biliperforum_1

    Allego semplificato il file in questione e un grazie innanzitutto al grande Patel di qui conosco l'attività d'aiuto svolta, seguendolo dal mio primo forum di partecipazione. Seguendo la riposta, ho trovato in rete il sistema per espletare l'indicazione che ho già trascritto nel file.
    Un grazie, anche a te Alfredo per le indicazioni di posizionamento dei codici.
    Resto così, diciamo in ascolto ad indicazioni, sull'ulteriore velocizzazione di ciò che propongo con il mio basilare codice che applicato a migliaia di righe dati, impiega ovviamente molto tempo di esecuzione.

    Un Saluto a tutti e buone ferie a chi ne usufruisce oggi e nelle prossime settimane.
    Dario (DPG70)vato tutto, anche a rinserire Office.
    Allego semplificato il file in questione e un grazie innanzitutto al grande Patel di qui conosco l'attività d'aiuto svolta, seguendolo dal mio primo forum di partecipazione. Seguendo la riposta, ho trovato in rete il sistema per espletare l'indicazione che ho già trascritto nel file.
    Un grazie, anche a te Alfredo per le indicazioni di posizionamento dei codici.
    Resto così, diciamo in ascolto ad indicazioni, sull'ulteriore velocizzazione di ciò che propongo con il mio basilare codice che applicato a migliaia di righe dati, impiega ovviamente molto tempo di esecuzione.

    Un Saluto a tutti e buone ferie a chi ne usufruisce oggi e nelle prossime settimane.
    Dario (DPG70)vato tutto, anche a rinserire Office.

  5. #5
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Copiare il valore di una cella in un'altra sulla base di un terzo valore "SI" di conferma

    Un file semplificato che pesa 8 mega???
    Inoltre mi da errori nell'aprirlo?
    Codice a dir poco, incomprensibile....

    Ad ogni --->ActiveCell(1, -2).Select, interviene il Worksheet_SelectionChange???????????????????
    Prova riallegare in modo corretto.

Discussioni Simili

  1. [Risolto] Come considerare il valore "FALSO" come cella vuota
    Di Emax80 nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 02/12/16, 13:13
  2. Risposte: 5
    Ultimo Messaggio: 01/12/16, 12:36
  3. Problemi sulla "Variazione" ed "Elimina"
    Di dautattmaui nel forum Domande su Excel VBA e MACRO
    Risposte: 11
    Ultimo Messaggio: 05/08/16, 16:31
  4. funzione [conta.se]: contare il valore di un testo in una cella con "concatena"
    Di delittogoloso nel forum Domande su Excel in generale
    Risposte: 21
    Ultimo Messaggio: 05/07/16, 23:55
  5. Assegna un valore dato il valore un valore maggiore di 0 di altra cella
    Di Fabio71 nel forum Domande su Excel in generale
    Risposte: 20
    Ultimo Messaggio: 27/12/15, 21:23

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •