Macro Find. ne trouve pas la valeur exacte avec xlwhole [Fermé]

Signaler
Messages postés
52
Date d'inscription
mercredi 29 juillet 2015
Statut
Membre
Dernière intervention
5 juillet 2017
-
Messages postés
16392
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
27 février 2021
-
Bonjour,

J'ai deux onglets : 1 onglet avec un tableau de 12000 lignes avec des codes europe en vrac. 1 deuxieme onglet avec un tableau avec les code europe et les code chine a coté.

J'ai creer une macro find pour trouver le code europe correspondant dans les deux tableau et copier/coller le code chine dans le tableau de 12000 lignes a cote du code trouver. J'ai acjouter la fonction xlWhole dans la fonction Find. mais la macro ne me trouve pas la valeur exacte.

Voici mon code : (Le code chercher est un melange mde lettre, chiffes et caracteres speciaux)


Sub MACRO_2_ECDV_SPE()

Dim Trouve As Range

Dim PlageDeRecherche As Range

Dim Valeur_Chercher As Variant

For i = 5 To 12067

Valeur_Chercher = Sheets("Full_Process_Sheet_20161121").Cells(i, 9).Value

Set PlageDeRecherche = Sheets("Reference ECDV Code X74").Range("B6:B460")

Set Trouve = PlageDeRecherche.Find(Valeur_Chercher, Lookat:=xlWhole)

If Trouve Is Nothing Then

Else

Sheets("Full_Process_Sheet_20161121").Cells(i, 10) = Trouve.Offset(0, 1).Value ' Copy the ECDV Code specific China

End If

Set PlageDeRecherche = Nothing
Set Trouve = Nothing
Next

End Sub

Le code est simpliste car je suis debutant en vba. Merci d'avance pour votre aide car je ne comprend pas l'erreur.

Anthony

3 réponses


Bonjour Anthony,

Ton erreur est : « Find. ne trouve pas la valeur exacte avec xlwhole ».

Tu as cette ligne de code :

Set Trouve = PlageDeRecherche.Find(Valeur_Chercher, Lookat:=xlWhole) 

Au lieu de xlWhole, je te propose de mettre xlPart :

Set Trouve = PlageDeRecherche.Find(Valeur_Chercher, Lookat:=xlPart) 

Je ne suis pas entré dans le détail de ton code, mais j'espère que
ça règlera ton problème. Si oui, merci d'aller en haut de page
pour cliquer sur « Marquer comme résolu ».

Cordialement.  😊
 
Messages postés
8441
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
28 février 2021
1 613
Si il veut le code exact, il faut xlWhole !!!
Messages postés
8441
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
28 février 2021
1 613
Bonjour,

Remplace :
Set Trouve = PlageDeRecherche.Find(Valeur_Chercher, Lookat:=xlWhole)
par
Set Trouve = PlageDeRecherche.Find(Valeur_Chercher, LookIn:=xlValues, Lookat:=xlWhole)

-
Cordialement
Patrice
Messages postés
16392
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
27 février 2021
3 144
bonjour

Patrice a raison comme d'hab (bonjour, patrice) mais cette macro est très longue à exécuter sur 12000 lignes !


Déjà commencer le code par cette ligne
Application.screenupdating=false
pour la rapidité et le confort visuel

On peut tenter une solution rapide pour cela:
Mettre un extrait du classeur (env.2000 lignes) sans données confidentielles en pièce jointe sur « mon-partage.fr »
et faire un clic droit-coller le raccourci dans votre message

Dans l’attente

(ca m'occupera car bloqué à la maison par les épisodes cévenols)