Besoin d'aide code simple en VBA excel, travail urgent
Résolu
diabolo5495
Messages postés
112
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 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
- Mise en forme conditionnelle excel - Guide
- Word et excel gratuit - 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+
Ne serait-ce pas ici :
Cordialement