Valeur est égale à une valeur ou une autre

ccvr -  
f894009 Messages postés 17277 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

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 

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?

0
ccvr
 

oui enfaite ils correspondent chacun à une valeur dans une cellule

0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > ccvr
 

Re,

Est-ce que ces deux mots sont toujours en "couple" dans les cellules?

ex:

M1=a, M2=z

a z

ax  ?

az

sz  ?

a ou z ne sont jamais avec un autre mot 

0
ccvr > f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention  
 

oui il peut y avoir a et z , a et x, s et z 

ca peut changer 

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

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

0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 

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 Sub

A 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.

0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 

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

0