Sécuriser formule VBA - tri dans chaine de caractère

Tonino7

XLDnaute Occasionnel
Bonjour à tous,

j'ai une chaine de caractère representée comme une variable sous VBA. Et je souhaite controle tous les caractère de cette chaines afin de savoir s'ils sont autorisés ou non :
mon code :
Code:
For i = 1 To Len(FormulaBasic)
If Mid(FormulaBasic, i, 1) <> "#" or Mid(FormulaBasic, i, 1) <> "[" or Mid(FormulaBasic, i, 1) <> "]" Then

MsgBox "are authorized only the characters:[]#", vbExclamation, "Attention!"
Exit Sub
End If
Next i
mais cela ne marche pas, et avez vous une solution plus concise avec un genre de Array ou quelquechose comme ça. Je suis bloqué depuis plusieurs heures!

merci d'avance
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Sécuriser formule VBA - tri dans chaine de caractère

Bonjour JNP

Merci de me rejoindre dans le monde de regexp ;)

Il y a un pattern plus simple pour n'avoir que de l'alphanumérique

voir Lien supprimé

ce qui pourrait nous aider en inversant la logique non ?

(puisque qu'on veut tout sauf de l'alphanumérique mais seulement []# )

PS: j'ai testé ton code mais pas de Msgbox qui s'affiche si je change s en "[]#"
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Sécuriser formule VBA - tri dans chaine de caractère

Re :),
Merci de me rejoindre dans le monde de regexp ;)
De rien :rolleyes:...
Il y a un pattern plus simple pour n'avoir que de l'alphanumérique
voir Lien supprimé
ce qui pourrait nous aider en inversant la logique non ?
(puisque qu'on veut tout sauf de l'alphanumérique mais seulement []# )
Non, si tu regardes son Array, il faut accepter
Code:
[]#+/-*=0123456789<>$().
d'où l'utilisation d'une classe (entre crochet), avec un ^ pour traduire l'exclusion, et des \ pour les caractères qui sont déjà utilisés par RegExp :D.
PS: j'ai testé ton code mais pas de Msgbox qui s'affiche si je change s en "[]#"
Normal vu que # fait partie des caractères acceptés :eek:
A + :cool:
 

Staple1600

XLDnaute Barbatruc
Re : Sécuriser formule VBA - tri dans chaine de caractère

Re

PS: j'ai testé ton code mais pas de Msgbox qui s'affiche si je change s en "[]#"
Normal vu que # fait partie des caractères acceptés :eek:
Passer d'un montage d'une maison en Lego pour un enfant de 4 ans
à regexp dans la foulée sans avoir pris son café peut avoir des conséquences fâcheuses :eek:

Ca y est JNP, je suis repassé en mode Excel, option vbscript.regexp

Je vois que tu gazes plus vite que moi dans les patterns "regexpiens".

Tes neurones ont du être élevés en plein air et sans hormones
(contrairement aux miens)
 

Paritec

XLDnaute Barbatruc
Re : Sécuriser formule VBA - tri dans chaine de caractère

Bonjour Les Jean Noël et JM
alors comment on le fait ce Pattern
premier caractère " puis ensuite pour chercher [ on ajoute derrière \ ?
et si maintenant on veux [] on mets "[]\ ????
je ne pense pas que c'est cela car ce serait trop simple
à vous lire pour explications détaillées SVP
merci à vous deux
a+
papou :confused:
 

Staple1600

XLDnaute Barbatruc
Re : Sécuriser formule VBA - tri dans chaine de caractère

Bonjour Paritec

Alors pour commencer l'immersion dans regexp
commencer ici par exemple

En l'occurrence ici, je voudrais dans le pattern utilisé ceci : \d
(qui n'autorise que les chiffres , version abrégée de [0-9])
donc: "\d" et après cela se complique

(je crois que je vais retourner faire un coup de Lego ;) )

Exemple:
Code:
Sub rxp(choix As Boolean)
Dim s$, s1$
s = "1234567890"
s1 = "abcdefg"
With CreateObject("vbscript.regexp")
    .Global = True
    '.Pattern = "[^\[\]#\+/\-\*=0-9<>$\(\)\.]" [COLOR=Green]'pattern JNP[/COLOR]
    .Pattern = "\d"
    If .test(IIf(choix, s, s1)) = True Then MsgBox "Test"
End With
End Sub
Code:
Sub test()
rxp True
rxp False
End Sub
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Sécuriser formule VBA - tri dans chaine de caractère

Re Jean Marie Jean Noël,
je ne veux pas m'immerger, seulement essayer de comprendre et de l'utiliser si pas une galère a gérer je vais lire ton lien
a+
papou :)

EDIT: JM le tuto franchement très bien et pour une fois expliqué avec des mots simple , de là a pouvoir faire un pattern sans lire le tuto à chaque fois il y a une marge mais bon.
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Sécuriser formule VBA - tri dans chaine de caractère

Re JM, salut Pascal :),
Ca y est JNP, je suis repassé en mode Excel, option vbscript.regexp
Je vois que tu gazes plus vite que moi dans les patterns "regexpiens".
Tes neurones ont du être élevés en plein air et sans hormones
(contrairement aux miens)
J'avoue que j'ai trouvé un très bon tuto ICI où d'ailleurs, il y a de la caféine :p...
Donc Pascal, si tu veux te faire une idée, ça a beau être pour Access, c'est compatible VBA. Et chapeau à celui qui a fait le tuto.
Bonne continuation :cool:
 

Staple1600

XLDnaute Barbatruc
Re : Sécuriser formule VBA - tri dans chaine de caractère

Re


Cela n'a rien ne galère, il faut juste être très rigoureux

et savoir définir des patterns en sachant utiliser la syntaxe de regexp.

(c'est là que mes neurones patinent dans la semoules )
 

Staple1600

XLDnaute Barbatruc
Re : Sécuriser formule VBA - tri dans chaine de caractère

Re

JNP, oui je cite ce tuto de caféine dans une de mes réponses sur ce fil
(cafeine étant d'ailleurs membre d'XLD)

Mais malheureusement cafeine ne vient plus souvent sur XLD.

Mais mainteant que JNP et Paritec sont dans la place, je vais moins galérer avec mon regexp sous le coude ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 346
Membres
103 525
dernier inscrit
gbaipc