Macro "Find" avec variable
rls
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir,
Je souhaiterais solliciter vote aide pour la création d'une macro,
Dans une feuille "Feuil1" j'ai une colonne D avec des nombres aléatoire (ex: 1343,4957,17023 etc... il n'y a aucun ordre logique)
Dans une feuille "Feuil2" j'ai une colonne V avec d'autre nombre aléatoire (aussi logique que ceux de la première feuille :) )
Cependant, certains nombres sont identiques dans la feuille 1 et 2, je voudrais créer une macro avec "Find" pour prendre les valeurs de la feuille 1 et les chercher dans la feuille 2. Si le nombre est trouvé alors il est mis sur fond vert dans la feuille 2, sinon rien.
Le problème est que dans "What= " il lui faut une valeur :
Cells.Find(What:= , After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Mais dans mon cas il faudrait tester toutes les valeurs une par une (Il n'y en a pas non plus 200 000 sinon j'imagine que c'est la saturation du PC qui m'attend...) j'avais pensé à une sorte de boucle peut-être
Ou bien avez-vous une autre alternative à proposez ?
Cordialement
Je souhaiterais solliciter vote aide pour la création d'une macro,
Dans une feuille "Feuil1" j'ai une colonne D avec des nombres aléatoire (ex: 1343,4957,17023 etc... il n'y a aucun ordre logique)
Dans une feuille "Feuil2" j'ai une colonne V avec d'autre nombre aléatoire (aussi logique que ceux de la première feuille :) )
Cependant, certains nombres sont identiques dans la feuille 1 et 2, je voudrais créer une macro avec "Find" pour prendre les valeurs de la feuille 1 et les chercher dans la feuille 2. Si le nombre est trouvé alors il est mis sur fond vert dans la feuille 2, sinon rien.
Le problème est que dans "What= " il lui faut une valeur :
Cells.Find(What:= , After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Mais dans mon cas il faudrait tester toutes les valeurs une par une (Il n'y en a pas non plus 200 000 sinon j'imagine que c'est la saturation du PC qui m'attend...) j'avais pensé à une sorte de boucle peut-être
Ou bien avez-vous une autre alternative à proposez ?
Cordialement
A voir également:
- Macro "Find" avec variable
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Find and mount - Télécharger - Récupération de données
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Find vba - Astuces et Solutions
3 réponses
Bonjour,
Oui.
Dans laquelle tu utilises le FIND
Voici des exemples pour FIND
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
.
j'avais pensé à une sorte de boucle peut-être
Oui.
Dans laquelle tu utilises le FIND
Voici des exemples pour FIND
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
.
Bonjour,
ci-dessous proposition d'exemple de code :
ci-dessous proposition d'exemple de code :
Sub recherche()
Dim tb(), nombre As Range, i As Long
'// Conversion des valeurs de la colonne D de la feuille 1 en un tableau à une dimension
With Feuil1.UsedRange
tb = Application.Transpose(.Columns("D").Value)
End With
'// Recherche des valeurs de la colonne V de la feuille 2 dans le tableau de feuille 1
With Feuil2.UsedRange
On Error Resume Next
For Each nombre In .Columns("V").Cells
i = 0: i = Application.Match(nombre.Value, tb, 0)
If i > 0 Then nombre.Interior.Color = 5296274
Next nombre
End With
End Sub
Cependant je vois que l'on se réfère toujours à une seule même valeur de recherche pour le "What" alors que dans mon cas cette valeur change d'une cellule à l'autre...