Valeur est égale à une valeur ou une autre
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite recherchée une certaine valeur dans une colonne d'un fichier excel. Cependant, cette valeur a deux mots et ces deux mots peuvent être espacés ou collés.
J'aimerai déclarer cette valeur en mode est égale à valeur1(celle avec espace) ou à valeur2( celle sans espace)
Pour pouvoir ensuite avec un Find rechercher cette valeur dans ma colonne ( la méthode du find est acquise pour moi)
Merciii
4 réponses
-
Bonjour,
ces deux mots peuvent être espacés ou collés.
Est ce que le premier mot ou le deuxieme peuvent etre associes avec un autre mot dans une cellule?
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
Quand le Find devient complexe, il est préférable de faire une boucle VBA qui vérifie chaque valeur en utilisant un critère aussi complexe que nécessaire.
Comme expliqué dans le paragraphe avant "Exemples", ici: https://docs.microsoft.com/fr-fr/office/vba/api/Excel.Range.Find
-
Re,
Une boucle avec deux like
Sub test() Valeur1 = "a" Valeur2 = "z" For n = 1 To 7 If Cells(n, 1) Like "*" & Valeur1 & "*" And Cells(n, 1) Like "*" & Valeur2 & "*" Then MsgBox Cells(n, 1) End If Next n End SubA vous d'adapter vu que nous ne savons pas ce que en ferez.
Si les deux valeurs sont inversees ex: za ou z a il y a detection
EDIT : Basic sélectionné pour la coloration.
-
Bonjour,
Une facon de faire avec find
Sub test_2() Valeur1 = "a" Valeur2 = "z" Valeur = "*" & Valeur1 & "*" & Valeur2 & "*" Set Plage = Range("A1:A10") Set cell = Plage.Cells.Find(what:=Valeur, LookAt:=xlPart) If cell Is Nothing Then msg = Valeur & " n'existe pas" Else msg = "Valeur: " & Valeur & "-->" & cell.Address End If MsgBox msg End Sub 'celle que j'utilise pour recherches multiples Sub test_3() Valeur1 = "a" Valeur2 = "z" Valeur = "*" & Valeur1 & "*" & Valeur2 & "*" Set Plage = Range("A2:A10") Nb = Application.CountIf(Plage, Valeur) If Nb > 0 Then lig = 1 Adr = Columns(1).Find(Valeur, Cells(lig, 1), , LookAt:=xlPart).Address msg = "Valeur: " & Valeur & "-->" & Adr Else msg = Valeur & " n'existe pas" End If MsgBox msg End Sub