recherche précise en VBA avec find

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 !

gosselien

XLDnaute Barbatruc
Bonjour,

je me demande pourquoi la méthode ".FIND" ne sait pas trouver la différence entre "40" et "400", hors, j'ai besoin de trouver les 2 ...

partie du code ici:

For Each mat In Range("tabledn")
Ordre = mat.Offset(0, 2).Value
With ActiveSheet.Range("d2:d" & Lastrow)
Dim Cel As Range
Set C = .Find(What:=mat, LookIn:=xlValues, LookAt:=xlPart)
If Not C Is Nothing Then
firstAddress = C.Address
Do
etc etc...
(XL 2003 au boulot)

j'ai bien tenté de changé xlPART par xlwhole mais pas mieux... où est mon erreur ?

Merci
 
Re : recherche précise en VBA avec find

Hello,
ha oui !!!

j'ai un ***peu oublié*** de l'attacher mais entretemps, j'en encore regardé, sans toucher au code, ici il fonctionne alors qu'au boulot il ne voulait pas...mais après une journée de taf, le pc et moi étions morts.... 🙄

A n'y rien comprendre

Ceci dit, si quelqu'un a un autre code ...
 

Pièces jointes

Re : recherche précise en VBA avec find

Bonsoir gosselien,

La métode Find ne permet pas la recherche sur une plage(mat en l'ocurrence), mais d'une seule cellule. Ensuite pour trouver la valeur exacte c'est bien xlWhole.

Je te remet le fichier que j'ai modifié, ensuite tu l'adaptera à ton souhait.



A+ 😎
 

Pièces jointes

Re : recherche précise en VBA avec find

Hello,

j'ai du mal m'exprimer peut être...
dans mon exemple, il faut chercher dans la colonne D les articles qui contiennent DN6-DN20 -DN200 (exactement) contenu dans "tableDN" et mettre à côté, en colonne E (colonne "TRI") le numéro de tri trouvé en colonne I de mon exemple.
Comme indiqué au post précédant, il semble fonctionner ici alors que au boulot, il se planter sur DN20 et DN200 ...
Ça permet ensuite de trier les vannes sur la caractéristique "DN"
Merci
 
Re : recherche précise en VBA avec find

Bonjour Gosselien
Quand on participe à un forum c'est pour que tout le monde profite de la conversation et dispose des mêmes infos pour comprendre le problème. Les MP sont donc à éviter pour communiquer sur une question purement excel. Merci
 
Re : recherche précise en VBA avec find

Entièrement d'accord mais je ne voulais pas tirer mon explication en longueur, je mettrai la réponse reçue , j'y regarde et je l'adapte avant tout...
Je vais remettre ici les données du problème qui était la recherche exacte d'une occurrence parmi 700 cellules; toutes les aides sont bienvenues et mon fichier exemple est dans le post #3 du début 🙂
Le code fonctionne à présent, je ne comprends pas pq il n'allait pas au boulot et fonctionne chez moi...
le problème venait de:
J'ai tout réécris et ça fonctionne
Set C = .Find(What:=mat, LookIn:=xlValues, LookAt:=xlPart)

' alors que XLWHOLE ne fonctionne pas lui 🙁

Merci à Lone-wolf au passage
 
Dernière édition:
Re : recherche précise en VBA avec find

Bonsoir gosselien, Misange 😀

@ gosselien: si tu passe par ici, ce matin je t'ais envoié 2 MP tu les a lus?.


sinon voici la dernière macro. Attention!, dans table-dn tu as 2 fois DN100.


Code:
Sub ChercheMatière()
Dim Ordre As Long
Dim tri, tabledn, mat, c As Range

Set tri = Sheets(1).Range("i4:i24")
Set tabledn = Sheets(1).Range("h4:h24")

For Each mat In tabledn
Ordre = mat.Offset(0, 1).Value
With Feuil1.Range("D2:D366")
Set c = .Find(mat, , xlValues, xlPart)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(0, 1).Value = Ordre
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Next
End Sub



A+ 😎
 
Dernière édition:
Re : recherche précise en VBA avec find

Hello, oui je l'ai lu mais je n'ai pas le résultat...
Je te remercie néanmoins pour ton aide, et je m'en suis inspiré pour une autre partie du travail 🙂

bonne journée
ps: merci pour la remarque sur le doublon
 
Re : recherche précise en VBA avec find

Bonjour gosselien, Misange, Lone-wolf,

Plutôt que du VBA on peut aussi utiliser une formule matricielle (validation par Ctrl+Maj+Entrée).

En E2, en conservant les 2 valeurs d'erreur en E128 et E224 :

Code:
=INDEX(tri;EQUIV(VRAI;ESTNUM(TROUVE(TABLEDN&" ";SUBSTITUE(SUBSTITUE(D2;"-";" ");"/";" ")&" "));0))
En F2, en évitant les 2 valeurs d'erreur en E128 et E224 :

Code:
=SI(SOMME(N(ESTNUM(TROUVE(TABLEDN&" ";SUBSTITUE(SUBSTITUE(D2;"-";" ");"/";" ")&" "))));INDEX(tri;EQUIV(VRAI;ESTNUM(TROUVE(TABLEDN&" ";SUBSTITUE(SUBSTITUE(D2;"-";" ");"/";" ")&" "));0));"")
Fichier joint.

A+
 

Pièces jointes

- 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

Réponses
2
Affichages
461
Réponses
12
Affichages
861
Retour