Pbm Access liste déroulante avec nombres [Résolu/Fermé]

Signaler
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
-
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
-
Bonjour,

J'ai une liste déroulante créer sur Access 2003 qui est alimenté par une requête en base pointant sur des nombres de type 0077 par exemple. L'affichage dans le champ de la liste déroulante se fait comme suit : 77 au lieu de 0077. J'aimerai qu'il apparaisse correctement à l'écran !

J'ai déja essayé de lui rentrer dans la propriété format "0000" mais ça ne fonctionne pas. En base en revanche, j'ai bien mon champ qui est formaté 0000 et donc il m'affiche la valeur correcte mais pas dans la liste déroulante...
J'ai le même souci pour des numéros de mois dans une autre liste...

Avez vous une solution à me proposer?(même si c'est en VBA je prends, j'ai déja essayé des trucs pour ça mais sans succès...)

Merci de votre aide !!

18 réponses

Messages postés
148
Date d'inscription
mardi 9 décembre 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
salut little_titi

Je viens d'essayer dans access et moi ça marche avec le format 0000
Essaye de le taper sans les guillemets.

C'est peut-être aussi simple que cela
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3
merci pour ta réponse ! en fait justement j'ai mis aussi 0000 mais ça m'affiche bien dans le champ de la zone de liste 0077 mais quand je clic sur la fléche pour dérouler la liste et choisir la valeur que je veux, eh bien les valeurs de la liste apparaissent sous forme 77 !!!

Peut-on définir une propriété d'alignement pour le contenu d'une zone de liste déroulante?
dans le genre align = center car par défaut j'ai l'impression qu'il me mange les zéros car il doit aligner à gauche je pense...
Il me semble que si j'arrive à définir le style d'affichage de ma requête pour les éléments de la liste, ça devrait marcher!! mais comment faire....?
Messages postés
148
Date d'inscription
mardi 9 décembre 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
Salut, je ne comprends pas ça marche très bien quand j'essaie.
Sinon pour régler l'alignement comme tu veux dans la modifiable tu vas dans ses propriétés, tu prends l'onglet format et tu vas à "aligner texte"
Mais apparemment ça n'est pas à cause de ça
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3
Non non quand je fais ça, ça aligne juste la valeur choisie dans le champ modifiable mais pas celles dans la liste déroulante !!!
(petit test : rentre 0077 et aligne à gauche ta propriété. Tu auras dans ton champ la valeur 77 au lieu de 0077. et dans ta liste tu auras 77. Maintenant si tu fais aligner à droite sur ta propriété, dans ton champ tu auras 0077 et dans ta liste 77. Et la est le souci....!:( )

Autre question qui n'a rien à voir : je veux créer un format personnalisé dans une textbox et ça ressemblerait à la chose suivante :

l'utilisateur a le choix de rentrer les données de 2 façons différentes :
soit "12." et 5 chiffres qui suivent
exemple : 12.65955

soit le numéro du mois en cours (si on est en septembre ça fera 09.) et 7 chiffres qui suivent
exemple : 09.1036484

Comment faire pour un controle sur ce que l'utilisateur a rentré pour savoir si il rentre bien les données dans ces 2 formats ?? j'ai essayé un controle sur sortie de ma textbox et je voulais utiliser la fonction "format" mais je n'arrive pas l'écrire...
Saurais tu comment faire ?

merci de ton aide !! ;)
Messages postés
148
Date d'inscription
mardi 9 décembre 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
C'est pour quoi faire ta textBox ?
est-ce grave si il tape 7 chiffres au lieu de 5 et qu'il met deux zéros avants?
Si ça n'a pas d'importance tu peux créer un masque de saisie.
Sinon, je vais tester une autre solution et je te dis si je trouve
Réponds pour savoir
@+
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3
Justement en fait ma textbox, elle sert à rentrer des numéros d'achat pour des commandes. Et il existe 3 types de numéro d'achat possibles :

-Soit l'utilisateur ne rentre que du texte et des chiffres...(ce qu'il veut)
-Soit c'est une commande provenant d'un fax auquel cas on met par défaut le mois de la commande en cours suivi d'un point et 5 chiffres pour identifier la commande
-Soit c'est une commande qui ne provient pas du fax auquel cas on met par défaut le numéro à 12. et on remplit 7 chiffres derrière

Donc oui c'est important, je ne peux pas faire de masque de saisie de ce fait à moins que l'on puisse combiner plusieurs masque de saisie et dire par exemple à un champ textbox :
Si c'est une commande fax alors
tu m'afiiche le masque 1
Si c'est une commande non fax alors
tu m'affiche le masque 2
Sinon
tu ne m'affiche pas de masque/rien
End

A ton avis c'est possible? c'est pour ça que je voulais passer ça par un format()
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 073
Salut,

As-tu essayé de mettre ton champ de table en type texte ?

Comme ça, plus de problème, on peut saisir ce qu'on veut.

Mais le cas échéant, tu peux modifier en live le format de saisie d'une zone suite à un choix.

mazone.inputmask = "00\.0000000"
Messages postés
148
Date d'inscription
mardi 9 décembre 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
Bonjour à tous les 2
Ouais, ça peut-être ça la solution. Tu mets trois boutons à côté pour choisir quel type de commande tu entres. Un bouton pour chaque type bien sur.(Tu peux aussi utiliser une liste déroulante qui contient les 3 possibilités). Et tu mets le code correspondant à chaque choix qui permet de modifier le masque de saisie.
Tu n'as pas tellement le choix parce que tu ne peux pas mettre plusieurs masques à la fois
@+
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3
Re !! Merci les gars ! J'ai fais ça avec un Inputmask car je voyais que ça comme solution...et ça marche! :)

Le souci maintenant c'est que pour les fax où le mois doit s'afficher, il m'affiche par exemple 3.25599 (mois de mars) au lieu de 03.25599 dans la textbox...

On paramétre ça où pour qu'il prenne la valeur complète avec le 0 devant?
Merci!!
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 073
Mettre la zone en texte...
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3
Mais elle y est en texte, D'ailleurs quand je rentre du texte (mes trois cas c'est 1 commande DA -->12.5998989, 2 commande fax --> 03.14644, 3 autre -->ce que l'utilisateur a envie de mettre) dans le cas 3 autre ça marche bien puisqu'il est sur texte mais dans le cas 2 dans mon champ la valeur récupérée à partir de mon champ mois (qui est dans l'exemple 03) eh bien n'affiche pas le zéro dans le mask !! exemple également pour le mois de mars on a : _3.25896 et pour le mois d'octobre on : 1_.25896 il me mange le zéro!!!!

Voila mon code :


Private Sub OptionCommande_AfterUpdate()
Dim NumeroMois As String

'Masques de saisie pour les Numéro d'Achat (N°AC) selon la provenance de la commande fax ou DA...
If OptionCommande.Value = 1 Then
NumAchat.Value = ""
NumAchat.InputMask = "12\.0000000"


ElseIf OptionCommande.Value = 2 Then
NumAchat.Value = ""
NumeroMois = MoisCommande.Value
NumAchat.InputMask = NumeroMois & "\.00000"


ElseIf OptionCommande.Value = 3 Then
NumAchat.InputMask = ""
End If
End Sub
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 073
Pourquoi tu ne mets pas "00\.00000" ?
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3
Parce que je suis obligé de récupérer le numéro du mois en cours dans le cas d'un fax !!!Donc si je met ce mask 00\.00000 pour le cas 2 eh bien l'utilisateur va devoir rentrer le mois l et donc "perte de temps..." et risque d'erreur si ça ne correspond pas au mois en cours. Je voudrais que ça soit prérempli et au moins je n'ai pas besoin de rajouter un control supplémentaire pour vérifier que si c'est un fax il a bien rentré le mois en cours en premier...
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 073
Ben si tu veux le préremplir, il faut le mettre dans le masque :

Dim mois as string
mois = "\0\3"
toto.inputmask = mois & "\.00000"

Mais ça t'oblige à trafiquer le mois pour intercaler le backslash.

C'est quand même assez facilement réalisable, ceci dit.
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3
Euh.......à tu regardé mon code?

NumeroMois = MoisCommande.Value
NumAchat.InputMask = NumeroMois & "\.00000"

MoisCommande.Value (c'est la valeur du champ mois en cours) que je met dans une variable et que j'intégre à mon mask ensuite.....je ne veux pas une valeur de mois fixe!!! ça doit être dynamique !
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 073
Euh.......à tu regardé mon code?
A l'instant :-P

Donc, il faut reprendre la fin de mon message, qui ne dit pas trop de c......, pour une fois ;-)
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3
Oki ;)
Donc en gros je devrais avoir ça :

MoisCommande.InputMask = "00"

NumeroMois = MoisCommande.Value
NumAchat.InputMask = NumeroMois & "\.00000"

parce que si j'écris ça NumeroMois = "\0\3" il va toujours me mettre par défaut un chiffre et 3 derrière. Et je suis obligé de mettre \ devant les valeurs? car il va les comptabilisé en tant que caractère et ça ne sera pas dynamique...
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 073
Il faut mettre un \ car sinon, il va prendre le 0 pour une zone de saisie (chose que l'on ne veut pas).
NumAchat.InputMask = "!" & "\" & Left(NumeroMois, 1) & "\" & Right(NumeroMois, 1) & "\." & "00000;;_"
Le ! c'est pour faire la saisie de gauche à droite, c'est plus simple...
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3
Re !! ça yé ça marche enfin !!!!!
Merci de ton aide précieuse Blux ! :p

Voici mon code final :

If OptionCommande.Value = 1 Then
NumAchat.Value = ""
NumAchat.InputMask = "12\.0000000"


ElseIf OptionCommande.Value = 2 Then
NumAchat.Value = ""
NumeroMois = MoisCommande.Value

If NumeroMois < 10 Then
NumAchat.InputMask = "!" & "\" & "0" & "\" & Right(NumeroMois, 1) & "\." & "00000;;_"
Else
NumAchat.InputMask = "!" & "\" & Left(NumeroMois, 1) & "\" & Right(NumeroMois, 1) & "\." & "00000;;_"
End If

ElseIf OptionCommande.Value = 3 Then
NumAchat.InputMask = ""
End If

End If


En revanche pour le problème initial du post (celui de l'affichage dans la liste déroulante) ça ne marche toujours pas...je tente des truc mais bon...
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 073
Tu peux rajouter le ! dans ton choix 1, aussi, si tu veux...

Pour le format de la liste déroulante, je ne saisis (!) pas : tes données viennent d'une requête et donc d'un champ de table. Est-il de type texte ou numérique ?
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3
oui les données proviennent d'une requête sur un champ d'une table qui est en texte. donc voila je sais pas trop...
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 073
Elles ont saisies avec les 0 dans les tables où ces mêmes 0 sont ajoutés à l'affichage par un format ?
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 073
par une requête en base pointant sur des nombres de type 0077
Des nombres ?

Parce que moi, je viens de faire le test, une chaine 0077 dans un champ type texte est affichée 0077 dans la liste déroulante.
Messages postés
56
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
25 avril 2013

Bonsoir Blux , j'ai crée un champ texte "mois" en liste déroulante. je constate que lorsque je déroule la liste access les a classés par ordre alphabétique, j'aimerais les classer ou les voir se dérouler dans l'ordre logique des mois de l'année (janvier à Février)

Merci du topo.
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 073 >
Messages postés
56
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
25 avril 2013

soit tu changes pour mettre un format date, avec que le mois (format 'mmmm'), soit tu crées une colonne bidon qui contient ton criètère de tri numérique...
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3 >
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020

oui fais ça!
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3
Ben pourtant mon champ en table est de type texte je ne comprend pas...moi ça s'affiche sans les zéros dans liste déroulante et avec les zéro sur le champ à remplir
...???
Messages postés
242
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
23 novembre 2009
3
bon ça yé ça marche !!

J'ai remplacer ma table (je l'ai refaite) et j'ai refait une requête sur cette table et la ça fonctionne ! Un petit bug d'access surement...:)

Bon en tout cas merci pour tout !!
@ bientot !