Besoin d'aide code simple en VBA excel, travail urgent
Résolu
diabolo5495
Messages postés
119
Statut
Membre
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour tout le monde,
Voici mon problème. Je dois réaliser un petit programme en VBA qui doit faire les instructions suivantes :
- Vérifier dans les cellules d'une colonne si le mot "mot_chercher" apparait
- Si c'est le cas, copier le contenu de la cellule qui se trouve deux colonne devant
- Coller ce contenu dans une cellule vide d'une autre feuille.
Voici le code que j'ai donc utilisé :
Le problème est que je suis totalement novice en VBA, et que je dois réaliser cela pour mon travail. Je fait donc appelle à vous en espérant avoir était compréhensible dans mon explication. ^^
Voici mon problème. Je dois réaliser un petit programme en VBA qui doit faire les instructions suivantes :
- Vérifier dans les cellules d'une colonne si le mot "mot_chercher" apparait
- Si c'est le cas, copier le contenu de la cellule qui se trouve deux colonne devant
- Coller ce contenu dans une cellule vide d'une autre feuille.
Voici le code que j'ai donc utilisé :
Sub test() Dim i As Double Dim j As Double Dim mot_chercher As String For i = 0 To 5 If Cells(i, 1) = mot_chercher Then Cells(j, 2) = Cells(j, 3) i = i + 1 j = i Next End Sub
Le problème est que je suis totalement novice en VBA, et que je dois réaliser cela pour mon travail. Je fait donc appelle à vous en espérant avoir était compréhensible dans mon explication. ^^
A voir également:
- Besoin d'aide code simple en VBA excel, travail urgent
- Code ascii - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Mise en forme conditionnelle excel - Guide
- Code puk bloqué - Guide
2 réponses
Effectivement cela ne fonctionne pas du tout comme cela...
Regarde ce code :
!!! ATTENTION!!! Si le mot est trouvé en colonne A et/ou B, la macro plante!
Regarde ce code :
Sub test()
Dim RngCherche As Range
Dim mot_chercher As String, firstAddress As String
Dim i As Integer
i = 1 'le premier mot trouvé sera placé en A1 de la Feuil3
mot_chercher = "Fayer"
Set RngCherche = Sheets("Feuil1").Cells.Find(mot_chercher, lookat:=xlWhole)
If Not RngCherche Is Nothing Then
firstAddress = RngCherche.Address
Sheets("Feuil3").Range("A" & i) = RngCherche.Offset(0, -2).Value
i = i + 1
Do
Set RngCherche = Sheets("Feuil1").Cells.FindNext(RngCherche)
Sheets("Feuil3").Range("A" & i) = RngCherche.Offset(0, -2).Value
i = i + 1
Loop While Not RngCherche Is Nothing And RngCherche.Address <> firstAddress
Else
MsgBox "Mot non trouvé."
End If
Set RngCherche = Nothing
End Sub
!!! ATTENTION!!! Si le mot est trouvé en colonne A et/ou B, la macro plante!
Bonjour,
Pour chercher un mot dans une colonne, tu peux utiliser la méthode Find. Celle-ci va te renvoyer l'objet Range ou est situé ton mot, ou pas.
Comme ceci :
Complément d'information
Pour chercher un mot dans une colonne, tu peux utiliser la méthode Find. Celle-ci va te renvoyer l'objet Range ou est situé ton mot, ou pas.
Comme ceci :
Sub test()
Dim RngCherche As Range
Dim mot_chercher As String
mot_chercher = "MonMot"
Set RngCherche = Sheets("Feuil1").Columns(5).Cells.Find(mot_chercher, lookat:=xlwhole)
If Not RngCherche Is Nothing Then
'traitement si le mot est trouvé
Sheets("Feuil3").Range("A11") = RngCherche.Offset(0, -2).Value
Else
'traitement si le mot n'est pas trouvé
MsgBox "Mot non trouvé."
End If
Set RngCherche = Nothing
End Sub
Complément d'information
Merci pour votre réponse, votre code correspond parfaitement à ce que je cherchais. Cependant, il me reste un problème que je n'avais pas résolu. Je dois réaliser cette action sur un tableau complet. Pour être plus précis, je dois dans un tableau trouvé le "MonMot" et à chaque fois qu'il apparait, copier donc la fameuse cellule dans un autre tableau. Le fait est que j'ai l'impression que l'action ne réalise qu'une seule fois. Faudrait-il utiliser une boucle ?
Non, pas de boucle, mais dans ce cas, il convient d'utiliser FindNext :
https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa195732(v=office.11)?redirectedfrom=MSDN
https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa195732(v=office.11)?redirectedfrom=MSDN
J'ai réaliser les modifications :
Cependant, il m'affiche une erreur de compilation. Aurais-je oublier quelque chose ?
Sub test()
Dim RngCherche As Range
Dim mot_chercher As String
mot_chercher = "Fayer"
Set RngCherche = Sheets("Feuil1").Columns(5).Cells.Find(mot_chercher, lookat:=xlWhole)
If Not RngCherche Is Nothing Then
Sheets("Feuil3").Range("A1") = RngCherche.Offset(0, -2).Value
Set RngCherche = .FindNext(RngCherche)
Else
MsgBox "Mot non trouvé."
End If
Set RngCherche = Nothing
End Sub
Cependant, il m'affiche une erreur de compilation. Aurais-je oublier quelque chose ?
Bonne journée
Bonne journée également,
A+
Sub Fayer() Dim RngCherche As Range Dim mot_chercher As String, firstAddress As String Dim i As Integer i = 2 'le premier mot trouvé sera placé en A1 de la Feuil3 mot_chercher = "*" + "Fayer" + "*" Set RngCherche = Sheets("Pilotage").Cells.Find(mot_chercher, lookat:=xlWhole) If Not RngCherche Is Nothing Then firstAddress = RngCherche.Address Sheets("Fayer").Range("B" & i) = RngCherche.Offset(0, -2).Value i = i + 1 Do Set RngCherche = Sheets("Pilotage").Cells.FindNext(RngCherche) Sheets("Fayer").Range("B" & i) = RngCherche.Offset(0, -2).Value i = i + 1 Loop While Not RngCherche Is Nothing And RngCherche.Address <> firstAddress Else MsgBox "Pas de tâche pour" + mot_chercher End If Set RngCherche = Nothing End SubNe serait-ce pas ici :
Set RngCherche = Sheets("Pilotage").Cells.Find(mot_chercher, lookat:=xlWhole)Cordialement
Set RngCherche = Sheets("Pilotage").Columns(5).Cells.Find(mot_chercher, lookat:=xlWhole)