Fonction chr
JLM
-
JLM -
JLM -
voilà mon problème de syntaxe :
dans la ligne :
if left(text1 1)=chr(65) or left(text1,)=chr(69) or, etc( pour une dizaine de code ascii)
comment éviter la répétition de left(text1,1) à chaque fois, ça fait un peu lourd.
merci de votre aide
dans la ligne :
if left(text1 1)=chr(65) or left(text1,)=chr(69) or, etc( pour une dizaine de code ascii)
comment éviter la répétition de left(text1,1) à chaque fois, ça fait un peu lourd.
merci de votre aide
3 réponses
-
Bonjour,
Je ne fais pas de VB/VBA ;-) mais quand on cherche autour de ce sujet, en pensant à des solutions commeif a in (1,2,5)
ouif a=1 or 2 or 5
on trouve que ces syntaxes ne sont pas prises en compte.
Par contre on trouve une solution avecselect case a
ou unif Instr()
qui semble plus ardu : https://stackoverflow.com/questions/32503099/how-to-check-against-a-list-of-values-in-an-if-statement
Si cela peut te donner une piste ...
-
En VB6/VBA, tu as au moins 2 méthodes :
- Soit utiliser Instr (pour rechercher ton caractères dans une autre chaine)
- Soit mettre la valeur obtenue par ton Left(..) dans une variable tampon pour n'utiliser que cette variable dans ton IF.
Et à la place de chr pour ces codes, préfères utiliser le caractère directement : 65-> A 69 ->E, ... Ce sera plus facilement lisible sir le but est de trouver le caractère.
-
-
J'ai trouvé ça
Dim LT As String LT = Left(Text1, 1) Select Case LT Case Is = Chr(65) M = MsgBox("résolu ?") 'essai Case Is = Chr(69) M = MsgBox("c'est bon ! ") 'essai 'case is = etc End Select
Ca marche et c'est plus clair !
Merci jee pee -
J'ai trouvé encore plus simple
Dim LT1 LT1 = Left(Text1, 1) Select Case LT1 Case Is = Chr(65), Chr(69), Chr(73), Chr(79), Chr(85), Chr(140), Chr(200), Chr(201), Chr(202) End Select
je pense que les virgules font office de OR
j'ai raison ?
en tout cas ça marche aussi
merci tout le monde