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   -
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é :

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:

2 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Effectivement cela ne fonctionne pas du tout comme cela...
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!
1
diabolo5495 Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   27
 
Exactement ce que je chercher, j'ai plus qu'a faire quelques modifications et tout sera parfait ! Merci beaucoup de votre aide, pijaku :)

Bonne journée
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Mais de rien.
Bonne journée également,
A+
0
diabolo5495 Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   27
 
J'ai de nouveau une question pour vous ! Si je dois réaliser la recherche du mot dans une colonne bien défini, où dois-je le spécifier dans le code :

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 Sub


Ne serait-ce pas ici :
Set RngCherche = Sheets("Pilotage").Cells.Find(mot_chercher, lookat:=xlWhole)


Cordialement
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
C'est tout à fait ça. Exemple d'une recherche uniquement en colonne E (5) :
Set RngCherche = Sheets("Pilotage").Columns(5).Cells.Find(mot_chercher, lookat:=xlWhole)
0
diabolo5495 Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   27
 
Merci bien :) bonne journée
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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 :
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
0
diabolo5495 Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   27
 
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 ?
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
0
diabolo5495 Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   27
 
J'ai réaliser les modifications :

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 ?
0