Besoin d'aide code simple en VBA excel, travail urgent

Résolu/Fermé
diabolo5495 Messages postés 109 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 10 février 2015 - Modifié par diabolo5495 le 15/07/2013 à 09:02
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 18 juil. 2013 à 11:35
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
15 juil. 2013 à 10:39
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 109 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 10 février 2015 27
15 juil. 2013 à 11:07
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
15 juil. 2013 à 11:11
Mais de rien.
Bonne journée également,
A+
0
diabolo5495 Messages postés 109 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 10 février 2015 27
18 juil. 2013 à 11:15
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
18 juil. 2013 à 11:28
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 109 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 10 février 2015 27
18 juil. 2013 à 11:32
Merci bien :) bonne journée
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
15 juil. 2013 à 09:54
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 109 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 10 février 2015 27
15 juil. 2013 à 10:05
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
15 juil. 2013 à 10:14
0
diabolo5495 Messages postés 109 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 10 février 2015 27
15 juil. 2013 à 10: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