[VBA] - Probleme de boucle

Résolu
Bonjour,

J'ai créer le code ci dessous qui me permet suivant que les 4 premiers caracteres d'une cellule soient egaux aux 4 autres de la cellule du dessus, si c'est le cas des informations s'affichent dans une cellule vide
Le problème c'est que ça fonctionne pour qu'une ligne.Pourriez vous me dire comment boucler le code sur toutes les lignes
Merci

Sub MarqueLesDoublons()

If Left(C16, 5) = C15 Then
Range("Y16").Value = "MT en " & Range("H16").Value & " " & Range("D16").Value & " " & "le " & Range("W16").Value & " " & "par " & Range("M16").Value & " " & Range("V16").Value

End If
End Sub
Configuration: Windows XP Pro
Internet Explorer 6.0

7 réponses

  1. Bonjour,

    En lui disant "s'il te plaît" peut être ...

    Non plus sérieusement, pour qu'un code s'exécute, il faut un évènement déclencheur ... tu nous donnes trop peu d'informations pour que l'on puisse d'aider. Quand veux-tu que ta procédure MarqueLesDoublons s'éxécute ??? Quelle est la plage à parcourir ??? etc ...

    ;o)

    Polux
    1. et si tu remplaces la boucle IF.... ENDIF par une boucle DO WHILE ..... ENDDO ?
      1. En fait ce qui m'embete c'est les valeurs, comment lui dire juste en disant qu on se trouve dans la colonne C et que dans la colonne Y on doit retrouver un tas d'info
        1. En vous remerciant d'avance pour votre aide
          ma plage est la colonne C5 à C700, et dans cette plage je dois trouver des doublons mais uniquement sur les 5 premiers caractères, si je tombe sur un doublon la colonne "Y" doit m'afficher des infos (sur la ligne des doublon)

          Maintenant j'ai un code, mais il ne tourne pas, voir ci dessous

          For Each Ligne In Worksheets("Tool_Dossiers").Range("C5:C" & Cells(Columns(1).Cells.Count, 1).End(xlUp).Row)
          NoLigne = Ligne.Row
          If Left(Cells(NoLigne, 3), 5) = Cells(NoLigne - 1, 3) Then
          Range("Y" & NoLigne).Value = "MT en " & Range("H" & NoLigne).Value & " " & _
          Range("D" & NoLigne).Value & " " & "le " & Range("W" & NoLigne).Value & " " & _
          "par " & Range("M" & NoLigne).Value & " " & Range("V" & NoLigne).Value
          End If
          Next

          Merci à tous
          1. Si ta plage est toujours la même, c'est à dire de C5 à C700, je te propose ceci :

            Dim cel1 As String
            Dim cel2 As String
            Dim i As Long
            
            With WorkSheets("Tool_Dossiers")
                 For i = 5 to 700
                      cel1 = "C" & i
                      cel2 = "C" & i - 1
                      If .Range(cel1).Value = .Range(cel2).Value Then
                           .Range("Y" & i).Value = "MT en " & .Range("H" & i).Value & " " & _ 
                                                 .Range("D" & i).Value & " " & "le " & .Range("W" & i).Value & " " & _ 
                                                "par " & .Range("M" & i).Value & " " & .Range("V" & i).Value
                     End If
                 Next i
            End With
            


            Je ne suis pas un spécialiste d'Excel et je n'ai pas testé ...

            ;o)

            Polux
            1. Bonjour,

              De rien Jeyjey1, c'est avec plaisir ...

              Bon courage pour la suite

              ;o)

              Polux