Problème répétition boucle
oliwood
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
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
si qqun de plus expérimenté pouvait me dire ou est mon erreur ce serait sympa ;)
Bonne soirée
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
-
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 -
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-
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.
-
-
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 -
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!!!!!! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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