Problème répétition boucle

Fermé
oliwood - 9 sept. 2013 à 22:01
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 - 10 sept. 2013 à 18:44
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

f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712
10 sept. 2013 à 09:09
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 10/09/2013 à 10:02
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
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712
10 sept. 2013 à 10:52
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
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
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712
Modifié par f894009 le 10/09/2013 à 11:02
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
10 sept. 2013 à 14:30
RE,

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

cells(yyy,"Q") <==> cells(xxx,"T).offset(yyy,-3) ?
0
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712
10 sept. 2013 à 14:41
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 10/09/2013 à 18:35
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
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712
10 sept. 2013 à 18:44
Re,

Vous savez les + et les -, c'est trompeurs
0

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
0