Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1573 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comparaison de chaîne de caractère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comparaison de chaîne de caractère

n°1391505
acorsa
Posté le 20-06-2006 à 14:55:17  profilanswer
 

Bonjour,  
J'ai une macro qui offre la possibilité à l'utilisateur d'entrer des mots dans un fichier excel, si le mot est déjà présent on ne le rentre pas à nouveau.
Le problème c'est que par exemple:"réactif" et "Réactif" sont considérés comme différents!
Voilà ma comparaison :  
 
If LCase(Trim(Selection.Text)) = LCase(Trim(objexcel.ActiveCell.Offset(cpt, 0).Value)) Then
  MsgBox "Identiques"
Else  
  MsgBox"Différents"
EndIf
 
Quand je fais afficher les 2 mots ils sont pourtant bien identiques, tous les 2 en minuscules...
 
Si vous avez la solution...


Message édité par acorsa le 20-06-2006 à 14:58:02
mood
Publicité
Posté le 20-06-2006 à 14:55:17  profilanswer
 

n°1391577
tegu
Posté le 20-06-2006 à 15:58:19  profilanswer
 

Si je fais :
? lcase$("réactif" ) = lcase$("Réactif" )
en fenêtre de debug, j'obtiens bien Vrai
 
Donc tes valeurs ne sont pas ce qu'elles paraissent.
Comment as-tu vu que les valeurs sont « bonnes », en minuscules ?

n°1391594
kiki29
Posté le 20-06-2006 à 16:16:46  profilanswer
 

Tres sommaire ... mais qui marche


Private Sub Recherche(ByVal Cible As Range)
    If Application.CountIf(Range("A:B" ), Cible.Value) > 1 Then
       ' message pour signaler que l'entrée existe déjà
    Else
       ' procedure pour insérer le mot
    End If
End Sub
 
Sub test()
    Cells(1, 3) = "réactif"
    Recherche (Cells(1, 3))
End Sub


Message édité par kiki29 le 20-06-2006 à 17:30:06
n°1391603
acorsa
Posté le 20-06-2006 à 16:22:36  profilanswer
 

Tegu: ben j'ai fais :
MsgBox LCase(Trim(Selection.Text)) et  
MsgBox LCase(Trim(objexcel.ActiveCell.Offset(cpt, 0).Value))
et je vois que les mots sont identiques...

n°1391617
tegu
Posté le 20-06-2006 à 16:36:14  profilanswer
 

Et si tu fais :
? LCase(Trim(Selection.Text)) = LCase(Trim(objexcel.ActiveCell.Offset(cpt, 0).Value))  
 
ça te donne quoi ?
Utilise les fonctions avec le $ à la fin sinon tu récupères des variants et pas des String dans ta comparaison. Ça peut jouer.

n°1391635
acorsa
Posté le 20-06-2006 à 16:54:21  profilanswer
 

ça me renvoie Faux!Et j'ai ajouté $.Est-ce-que tu penses que la police ou le style peut jouer? ça serait dingue ms bon...

n°1391657
kiki29
Posté le 20-06-2006 à 17:20:07  profilanswer
 

A mettre dans Module d'une feuille


Private Sub Worksheet_Change(ByVal Cible As Range)
    ' pour la colonne 1 =>  Range("A:A" )
    If Cible.Column = 1 Then
        Cible.Value = Trim(Cible.Value)
        If Len(Cible.Value) > 0 Then
            If Application.CountIf(Range("A:A" ), Cible) > 1 Then
                Cible.Value = ""
                Cible.Select
            End If
        End If
    End If
End Sub


Message édité par kiki29 le 23-06-2006 à 18:00:06
n°1391665
acorsa
Posté le 20-06-2006 à 17:34:34  profilanswer
 

Merci kiki ms je dois faire tourner cette macro sur pleins de poste et je me sert de cette comparaison ds mon code dc c peut-être pas la solution la plus simple non??

n°1391684
kiki29
Posté le 20-06-2006 à 17:54:33  profilanswer
 

A priori oui, mais il faudrait tester pour l'évaluer
par contre elle marche ...


Message édité par kiki29 le 20-06-2006 à 22:54:15
n°1393714
nexius26
Yeah !!!!!!!!!
Posté le 23-06-2006 à 15:28:09  profilanswer
 

As tu penser a utiliser "Like" ??
 
if chainetest like référence-de-test then
    msgbox("Bingo c'est gagné" )
else
    msgbox(" Ululu tu l'as dans le c**" )
endif
 
J'ai pas trop compris les autres réponses mais il me semble que dans ton premier post c'est bien ce genre de réponse que tu veux obtenir

mood
Publicité
Posté le 23-06-2006 à 15:28:09  profilanswer
 

n°1393755
acorsa
Posté le 23-06-2006 à 16:08:18  profilanswer
 

lol voilà t'as tout compris..je crois que j'avais déjà essayé. Mais je vais quand même tester et je te dirai...
Merci!

n°1393775
JihemAir
Je sais pas
Posté le 23-06-2006 à 16:22:10  profilanswer
 

Utilise la fonction:
strcomp avec l'option vbTextCompare. Elle ignore les majuscules/minuscules.

n°1393897
nexius26
Yeah !!!!!!!!!
Posté le 23-06-2006 à 17:49:57  profilanswer
 

ya Ucase qui transforme tout en Maj et même les é en


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comparaison de chaîne de caractère

 

Sujets relatifs
Récupérer une chaine entière stocké dans l'URL[JAVA/Postgresql] Caractère d'échappement
[JAVA/Postgresql] Caractère d'échappementopération sur chaîne
Comparaison attribut d'élément[Access] Masque de saisie et reconnaissance chaine de caractères
Chaine de caractère espaceDebutant - Comparaison de chaine de caractère
comparaison de deux chaine de caractere[ASP-VB]comparaison de chaine de caractère!!
Plus de sujets relatifs à : Comparaison de chaîne de caractère


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR