Erreur dans une macro avec Find et FindNext

Résolu/Fermé
Pixil Messages postés 2 Date d'inscription dimanche 17 mai 2015 Statut Membre Dernière intervention 17 mai 2015 - 17 mai 2015 à 11:56
Pixil Messages postés 2 Date d'inscription dimanche 17 mai 2015 Statut Membre Dernière intervention 17 mai 2015 - 17 mai 2015 à 20:33
Bonjour à tous,

Afin de résoudre un problème de compatibilité sur un fichier excel, je cherche à le modifier de manière automatique.

La description de la fonction que je cherche à mettre en place est la suivante :

A partir de la ligne 2
Chercher dans la cellule de la colonne D l'expression "mot".
Si la cellule en question contient "mot" Alors
Inscrire une croix "X" dans la colonne E de la ligne active
Sinon, ne rien faire
Puis répéter l'action pour la ligne suivante jusqu'à la ligne 1200.


à l'aide de l'aide excel et quelques infos glanées sur le net, voici ce à quoi j'ai pensé :

Sub XRecherche()
'
' XRecherche Macro
'
With Worksheets("sheet").Range("D2:D1200")
Set c = .Find("mot", LookIn:=xlValues, LookAt:=xlPart)
If Not c Is Nothing Then
FirstAddress = c.Address
Do
Range("E" & "ActiveCell.Row").Select
ActiveCell.FormulaR1C1 = "X"
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> FirstAddress
End If
End With

End Sub


La macro ne fonctionne pas encore car la fonction Range ne renvoie pas de valeur et ma faible connaissance du VBA ne me permet pas de trouver de solution pour le moment.

J'imagine que ce problème pourrait être résolu en quelques secondes par un érudit, toute aide sera la bienvenue.

Merci d'avance
Pixil


A voir également:

1 réponse

cousinhub29 Messages postés 956 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 18 novembre 2024 344
17 mai 2015 à 14:31
Bonjour,

Peut-être ainsi :

Sub XRecherche()
'
' XRecherche Macro
Dim C As Range
With Worksheets("Feuil1") 'Attention au nom de la feuille
With .Range("D2:D" & .Cells(Rows.Count, "D").End(xlUp).Row)
Set C = .Find("mot", LookIn:=xlValues, LookAt:=xlPart)
If Not C Is Nothing Then
FirstAddress = C.Address
Do
C.Offset(0, 1).Value = "X"
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> FirstAddress
End If
End With
End With
End Sub


Bon Dimanche
2
Pixil Messages postés 2 Date d'inscription dimanche 17 mai 2015 Statut Membre Dernière intervention 17 mai 2015
17 mai 2015 à 20:33
Bonsoir, problème résolu. Merci pour l'aide et bonne soirée !
0