Comparaison de chaînes de caractères

matmat79

XLDnaute Nouveau
Bonjour,

J'ai deux chaînes de caractères dans une liste:
cellule 1 => S0900000
cellule 2 => S-11010

Si je trie les cellules par ordre croissant alors j'obtiens l'ordre suivant:
S0900000
S-11010

Si j'utilise la formule =SI("S0900000"<"S-11010";"inf";0), j'obtiens "inf".

J'en déduis donc que S0900000 < S-11010.
Je veux faire une macro vba qui teste si la valeur de la cellule est supérieure ou non à la cellule suivante.
Je fais donc
var1 = "S0900000"
var2 = "S-11010"
if var1 > var2 then print "sup"
if var1 < var2 then print "inf"

Malheureusement j'obtiens "sup", alors que je devrais obtenir "inf".
Le problème vient surement du format utilisé par excel pour faire un tri et de l'opérateur '>' qui gère la comparaison différemment sous vba. J'ai l'impression que vba convertit en nombre les chaînes, ce qui donnerait 900000 et -11010, pourtant, je n'utilise pas val().

Savez-vous comment je pourrais réaliser une comparaison des chaînes qui suive la logique du tri d'excel?

Merci

matmat
 

Gorfael

XLDnaute Barbatruc
Re : Comparaison de chaînes de caractères

Bonjour,

J'ai deux chaînes de caractères dans une liste:
cellule 1 => S0900000
cellule 2 => S-11010

Si je trie les cellules par ordre croissant alors j'obtiens l'ordre suivant:
S0900000
S-11010

Si j'utilise la formule =SI("S0900000"<"S-11010";"inf";0), j'obtiens "inf".

J'en déduis donc que S0900000 < S-11010.
Je veux faire une macro vba qui teste si la valeur de la cellule est supérieure ou non à la cellule suivante.
Je fais donc
var1 = "S0900000"
var2 = "S-11010"
if var1 > var2 then print "sup"
if var1 < var2 then print "inf"

Malheureusement j'obtiens "sup", alors que je devrais obtenir "inf".
Le problème vient surement du format utilisé par excel pour faire un tri et de l'opérateur '>' qui gère la comparaison différemment sous vba. J'ai l'impression que vba convertit en nombre les chaînes, ce qui donnerait 900000 et -11010, pourtant, je n'utilise pas val().

Savez-vous comment je pourrais réaliser une comparaison des chaînes qui suive la logique du tri d'excel?

Merci

matmat
Salut
les module VBA sont par défaut "calibrés" en Option Compare Binary
en en-têye du module met
Option Compare Text
et reteste ta macro.
Pour plus d'explication, voir l'aide VBA sur Option
A+
 

matmat79

XLDnaute Nouveau
Re : Comparaison de chaînes de caractères

Merci beaucoup pour l'explication rapide et claire.
Je vais utiliser StrComp() en précisant la méthode de comparaison Text, car j'ai d'autres comparaisons dans mon module qui doivent rester binaire.
 

Discussions similaires

Réponses
12
Affichages
576

Statistiques des forums

Discussions
312 514
Messages
2 089 225
Membres
104 069
dernier inscrit
kit.survie