CICLO RIPETITIVO



  • CICLO RIPETITIVO
    di SAL (utente non iscritto) data: 15/03/2017 13:30:37

    buongiorno a tutti
    sono alle prime armi con il VBA, ho qeusto tipo di problema:

    ho una cella A1 con un valore fisso (esempio A) ed un'altra cella B1 con un valore fisso (esempio B)

    ho una serie di righe (un centinaio) con la stessa formula (da riga 11 a riga 100) dove la colonna A ha articoli diversi per ogni riga, quindi :

    se A11 = A1 ALLORA C11 = B1 (se l'articolo che io scrivo in A1 = articolo in A11 allora C11=B1 . . . SE è DIVERSO ALLORA C11 rimane come è)
    se A12 = A1 ALLORA C12 = B1
    se A13 = A1 ALLORA C13 = B1 e così via fino alla 200 riga

    con un commandbutton vorrei che si avverasse la condizione a tutte le righe,

    credo si faccia con For Each ma non so come si fa
    qualcuno sa scrivermi la rountine per favore

    grazie a tutti
    cordiali saluti



  • di alfrimpa data: 15/03/2017 13:56:06

    Ciao Sal

    Allega un file di esempio con una decina di righe inserendo a mano il risultato desiderato.

    Alfredo





  • di Albatros54 data: 15/03/2017 14:47:44

    codice che funziona in base al tuo file, da implementare.
    Ciao
    albatros54 
     
    Private Sub CommandButton1_Click()
    Dim rng As Range
    Dim cl As Range
    Set rng = Range("c10:c17")
    For Each cl In rng
    If cl = Cells(5, 3).Value Then
     cl.Offset(, 3) = Cells(5, 6)
    End If
    Next
    End Sub






  • di Luca73 data: 15/03/2017 14:55:25

    Eccoti un esempio
    Sono sicuro che Alfredo o altri esperi lo farebbero in maniera più bella e concisa.

    Comunque per fare qullo che vuoi tu basterebbe un cerca.vert

    Ciao
    Luca
     
    Private Sub CommandButton1_Click()
    
    Dim RangeW As Range
    Dim CellaW As Range
    Dim TROVATO As Boolean
    TROVATO = False
    Set RangeW = Range("C10", Range("C10").End(xlDown))
    
    For Each CellaW In RangeW
        If CellaW = Range("C5").Value Then
            Range("C5").Offset(0, 3) = CellaW.Offset(0, 3)
            TROVATO = True
            Exit For
        End If
    Next
        
    If Not TROVATO Then
    Range("C5").Offset(0, 3) = "Non Esiste"
    End If
    
    End Sub
    






  • di SAL (utente non iscritto) data: 15/03/2017 16:19:31

    Grazie a tutti
    ho inserito per ora il codice di Albatros54 e funziona benissimo

    il codice di Luca non l'ho provato perché già funzionava quello di Albatros, comunque grazie lo stesso

    ciao
    Salvatore



  • di Luca73 data: 16/03/2017 08:04:12

    Ciao
    Giusto per chiarezza
    il codice mio e quello di albatros (che saluto caramente) sono praticamente identici nel concetto.
    L'unica differenza è la gestione degli "errori"
    Ovvero se scrivi una parola non presente nell'elenco di ricerca.
    Una sottigliezza che avevo aggiunto ma che non cambia la filosofia del ciclo di ricerca.

    Ciao
    Luca





  • di sal (utente non iscritto) data: 16/03/2017 11:41:34

    Grazie Luca, capisco ben poco di VBA, ma la sottigliezza che hai inserito l'avevo notata !

    ringrazio comunque tutti, siete carini e disponibili
    ciao
    Sal