Forum Imprimante

 Oublié Pass?
 Register
Rechercher
Voir: 4684|Réponse: 28

Pbm Access liste déroulante avec nombres

[Copier lien]

Post sur le : 2012-12-27 05:36:36 |Tout les posts
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 !!
Réponse

Accessoires Signaler

Post sur le : 2012-12-27 07:34:27 |Tout les posts
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
Réponse

Accessoires Signaler

Post sur le : 2012-12-27 08:37:54 |Tout les posts
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....?
Réponse

Accessoires Signaler

Post sur le : 2012-12-27 10:10:04 |Tout les posts
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
Réponse

Accessoires Signaler

Post sur le : 2012-12-27 11:30:09 |Tout les posts
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 !! ;)
Réponse

Accessoires Signaler

Post sur le : 2012-12-27 13:24:59 |Tout les posts
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
@+
Réponse

Accessoires Signaler

Post sur le : 2012-12-27 14:50:47 |Tout les posts
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()
Réponse

Accessoires Signaler

Post sur le : 2012-12-27 15:55:25 |Tout les posts
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"
Réponse

Accessoires Signaler

Post sur le : 2012-12-27 17:51:38 |Tout les posts
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
@+
Réponse

Accessoires Signaler

Post sur le : 2012-12-27 19:41:52 |Tout les posts
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!!
Réponse

Accessoires Signaler

Post sur le : 2012-12-27 20:51:15 |Tout les posts
Mettre la zone en texte...
Réponse

Accessoires Signaler

Post sur le : 2012-12-27 22:14:53 |Tout les posts
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
Réponse

Accessoires Signaler

Post sur le : 2012-12-27 23:57:55 |Tout les posts
Pourquoi tu ne mets pas "00\.00000" ?
Réponse

Accessoires Signaler

Post sur le : 2012-12-28 01:09:03 |Tout les posts
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...
Réponse

Accessoires Signaler

Post sur le : 2012-12-28 03:07:06 |Tout les posts
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.
Réponse

Accessoires Signaler

Post sur le : 2012-12-28 04:38:40 |Tout les posts
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 !
Réponse

Accessoires Signaler

Post sur le : 2012-12-28 06:31:57 |Tout les posts
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 ;-)
Réponse

Accessoires Signaler

Post sur le : 2012-12-28 08:03:08 |Tout les posts
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...
Réponse

Accessoires Signaler

Post sur le : 2012-12-28 09:22:01 |Tout les posts
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...
Réponse

Accessoires Signaler

Post sur le : 2012-12-28 10:30:49 |Tout les posts
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...
Réponse

Accessoires Signaler

Vous devez vous connecter d'abord connect | Register

Contact Us| Archive| Forum Imprimante

GMT+1, 2024-03-28 15:49

Powered by Discuz! 7.2

Release 20121101, © 2001-2024 Forum Imprimante.

Top