méthode find en VBA

  • Initiateur de la discussion Initiateur de la discussion roro145
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

roro145

XLDnaute Nouveau
Bonjour à tous, voilà j'ai un problème avec l'utilisation de la méthode find appliquée à un objet range, voici le code :

With ActiveWorkbook.Worksheet('MEMO2').Range('A1:Z1')
c = .Find(Donnée)
...
End With

avec 'Donnée' qui est une chaine de caractère.
Donnée se trouve bien dans la plage A1:Z1, mais pourtant c'est 'nothing' qui est affecté à c (c étant déclaré comme 'Range').

La fonction find ne devrait-elle pas renvoyé l'adresse de la cellule à laquelle la chaine de caractère à été trouvée ???

merci par avance pour vos éventuelles réponse.
++

Message édité par: roro145, à: 19/06/2006 10:59
 
bonjour 🙂

sinon, essayes comme ceci :

With ActiveWorkbook.Worksheets('MEMO2').Range('A1:Z1')
Set c = .Find(donnée)

End With


set permet d'affecter un objet à une variable

tu peux ensuite utiliser dans le reste de ton code directement c

c.select
c.interior.colorindex=3

si tu veux tester si c est bien initialisé, utilise ce type de syntaxe :

If Not c Is Nothing=si c n'est pas vide

salut
 
Ave,

Attention à la méthode Find qui à la fâcheuse habitude de mémoriser les paramètres de la précédente utilisation !

Préférer la syntaxe suivante :

Sub zzz()
donnée = 'aaa'
x = [A1:Z1].Find(What:=donnée, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns).Address
End Sub

AV [aaa]
 
re roro, shock
salut pierrejean, AV

pas de souci pierrejean

Bien d'accord avec toi alain

attention roro, si tu utilises la méthode d'alain, le x deviens un string (contenant l'addresse de la cellule trouvé)

si tu veux tester son contenu il te faut utiliser :

donnée = 'aaa'
On Error Resume Next
x = [A1:Z1].Find(What:=donnée, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns).Address
If Not x = '' Then ...


et si ensuite tu veux utiliser une variable objet (dim c as range) :

set c=range(x)

salut 🙂
 
Merci à tous, vous êtes géniaux, et ultra réactifs , jamais vu une réponse donnée en si peu de temps ...
Donc j'ai essayé la méthode d'Hervé, qui marche parfaitement...
encore un grand merci, heureusement que vous êtes là,
++
 
Merci à tous, vous êtes géniaux, et ultra réactifs , jamais vu une réponse donnée en si peu de temps ...
Donc j'ai essayé la méthode d'Hervé, qui marche parfaitement...
encore un grand merci, heureusement que vous êtes là,
++
 
Merci à tous, vous êtes géniaux, et ultra réactifs , jamais vu une réponse donnée en si peu de temps ...
Donc j'ai essayé la méthode d'Hervé, qui marche parfaitement...
encore un grand merci, heureusement que vous êtes là,
++
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Recherche v + VBA
Réponses
3
Affichages
2 K
Réponses
2
Affichages
2 K
Retour