Problème répétition boucle

Bonjour, ou bonsoir c'est selon :)

voilà je débute en VBA et j'ai réussi à bidouiller une macro pour effectuer une recherche dans une plage et renvoyer les valeurs trouvées, mais la boucle ne marche pas je voudrais que le deuxième résultat se mette dans la cellule en dessous et ainsi de suite.
voici le code
Sub TrouverVoisin2()

Dim Cellule As Range
Dim cat As String

cat = "MUS"

With ActiveSheet.Range("G3:G47")
Set Cellule = .Find(cat, Lookat:=xlWhole)
If Not Cellule Is Nothing Then
firstAddress = Cellule.Address
Do
Range("T4").Value = Cellule.Offset(0, -3).Value & Cellule.Offset(0, -2)
Range("U4").Value = Cellule.Offset(0, -2).Value
Exit Sub
Set Cellule = .FindNext(Cellule)
Range("T5").Value = Cellule.Offset(0, -3).Value & Cellule.Offset(0, -2)
Range("U5").Value = Cellule.Offset(0, -2).Value
Loop While Not Cellule Is Nothing And Cellule.Address <> firstAddress
End If
End With
MsgBox "Rien trouvé"
End Sub

si qqun de plus expérimenté pouvait me dire ou est mon erreur ce serait sympa ;)

Bonne soirée

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    Si vous n'avez que deux infos a recuperer:

    Sub TrouverVoisin2()

    Dim Cellule As Range
    Dim cat As String

    cat = "MUS"

    With ActiveSheet.Range("G3:G47")
    Set Cellule = .Find(cat, Lookat:=xlWhole)
    If Not Cellule Is Nothing Then
    firstAddress = Cellule.Address
    Do
    Range("T4").Value = Cellule.Offset(0, -3).Value & Cellule.Offset(0, -2)
    Range("U4").Value = Cellule.Offset(0, -2).Value
    Set Cellule = .FindNext(Cellule)
    Range("T5").Value = Cellule.Offset(0, -3).Value & Cellule.Offset(0, -2)
    Range("U5").Value = Cellule.Offset(0, -2).Value
    Exit Sub
    Loop While Not Cellule Is Nothing And Cellule.Address <> firstAddress
    End If
    End With
    MsgBox "Rien trouvé"
    End Sub
    1. Contributeur
      Bonjour tous les 2

      essaies:
      Option Explicit

      Sub ccm()
      Dim Cat As String, Nbre As Byte, LIg As Byte, Cptr As Byte, Yyy As Byte

      Application.ScreenUpdating = False
      Cat = "MUS"
      Nbre = Application.CountIf(Range("G3:G47"), Cat)
      If Nbre > 0 Then
      LIg = 42
      Yyy = 4
      For Cptr = 1 To Nbre
      LIg = Columns("G").Find(Cat, Cells(LIg, "G"), xlValues).Row
      Cells(Yyy, "T") = Cells(Yyy, "Q") & " " & Cells(Yyy, "R")
      Cells(Yyy, "U") = Cells(Yyy, "S")
      Yyy = Yyy + 1
      Next
      Else
      msgbox "rien trouvé"
      End If

      End Sub


      Michel
      1. Bonjour michel_m

        Avant de lui sortir a peu pres le meme code que vous, vu qu'il a fait l'effort de chercher dans l'aide excel ( ail suppose, docteur), je lui ai simplement corriger la position de sortie du fait qu'il n'y a que deux infos a priori. Comme cela petite satisfaction personnelle pour lui.
    2. Merci de vous penchez sur mon cas mais la première solution proposée a visiblement le même problème que moi , elle ne renvoie que la première réponse trouvée pas les autres.
      Et la deuxième me met des X dans les cases lol

      je comprends de moins en moins mdr
      1. Bonjour,

        elle ne renvoie que la première réponse trouvée pas les autres.
        Dites voir c'est la deuxieme ou toutes les autres qu'il faut trouver????????????????????

        Le code de michel_m marche tres bien, au colonnes pres (offset negatif)!!!!!
        Le mien aussi, a condition de n'avoir que deux infos!!!!!!
        1. Contributeur
          RE,

          Je n'ai pas utilisé la fonction Offset ??? comprend pas

          cells(yyy,"Q") <==> cells(xxx,"T).offset(yyy,-3) ?
        2. Re,

          Sauf erreur de ma part,

          code de depart
          Cellule=====>Gx
          Range("T4").Value = Cellule.Offset(0, -3).Value & Cellule.Offset(0, -2)

          Vous:
          Cells(Yyy, "T") = Cells(Yyy, "Q") & " " & Cells(Yyy, "R")

          Pas les memes
        3. Contributeur
          Effectivement, précipitation de ma part...

          il fallait écrire
          Cells(Yyy, "T") = Cells(Yyy, "D") & " " & Cells(Yyy, "E")
          Cells(Yyy, "U") = Cells(Yyy, "E")

          Merci, F89
        4. Re,

          Vous savez les + et les -, c'est trompeurs
      2. il y'a eu maldonne j'ai mal compris en fait il peut y'avoir jusqu'à 44 données comme réponses j'avais compris les deux données les deux valeur si la condition est remplie en fait