[VBA]Comparaison de chaines suite à un tri. [RESOLU]

Comparaison de chaines suite à un tri. [RESOLU] [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 27-08-2007 à 13:04:49    

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


Message édité par matmat79 le 27-08-2007 à 14:33:24
Reply

Marsh Posté le 27-08-2007 à 13:04:49   

Reply

Marsh Posté le 27-08-2007 à 14:07:55    

StrComp ?

Reply

Marsh Posté le 27-08-2007 à 14:30:56    

Merci pour la réponse et voici un complément d'explication trouvé sur un autre site.
 
Le problème vient du fait que les module VBA sont par défaut "calibrés" en Option Compare Binary.
Il y a donc deux solutions:
- ajouter en entête du module => Option Compare Text qui impacte le type de comparaison par défaut pour tout le module
ou
- utiliser StrComp avec la méthode "Text" (ce que je vais faire)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed