Problème répétition boucle

oliwood -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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.
      0
  3. oliwood
     
    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
    0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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!!!!!!
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      RE,

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

      cells(yyy,"Q") <==> cells(xxx,"T).offset(yyy,-3) ?
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Vous savez les + et les -, c'est trompeurs
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. oliwood
     
    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
    0