Utiliser la méthode Find sur l'active Cell

  • Initiateur de la discussion Initiateur de la discussion arthurho
  • 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 !

A

arthurho

Guest
Bonjour,

Je souhaite utiliser la méthode find sur la cellule active dans une boucle pour récupérer la chaine de caractère "FDM" suivi des 5 chiffres situés après.
Dans l'exemple, je souhaite récupérer FDM37552

J'utilise le code suivant :
Code:
Sub recherche()
entité = "FDM"
Set c = ActiveSheet.Columns(1).Find(entité, LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
  firstAddress = c.Address
      Do
        MsgBox (c.Value)  '<== Je tente de récupérer "FDM" & les 5 Chiffres apres'
        Set c = ActiveSheet.Columns(1).FindNext(c)
      Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End Sub

Sur cet exemple, je récupère l'ensemble de la valeur de la cellule.

La chaine de caractère présente dans la colonne 1 "FDM..." peut se déplacer dans chaque cellule (elle peut se retrouver en bout de chaine par exemple) cest pourquoi la méthode find est nécessaire.

Merci de votre aide ,

Cdt,

Arthur HO.
 

Pièces jointes

Dernière modification par un modérateur:
Re : Utiliser la méthode Find sur l'active Cell

Bonjour atrhurho

Faire une rcherche par Find sur une cellule est à mon avis un non sens
Plutot que proposer n'importe quoi , tu devrais nous expliquer ce que tu recherches

Un exemple de code:

Code:
Sub recherche()
For n = 1 To Range("A65536").End(xlUp).Row
  If InStr(Range("A" & n), "FDM") <> 0 Then MsgBox (" FDM trouvé en ligne:" & n)
Next n
End Sub
 
Re : Utiliser la méthode Find sur l'active Cell

Tu ne peux pas utiliser la méthode find sur une cellule.
Elle ne peux etre utilisée que sur une plage de cellule.
La fonction find te trouvera les cellules contenant ce que tu recherches dans une plage préselectionnée.
ce que tu peux faire, c'est utiliser la fonction "instr" qui te dit si une chaine de caractere "FDM" par ex est présente dans le libellé contenu dans ta cellule:
for each vcell in selection
if instr(1,vcell.value,"FDM",vbTextCompare)<>0 then
MSGBOX vcell.value
end if
next
 
Re : Utiliser la méthode Find sur l'active Cell

Daccord, la plage doit être préselectionnée.

J'ai finalement réussi à obtenir ce que je voulais par :

Code:
Sub recherche()
Dim Fposition As Integer

entité = "FDM"
Set c = ActiveSheet.Columns(1).Find(entité, LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
  firstAddress = c.Address
      Do
        Fposition = InStr(1, c.Value, "F")
        MsgBox Mid(c.Value, Fposition, 8)

        Set c = ActiveSheet.Columns(1).FindNext(c)
      Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End Sub

A partir du fichier excel initial,

Merci de votre aide
 
Dernière modification par un modérateur:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
411
Réponses
12
Affichages
1 K
Réponses
12
Affichages
1 K
Retour