VBA TROUVER caractères spéciaux, pas REPLACE
Résolu/Fermé
Ludivine50
Messages postés
114
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
1 février 2016
-
12 févr. 2009 à 16:18
Ludivine50 Messages postés 114 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 1 février 2016 - 16 févr. 2009 à 16:56
Ludivine50 Messages postés 114 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 1 février 2016 - 16 févr. 2009 à 16:56
A voir également:
- VBA TROUVER caractères spéciaux, pas REPLACE
- Caractere speciaux - Guide
- Caractères spéciaux clavier azerty - Guide
- Caractères spéciaux mac - Guide
- Caractères ascii - Guide
- Trouver adresse mac - Guide
4 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
12 févr. 2009 à 17:18
12 févr. 2009 à 17:18
Bonjour,
essaies cette macro événementielle à placer dans le module "feuil" concerné de VBE
(dans cet exemple A1:C10 représente la zone où l'action est valide
mais pas sûr qu'apostrophe soit du genre féminin
essaies cette macro événementielle à placer dans le module "feuil" concerné de VBE
(dans cet exemple A1:C10 représente la zone où l'action est valide
Private Sub Worksheet_Change(ByVal Target As Range) Dim reg As Object Dim flag As Boolean If Not Intersect(Target, Range("A1:C10")) Is Nothing Then ' instancie Set reg = CreateObject("vbscript.regexp") reg.Pattern = "'" flag = reg.Test(target) If flag Then MsgBox "une ou plusieurs apostrophes ont été saisies dans la cellule" End If End If End Sub
mais pas sûr qu'apostrophe soit du genre féminin
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
12 févr. 2009 à 19:19
12 févr. 2009 à 19:19
bin oui c'était sur Excel, mon truc
target représente la cellule active
Mais les expressions rationnelles fonctionne aussi avec Access
comme je travaillle pas souvent avec access, je te dirai peut-être des bétises
peut être en créant une fonction booléenne avec comme param^tre , ta zone de texte ,et reverrrait False ou true
function machin(tonparam)
Dim reg As Object
Set reg = CreateObject("vbscript.regexp")
reg.Pattern = "'"
machin = reg.Test(tonparam)
end functon
target représente la cellule active
Mais les expressions rationnelles fonctionne aussi avec Access
comme je travaillle pas souvent avec access, je te dirai peut-être des bétises
peut être en créant une fonction booléenne avec comme param^tre , ta zone de texte ,et reverrrait False ou true
function machin(tonparam)
Dim reg As Object
Set reg = CreateObject("vbscript.regexp")
reg.Pattern = "'"
machin = reg.Test(tonparam)
end functon
Ludivine50
Messages postés
114
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
1 février 2016
7
13 févr. 2009 à 09:26
13 févr. 2009 à 09:26
Bonjour Michel, merci beaucoup pour ta réponse.
Je viens de tester et cela fonctionne très bien!
J'ai juste un problème: quand j'ouvre mon formulaire de recherche et que je saisie pour la première fois quelquechose dans la zone de texte que l'on va chercher après, il plante.
Pour mieux décrire le pb:
- quelqu'un fait sa recherche et saisie EGLISE -->la recherche fonctionne
- quelqu'un fait une deuxieme recherche et saisie L'EGLISE --> MsgBox("Merci de saisir une expression sans apostrophe")
- quelqu'un fait une troisieme recherche et saisie MAIRIE --> la recherche fonctionne
- fermeture du formulaire de recherche
- réouverture du formulaire de recherche
- saisie dans la zone de texte de n'importe quel caractère (sans cliquer sur le bouton qui lance ma procédure de recherche)--> Message d'erreur:
ça ne fait cela que à la première saisie, et après cela fonctionne.
Je ne comprends pas pourquoi il garde en mémoire "L'EGLISE", alors que la dernière saisie était "MAIRIE", et pourquoi il continue à bloquer là-dessus.
Qu'en penses-tu?
Je viens de tester et cela fonctionne très bien!
J'ai juste un problème: quand j'ouvre mon formulaire de recherche et que je saisie pour la première fois quelquechose dans la zone de texte que l'on va chercher après, il plante.
Pour mieux décrire le pb:
- quelqu'un fait sa recherche et saisie EGLISE -->la recherche fonctionne
- quelqu'un fait une deuxieme recherche et saisie L'EGLISE --> MsgBox("Merci de saisir une expression sans apostrophe")
- quelqu'un fait une troisieme recherche et saisie MAIRIE --> la recherche fonctionne
- fermeture du formulaire de recherche
- réouverture du formulaire de recherche
- saisie dans la zone de texte de n'importe quel caractère (sans cliquer sur le bouton qui lance ma procédure de recherche)--> Message d'erreur:
Erreur de syntaxe (opérateur absent) dans l'expression '[num] like '*L'EGLISE*' or [adresse] like '*L'EGLISE*' ....
ça ne fait cela que à la première saisie, et après cela fonctionne.
Je ne comprends pas pourquoi il garde en mémoire "L'EGLISE", alors que la dernière saisie était "MAIRIE", et pourquoi il continue à bloquer là-dessus.
Qu'en penses-tu?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
13 févr. 2009 à 09:35
13 févr. 2009 à 09:35
bonjour,
comme je te l'ai dit, je travaille rarement sur Access..
pistes sans garantie:
peut-être nettoyer la zone si erreur
abandonner le système "fonction" et passer en procédure "after up date"
comme je te l'ai dit, je travaille rarement sur Access..
pistes sans garantie:
peut-être nettoyer la zone si erreur
abandonner le système "fonction" et passer en procédure "after up date"
Ludivine50
Messages postés
114
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
1 février 2016
7
13 févr. 2009 à 09:46
13 févr. 2009 à 09:46
J'ai ajouté une ligne de commande pour nettoyer la zone mais ça ne change rien.
La procédure after up date, je ne connais pas. Cela est compliqué?
La procédure after up date, je ne connais pas. Cela est compliqué?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
13 févr. 2009 à 12:40
13 févr. 2009 à 12:40
Re
En mode création du formulaire-
-sélectionne ton contrôle où tu test l'apostrophe
-propriété- événement
coche "après MAJ"
sur le bouton "trois points" sélectionnes "générateur code"
voila le code :(remplace "s_mel" (nom de mon appli qui vérifiait la syntaxe d'un e-mail) par le nom de ton contrôle
bin tout ça, ça m'aura permis de me replonger dans Access, d'où le délai!
En mode création du formulaire-
-sélectionne ton contrôle où tu test l'apostrophe
-propriété- événement
coche "après MAJ"
sur le bouton "trois points" sélectionnes "générateur code"
voila le code :(remplace "s_mel" (nom de mon appli qui vérifiait la syntaxe d'un e-mail) par le nom de ton contrôle
Private Sub s_mel_AfterUpdate() Dim reg As Object Dim flag As Boolean If [s_mel] > 0 Then Set reg = CreateObject("vbscript.regexp") reg.Pattern = "'" flag = reg.Test([s_mel]) If flag Then MsgBox "une ou plusieurs apostrophes ont été saisies dans la cellule" End If End If Set reg = Nothing End Sub
bin tout ça, ça m'aura permis de me replonger dans Access, d'où le délai!
Ludivine50
Messages postés
114
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
1 février 2016
7
13 févr. 2009 à 20:22
13 févr. 2009 à 20:22
Zut! Je voulais tester ce soir, mais les tables de ma bd sont liées à SQL SERVER, et là j'ai pas accès à la base...
Du coup, je testerais lundi.
Je vais faire un peu différemment, car j'ai codé toute la recherche en VB. Le formulaire est fait par Access, mais après, c'est que du VB. Mais je vais réussir à m'en dépatouiller je pense.
Je te remercie, je te souhaite un bon WE, et te dit à lundi! ;-)
Du coup, je testerais lundi.
Je vais faire un peu différemment, car j'ai codé toute la recherche en VB. Le formulaire est fait par Access, mais après, c'est que du VB. Mais je vais réussir à m'en dépatouiller je pense.
Je te remercie, je te souhaite un bon WE, et te dit à lundi! ;-)
Ludivine50
Messages postés
114
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
1 février 2016
7
16 févr. 2009 à 16:56
16 févr. 2009 à 16:56
Bonjour Michel, je viens de tester mais ça n'a rien changé: il affiche toujours un message d'erreur la 1ere fois que j'ouvre le formulaire de recherche. Du coup, j'ai testé de le recréer complètement. Un peu long mais je crois que je n'ai pas d'autre solution, le formulaire a l'air verrolé. D'ailleurs, avant il n'arrivait pas à chercher s'il y avait un espace dans la saisie, maintenant il y arrrive!
Je te remercie pour ton aide Michel.
Bonne journée
Je te remercie pour ton aide Michel.
Bonne journée
12 févr. 2009 à 18:05
Je travaille sous Access et apparemment VB Access ne reconnaît pas la fonction Intersect.
Mais je ne savais pas quoi faire de Target, c'est peut-être là que je le suis trompée?