Utiliser la méthode Find sur l'active Cell

arthurho

XLDnaute Junior
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

  • Classeur2.xls
    43.5 KB · Affichages: 47
  • Classeur2.xls
    43.5 KB · Affichages: 61
  • Classeur2.xls
    43.5 KB · Affichages: 56
Dernière édition:

pierrejean

XLDnaute Barbatruc
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
 

fredl

XLDnaute Impliqué
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
 

arthurho

XLDnaute Junior
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 édition:

Discussions similaires

Réponses
12
Affichages
630
Réponses
8
Affichages
542
Réponses
12
Affichages
630
Réponses
2
Affichages
186

Statistiques des forums

Discussions
312 594
Messages
2 090 080
Membres
104 369
dernier inscrit
bolthorn