Comparer deux chaines

Canard64

XLDnaute Nouveau
Comme le tire le dit si bien j'aimerais savoir comment faire pour comparer deux chaines de caractères.
Existe t il une fonction ou il faut la coder? en gros j'espère qu'ils existe un fonction du style strcpr(a,b)
Merci d'avance
 

Orodreth

XLDnaute Impliqué
Re : Comparer deux chaines

Re.


Tu as dit "Existe t il une fonction ou il faut la coder?"
Je t'ai donné une fonction.

Maintenant, si tu veux du VBA:
Code:
If [B]texte1[/B] = [B]texte2[/B] Then
...
else
...
end if

texte 1 et texte2 peuvent être remplacés par:
- textbox1.text / textbox2.text
- combobox1.value / combobox2.value
- range1.value / range2.value (soit en syntaxe range, soit en syntaxe cells)
- ...

ça te va ?
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Comparer deux chaines

Bonjour

Euh cela n'empeche pas de dire Bonjour et merci pour la réponse même si elle ne convient pas

Sinon tu veux obtenir quoi comme résultat car tu as tout simplement le signe = ou like pour comparer
 

Staple1600

XLDnaute Barbatruc
Re : Comparer deux chaines

Bonjour


Canard64 tu parles de cette fonction?


The syntax for the InStr function is:
InStr( [start], string_being_searched, string2, [compare] )
start is optional. It is the starting position for the search. If this parameter is omitted, the search will begin at position 1.
string_being_searched is the string that will be searched.
string2 is the string to search for.
compare is optional. This is the type of comparison to perform. The valid choices are: vbBinaryCompare, vbTextCompare, and vbDatabaseCompare.

PS: pas eu le temps de franciser, (faut que je surveille la cuisson des pates en meme temps)
mais dans l'aide VBA ce sera en francais
 
Dernière édition:

Canard64

XLDnaute Nouveau
Re : Comparer deux chaines

Bonjour a tous!!

Je sais pas si vous connaissez mais il existe en C et en java un fonction strcmp(chaine1,chaine2) qui compare deux chaines de caractères.
Cette meme fonction renvoie:
0 si chaine1 = chaine 2
un nombre positif chaine1>chaine2
un nombre négatif chaine1<chaine2

Je voudrais savoir si il exite une fonction similaire en VBA ce qui est le plus important c'est le coté < ou > pas le coté egal car en fait je compare des dates systeme donc elles seront jamais egale
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Comparer deux chaines

Re


Ca doit etre ca alors

Dans l'aide VBA:

StrComp, fonction

Renvoie une valeur de type Variant (Integer) indiquant le résultat d'une comparaison de chaînes.

Syntaxe

StrComp(string1, string2[, compare])

La syntaxe de la fonction StrComp comprend les arguments nommés suivants :

Élément Description
string1 Toute expression de chaîne valide.
string2 Toute expression de chaîne valide.
compare Facultatif. Indique le type de comparaison de chaînes.
Si l'argument compare est de type Null, une erreur se produit.
Si l'argument compare est omis, la valeur de l'instruction Option Compare détermine le type de comparaison.

Valeurs

L'argument compare peut prendre les valeurs suivantes :

Constante Valeur Description
vbUseCompareOption -1 Effectue une comparaison à l'aide de l'instruction Option Compare.
vbBinaryCompare 0 Effectue une comparaison binaire.
vbTextCompare 1 Effectue une comparaison de texte.
vbDatabaseCompare 2 Réservée à Microsoft Access. Effectue une comparaison basée sur les informations contenues dans votre base de données.
 
Dernière édition:

JYLL

Nous a quitté
Repose en paix
Re : Comparer deux chaines

Bonjour le fil et le Forum,

Comme te le signale Pascal, tu as cette instruction "like" dont voici l'aide:
Like, opérateur, exemple

Cet exemple utilise l'opérateur Like pour comparer une chaîne à un modèle.
Dim MyCheckMyCheck = "aBBBa" Like "a*a" ' Renvoie True.
MyCheck = "F" Like "[A-Z]"' Renvoie True.
MyCheck = "F" Like "[!A-Z]" ' Renvoie False.
MyCheck = "a2a" Like "a#a" ' Renvoie True.
MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Renvoie True.
MyCheck = "BAT123khg" Like "B?T*" ' Renvoie True.
MyCheck = "CAT123khg" Like "B?T*" ' Renvoie False.

Bon test.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Comparer deux chaines

Re


Toujours dans l'aide VBA

StrComp, fonction, exemple

Cet exemple utilise la fonction StrComp pour renvoyer les résultats d'une comparaison de chaînes. Si le troisième argument est 1, une comparaison textuelle s'effectue. Si cet argument est 0 ou s'il est omis, c'est une comparaison binaire qui est réalisée.
Dim MyStr1, MyStr2, MyComp
MyStr1 = "ABCD": MyStr2 = "abcd" ' Définit les variables.
MyComp = StrComp(MyStr1, MyStr2, 1) ' Renvoie 0.
MyComp = StrComp(MyStr1, MyStr2, 0) ' Renvoie -1.
MyComp = StrComp(MyStr2, MyStr1) ' Renvoie 1.
 

guil456

XLDnaute Nouveau
Re : Comparer deux chaines

Bonjour,

Je pense avoir bien compris la fonction like et instr mais pourtant j'ai un problème.

Voici le bout de code en question :
Dim i As Integer
i = 4
While Range("a" & i).Value <> ""


Dim Vers, Mot As String

Dim Position As Integer

Vers = UCase("*" & Range("a" & i).Value & "*")
Mot = UCase("*" & Range("A1").Value & "*")


Position = InStr(Vers, Mot)

If Position = 0 Then
Range("a" & i).EntireRow.Hidden = True
End If

i = i + 1
Wend

En a1 un mot ou un bout de mot que je souhaite cherché dans a4 à ai et masquer ainsi toutes celles qui ne le contiennent pas.

Si a1 = md
les résultats suivant devraient ne pas se masquer : fzafzMdgregeg ; mdF ; deazdazd Md deede .
Or ils se masquent ! Seul md ou Md ou MD ou mD ne se masquent pas.

Comment cela se fait - il?
Je ne comprends pas.

Merci pour votre aide.
 

Statistiques des forums

Discussions
312 393
Messages
2 087 965
Membres
103 687
dernier inscrit
olivier72