OVH Cloud OVH Cloud

Souci avec StrConv

9 réponses
Avatar
Ayrton [ASC]
Bonsoir à tous,

Voilà mon problème : j'ai un formulaire de saisie qui contient une
dizaine de champs de saisie plus cases à cocher ;dans ce form, j'ai un
controle texte nommé Adresse ;dans l'évènement after_Update de ce
controle, j'ai : Adresse=Strconv(Adresse.Value,Vbpropercase) ; et ça
fonctionne très bien, après la maj de ce controle, les premières lettres
des mots sont bie nen majuscule.

Par contre, j'ai une zone de liste déroulante avec la fonction NotInList
; quand je fais :
MaZoneDeListe=StrConv(MaZoneDeListe.Value,VbPropercase), il ne se passe
rien ;-( Rien ne se met en majuscule ; j'ai essyé dans une requête
:StrConv([MaZoneDeListe],3) et ça marche !
Pourquoi ça ne fonctionne pas en vba ? Ca marche avec ma zone de texte
mais pas avec ma zone de liste déroulante ; est ce normal ou t a t'il
une autre manip à faire ? Parce que là, je ne comprends plus bien ce qui
se passe ! ;-(

Merci à vous

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm

9 réponses

Avatar
Raymond [mvp]
Bonsoir.

pour la zone de liste il faudrait modifier la source de la liste et non la
valeur de la liste. il faut que tu places ton strconv dans la requête source
de ta liste.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Ayrton [ASC]" a écrit dans le message de news:
%23Z%
Bonsoir à tous,

Voilà mon problème : j'ai un formulaire de saisie qui contient une dizaine
de champs de saisie plus cases à cocher ;dans ce form, j'ai un controle
texte nommé Adresse ;dans l'évènement after_Update de ce controle, j'ai :
Adresse=Strconv(Adresse.Value,Vbpropercase) ; et ça fonctionne très bien,
après la maj de ce controle, les premières lettres des mots sont bie nen
majuscule.

Par contre, j'ai une zone de liste déroulante avec la fonction NotInList ;
quand je fais : MaZoneDeListe=StrConv(MaZoneDeListe.Value,VbPropercase),
il ne se passe rien ;-( Rien ne se met en majuscule ; j'ai essyé dans
une requête :StrConv([MaZoneDeListe],3) et ça marche !
Pourquoi ça ne fonctionne pas en vba ? Ca marche avec ma zone de texte
mais pas avec ma zone de liste déroulante ; est ce normal ou t a t'il une
autre manip à faire ? Parce que là, je ne comprends plus bien ce qui se
passe ! ;-(

Merci à vous

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm


Avatar
Ayrton [ASC]
Bonjour *Raymond [mvp]*
Dans ton message de news:e%239eq$,
Tu as pensé très fort :-(*)
Bonsoir.

pour la zone de liste il faudrait modifier la source de la liste et
non la valeur de la liste. il faut que tu places ton strconv dans la
requête source de ta liste.


Bonsoir Raymond,

Ma zone de liste n'a pas de requête source ; la source de cette liste
est un champ de ma table ; dans "Contenu", j'ai essayé de rajouter dans
la requête mon StrConv mais ça ne fonctionne pas ;-(
Merci quand même

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm

Avatar
Jessy Sempere [MVP]
Bonjour

Si je comprends bien, tu veux faire cette mise à jour sur l'événement
NotInList ???

Si c'est bien le cas, le principe, c'est que lorsque tu tapes une valeur
dans ta zone de liste qui n'existe pas, tu vas la rajouter à l'aide
de cet événement. Si on considère que ta liste est basée sur une table,
il te suffit de faire une requête ajout dans VBA en utilisant dans cette
requête, la fonction strConv() pour insérer dans ta table la donnée avec
les bonnes majuscules. (c'est ce que disais Raymond...)

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Ayrton [ASC]" a écrit dans le message de
news:
Bonjour *Raymond [mvp]*
Dans ton message de news:e%239eq$,
Tu as pensé très fort :-(*)
Bonsoir.

pour la zone de liste il faudrait modifier la source de la liste et
non la valeur de la liste. il faut que tu places ton strconv dans la
requête source de ta liste.


Bonsoir Raymond,

Ma zone de liste n'a pas de requête source ; la source de cette liste
est un champ de ma table ; dans "Contenu", j'ai essayé de rajouter dans
la requête mon StrConv mais ça ne fonctionne pas ;-(
Merci quand même

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm




Avatar
Ayrton [ASC]
Bonjour *Jessy Sempere [MVP]*
Dans ton message de news:437c35db$,
Tu as pensé très fort :-(*)
Bonjour


Bonsoir,
Si je comprends bien, tu veux faire cette mise à jour sur l'événement
NotInList ???


Parfaitement ;-)

Si c'est bien le cas, le principe, c'est que lorsque tu tapes une
valeur dans ta zone de liste qui n'existe pas, tu vas la rajouter à
l'aide
de cet événement. Si on considère que ta liste est basée sur une
table, il te suffit de faire une requête ajout dans VBA en utilisant
dans cette requête, la fonction strConv() pour insérer dans ta table
la donnée avec les bonnes majuscules. (c'est ce que disais Raymond...)


D'accord ; mes excuses à Raymond car je n'avais pas compris ça ; je m'en
vais tester de ce pas.......;-)
Comme je ne sais pas faire ça dans VBA, je vais essayer ma requête ajout
dans la fenêtre normale de création de requête ; je reviendrais te dire
après mon essai
Merci Jessy

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm

Avatar
Ayrton [ASC]
Re Jessy,

Bon, ça ne marche pas mais je crois que je me suis mal exprimé ;-)
En fait, je ne veux pas que StrConv se fasse sur l'évènement NotInList ;
dans ma zone de liste déroulante où il y a donc l'évènement NotInList,
j'aimerais que sur l'évènement After_Update de cette même zone de liste
déroulante la fonction StrConv s'éxécute ; ça marche sur une zone de
texte que j'ai dans ce même formulaire mais je n'arrive pas à la faire
fonctionner sur ma zone de liste déroulante; tout ça pour que les gens
ne s'ennuient pas ( et mopi non plus d'ailleurs ! ;-) ) à taper
systématiquement la première lettre du nom du client en majuscule; cela
permettrait donc de tout taper en minuscule et en sortie de cette liste,
hop la première lettre se met en majuscule.
Voilà où est mon souci

Avec encore toutes mes excuses pour m'être expliqué comme un manche ;-)

Merci d'avance

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
Avatar
3stone
Salut,

"Ayrton [ASC]"
[...]
| j'aimerais que sur l'évènement After_Update de cette même zone de liste
| déroulante la fonction StrConv s'éxécute ; ça marche sur une zone de
| texte que j'ai dans ce même formulaire mais je n'arrive pas à la faire
| fonctionner sur ma zone de liste déroulante; tout ça pour que les gens
| ne s'ennuient pas ( et mopi non plus d'ailleurs ! ;-) ) à taper
| systématiquement la première lettre du nom du client en majuscule; cela
| permettrait donc de tout taper en minuscule et en sortie de cette liste,
| hop la première lettre se met en majuscule.


Ta zone de liste a une source... ok ?
Une table ? D'accord !

Si tu sélectionne un item de la liste et que dans l'évenement "après mise à jour"
tu souhaite obtenir l'item sélectionné en "vbProperCase" tu as le problème que
lors de l'après mise à jour, la liste possède encore le focus !

Il te faut donc utilisé la propriété .text au lieu de .value

Me.LaListe = StrConv(Me.LaListe.Text, vbProperCase)

et cela fonctionne... en partie ;-(

Car, en modifiant la valeur sélectionnée tu obtient une superbe erreur
qui te dit que la valeur ne fait pas partie de la liste....
Ben oui ! Puisque tu l'as modifiée...


Par contre, tu peux ajouter cela dans la fonction qui te permets
les ajouts dans une liste (le fameux not in list)

Dans la fonction suivante:
http://www.3stone.be/access/articles.php?lng=fr&pgI
tu pourrais modifier ainsi:

CurrentDb.Execute "INSERT INTO LaTable(LeChamp) " _
& "SELECT """ & StrConv(NewData,vbProperCase & """ ;"

Au besoin, faire une mise à jour de la table pour les données déjà saisie.



ou j'ai rien compris à ton souhait ;-))


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Ayrton [ASC]
Bonjour *3stone*
Dans ton message de news:,
Tu as pensé très fort :-(*)
Salut,


Salut 3stone,

Ta zone de liste a une source... ok ?
Une table ? D'accord !

Si tu sélectionne un item de la liste et que dans l'évenement "après
mise à jour" tu souhaite obtenir l'item sélectionné en "vbProperCase"
tu as le problème que lors de l'après mise à jour, la liste possède
encore le focus !

Il te faut donc utilisé la propriété .text au lieu de .value

Me.LaListe = StrConv(Me.LaListe.Text, vbProperCase)

et cela fonctionne... en partie ;-(

Car, en modifiant la valeur sélectionnée tu obtient une superbe erreur
qui te dit que la valeur ne fait pas partie de la liste....
Ben oui ! Puisque tu l'as modifiée...


Ben oui mais je me suis fait avoir car j'avais essayé comme ça ;-(
^
Par contre, tu peux ajouter cela dans la fonction qui te permets
les ajouts dans une liste (le fameux not in list)

Dans la fonction suivante:
http://www.3stone.be/access/articles.php?lng=fr&pgI
tu pourrais modifier ainsi:

CurrentDb.Execute "INSERT INTO LaTable(LeChamp) " _
& "SELECT """ & StrConv(NewData,vbProperCase
& """ ;"


Eh beon oui, ça va mieux comme ça ;-) J'ai testé avant de répondre et
c'est génial de chez génial ! ! Ca marche ; honnêtement, je n'aurais
jamais pensé à mettre strConv dans la fonction NotInList ; la seule
chose que j'arrivais à faire, c'est une requête Mise à Jour avec StrConv
comme MAJ ; j'a ifait quelques enregistrements vite fait en minuscule et
e néxecutant ma requête après je me retrouvais bie navec mes premières
lettres de ma zone de liste déroulante en majuscule mais c'était pas
très pratique ; ce que tu m"indiques est 100 fois mieus et plus " propre
".
Cette fonction NotInList, je l'ai prise sur ton site il y a plusieurs
mois ( tu te doutes bien que je n'aurais pas pu l'écrire moi même (
malheureusement ) ;-) et j'en suis enchanté ; par contre, pour ma
gouverne perso, pourrais tu me dire, même très brièvement, à quoi serve
les trois quotes """ ? Je comprends à peu près la fonction mais je ne
sais pas pourquoi on met """ et surtout à quoi ça sert.......
Je t'en remercie d'avance

Au besoin, faire une mise à jour de la table pour les données déjà
saisie.



Fait

ou j'ai rien compris à ton souhait ;-))


Mais si tu as tout compris ;-) A partir du moment où je m'explique à
peu près convenablement ;-) , ça aide à comprendre la question! ! ! Et
tu as tout compris !
Tu es trop fort ! ! !
Merci Pierre

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm

Avatar
3stone
Salut,

"Ayrton [ASC]"

| pourrais tu me dire, même très brièvement, à quoi serve
| les trois quotes """ ? Je comprends à peu près la fonction mais je ne
| sais pas pourquoi on met """ et surtout à quoi ça sert.......

Cela vient du fait que tu dois integrer une chaine... dans une chaine!
Et une chaine doit être entourée de... guillemets. Et, pour intégrer
un guillemet, il faut le doubler ;-)

"SELECT """ & StrConv(NewData,vbProperCase & """ ;"

Imagine que tu doive entourer la chaine par un "x" tu aurais :

"Select x" & StrConv(.......

comme dit plus haut, il faut le doubler :

"Select xx" & StrConv(......

il te reste à remplacer les "x" par des... guillemets et d'appliquer
le même raisonnement... a l'autre bout de la chaine et tu obtiens
ce truc bizarre :o)

Pour intégrer un numérique, il suffit de faire :

"Select " & 123 & " le reste de la chaine"


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Ayrton [ASC]
Re *3stone*
Dans ton message de news:%,
Tu as pensé très fort :-(*)

Salut,
Cela vient du fait que tu dois integrer une chaine... dans une chaine!
Et une chaine doit être entourée de... guillemets. Et, pour intégrer
un guillemet, il faut le doubler ;-)

"SELECT """ & StrConv(NewData,vbProperCase & """ ;"

Imagine que tu doive entourer la chaine par un "x" tu aurais :

"Select x" & StrConv(.......

comme dit plus haut, il faut le doubler :

"Select xx" & StrConv(......

il te reste à remplacer les "x" par des... guillemets et d'appliquer
le même raisonnement... a l'autre bout de la chaine et tu obtiens
ce truc bizarre :o)

Pour intégrer un numérique, il suffit de faire :

"Select " & 123 & " le reste de la chaine"


Impeccable ! Merci pour tout Pierre

A+ Tard

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm