[Catégorie modifiée VB6 -> VBA] [VB] comparer deux variables avec LIKE [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 14 novembre 2000
Statut
Membre
Dernière intervention
24 mai 2010
-
Messages postés
5
Date d'inscription
mardi 14 novembre 2000
Statut
Membre
Dernière intervention
24 mai 2010
-
Bonjour,

Comment le titre l'indique je souhaiterais comparer deux cellules avec l'opérateur LIKE puisqu'elle l'une des deux cellules ne sera pas exactement identique à la première mais contiendra des suite de caractères communs.

En gros voici ce que j'essaie de faire :

J'ai un tableau comme ceci sur une feuille appelée temps_moyens :


je souhaite récupérer les temps indiqué selon si une cellule d'une autre feuille LIKE une des cellules de la colonne A.

Je ne trouve pas de code permettant d'utilisé LIKE avec les variables, voici en gros ce que j'ai trouvé et qui ne marche pas non plus. Le but étant que je puisse ensuite rajouter des nouvelles ligne au tableau.

Sub tpsmoyenprevi(ligneplan)
    
    Dim vide
    vide = ""

    With Worksheets("Temps moyens").Range("A:A")
        Set A = .Find(vide, LookIn:=xlValues, LookAt:=xlWhole)
        nblt = A.Row - 1
        'nblt = nbre  de lignes entammée dans tps moyens
    End With
    
    With Worksheets("Planning")
     'temps en jour (dépendant de la pièce) (feuille temps moyens)
    For n = 2 To nblt Step 1
    
    'Supprimer les 7 premiers caractères
    
        If InStr(1, Mid(Range("A" & n), 2), Mid(Range("D" & ligneplan), 1), vbTextCompare) <> 0 Then
        Range("L" & ligneplan).Formula = "='Temps moyens'!B " & n 'moulage
        Range("Q" & ligneplan).Formula = "='Temps moyens'!C " & n 'refroidissement
        Range("T" & ligneplan).Formula = "='Temps moyens'!D " & n 'tthe+coupage
        Range("X" & ligneplan).Formula = "='Temps moyens'!E " & n 'ebarbage1
        'Range("?" & ligneplan).Formula = "='Temps moyens'!F "& n 'usinage
        Range("AA" & ligneplan).Formula = "='Temps moyens'!G " & n 'ebarbage2
        End If
    Next n
    

    
    End With
    
    'temps en jour
    
End Sub



Pourriez vous m'aider svp ?

Merci d'avance.

5 réponses

Messages postés
5
Date d'inscription
mardi 14 novembre 2000
Statut
Membre
Dernière intervention
24 mai 2010

Voici la solution pour un potentiel intéressé.
If InStr(UCase(Worksheets("Temps moyens").Range("A" & n)), UCase(Trim(Worksheets("Planning").Range("D" & ligneplan)))) > 0 Then ...
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Salut
Like s'utilise dans VB comme cela :
If maChaine Like "*toto*" Then  ' n'importe où dans la chaine
If maChaine Like "toto*" Then   ' en début de la chaine
If maChaine Like "*toto" Then   ' en fin de la chaine

Attention : Like tient compte des min/maj : il ne trouvera pas "toto" dans "Toto Martin"
Voir LCase et UCase

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
5
Date d'inscription
mardi 14 novembre 2000
Statut
Membre
Dernière intervention
24 mai 2010

Merci, j'ai déjà vu cela, mais en fait ce que je cherche à faire est de comparer deux variable contenant du texte.
Exemple

IF Range("B" & ligne).Value LIKE Range("C" & ligne).value THEN ...
Messages postés
5
Date d'inscription
mardi 14 novembre 2000
Statut
Membre
Dernière intervention
24 mai 2010

(désolé je n'arrive pas à éditer)

J'ai essayer ceci qui ne marche pas, suis-je sur la bonne piste ?

        If InStr(1, Mid(Worksheets("Temps moyens").Range("A" & n), 2), Mid(Worksheets("Planning").Range("D" & ligneplan), 1), vbTextCompare) <> 0 Then
Messages postés
5
Date d'inscription
mardi 14 novembre 2000
Statut
Membre
Dernière intervention
24 mai 2010

Svp, j'ai eu beau chercher et chercher je ne trouve toujours pas de solution, et j'en ai réellement besoin ...