Boucle find next ? ou offcet ?

bonjour

j'ai l'impression de embouiller le cerveau , a lire et triturer des lignes de code

voici une parti d'un code , je cherche un mot dans la colonne A et ensuite je prend le le texte de la cellule B ( + X lignes )

c'est le moyen que j'ai trouve car mes données n'ont pas grand choses de fixe ( ni dimensions , ni information )

mais bon pas de souci de ce coté

j'attaque ensuite une seconde boucle sur le même principe

je cherche une valeur et je prend la valeur de la colonne voisine ( D)

sauf que cette fois ci ma valeur est present 3 fois sur la plage

cela me donne 3 valeurs ,l'une apres l'autre

et moi je souhaite conserver et afficher les 3 valeurs dans des cellules bien distinctes a chaque fois

je voudrais que la 1 ere valeur trouvé s'affiche en j47 ,

la seconde en j48

et la derniere ( on va compliquer en K48 )

je me suis dit que find next pouvais etre la solution

mais en écrivant ce texte je me dit que un offcet avec une active cell ? cela pourrais fonctionner aussi ?

voici mon code

la msgbox ne donne les valeurs l'es une après les autres ( cela me permet de suivre l’exécution de mon code en tps reel )

 For l = 30 To Range("A" & 65536).End(xlUp).Row
       If Range("a" & l) = "resultats" Then

           pl1 = Range("B" & l + 3)
           pl2 = Range("B" & l + 4)
           pl3 = Range("B" & l + 5)
           pl4 = Range("B" & l + 6)
           cgt = pl1 & "-" & pl2

           For lnn = 5 To Range("A" & 65536).End(xlUp).Row
            If Range("a" & lnn) = cgt Then

             DD = Range("D" & lnn)

             MsgBox DD
             ' Exit For 

             ' [j40] = DD

            End If
Next lnn

Bonsoir Foufie, bonsoir le forum,

Ce qui embrouille le cerveau c'est un code sans identation ! Il manque un End If et un Next l à ton code...

Sub Macro1()
For l = 30 To Range("A" & 65536).End(xlUp).Row
    If Range("a" & l) = "resultats" Then
        pl1 = Range("B" & l + 3)
        pl2 = Range("B" & l + 4)
        pl3 = Range("B" & l + 5)
        pl4 = Range("B" & l + 6)
        cgt = pl1 & "-" & pl2
        For lnn = 5 To Range("A" & 65536).End(xlUp).Row
            If Range("a" & lnn) = cgt Then
                DD = Range("D" & lnn)
                MsgBox DD
                ' Exit For
                ' [j40] = DD
            End If
        Next lnn
    End If 'il manque cet End If (peut-être ailleurs...)
Next l 'il manque ce Next l (peut-être ailleurs...)
End Sub

ah oui en effet lors de ma recopie ( j'ai oubliee quelques lignes ainsi que la mise en forme )

le next et le end if etais present dans mon code d'origine

voici ou je me suis arreté >

rcgt = Range("D" & lnn) ' je donne une valeur a RCGT ( cette valeur sera reprofduit 3 fois car je trouve 3 fois le mot rechercher dans ma boucle )

'ActiveCell.Offset(1, 0).Select = rcgt ( un essai , affiche dans la cellule active et de place de 1 , le resultats de RCGT )

ActiveCel = rcgt

ActiveCell.Offset(1, 2).Select (un second essai , la message box m'indique mon chiffre , l'activecell offset deplace la cellule active mais il n y a rien a l'interieur de la cellule )

je ne comprend pas trop pourquoi cela ne fonctionne pas ....;

rcgt = Range("D" & lnn) ' je donne une valeur a RCGT ( cette valeur sera reprofduit 3 fois car je trouve 3 fois le mot rechercher dans ma boucle )

'ActiveCell.Offset(1, 0).Select = rcgt ( un essai , affiche dans la cellule active et de place de 1 , le resultats de RCGT )

j'ai joint une page exemple avec la macro

28classeur1.xlsm (26.75 Ko)

Bonsoir Foufie, bonsoir le forum,

Tu proposes un exemple sans aucune données dans la colonne A avec un code qui va vérifier les valeur de cette colonne ! C'est désespérant...

je ne vois pas trop ce que tu veux dire par la " sans aucune données dans la colonne A"

For l = 30 To Range("A" & 65536).End(xlUp).Row

If Range("a" & l) = "Arrivée " Then

c''est parti de code fonctionne ( ere boucle qui recherche des valeurs en colonne A )

second boucle qui cherche aussi en colonne A et qui elle aussi fonctionne

For lnn = 5 To Range("A" & 65536).End(xlUp).Row

If Range("a" & lnn) = cgt Then

les données sont a partir de la ligne 40

c'est indiquer en c7 de regarder plus bas

Le probleme est resolu

je viens de me rendre compte qu'il s'agit d'une simple erreur d’écriture

j'ai écris activecel et j'aurai du écrire actrivecell ( ça ma bien pris la tête c'est simple erreur )

""""ActiveCel = rcgt """""""

Rechercher des sujets similaires à "boucle find next offcet"