Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Obliger une saisie numéraire

  • Initiateur de la discussion Initiateur de la discussion halecs93
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

halecs93

XLDnaute Impliqué
Bonjour,

Je reviens vers vous pour tenter de trouver une solution.

A l'ouverture de mon fichier, un formulaire s'affiche. Sur ce formulaire, plusieurs ListBox alimentés par différents tableaux structurés.

L'utilisateur, en cliquant sur tel ou tel item, déclenche alors l'affichage d'un ou plusieurs TextBox. Je souhaiterais que l'utilisateur ne puisse y saisir que des chiffres (vérification à la validation).

Un grand merci.
 

Pièces jointes

Solution
voir PJ: ca devrait etre ok

J'ai modifié le module de classe pour
1) ne plus vider le tag "Numérique" : à sa création, le texbox est bien déclaré en numérique, mais quand tu créés un nouveau textbox, le précédent redevenait un textbox classique

2) faire un controle sur la nature numérique quand tu tapes dans le textbox
Hello
en utilisant un module de classe

1) quand tu crées le textbox, tu lui mets le tag "Numérique"
2) tu ajoutes le textbox à la classe
et voila
Bonjour et merci. Ha oui... du coup cela empêche la saisie avant même la validation 😉 Mais... j'ai testé et sur mon PC seul le clavier numérique a été reconnu. Du coup si un utilisateur n'en a pas et doit utiliser les chiffres (en mode majuscule) de son clavier, cela ne fonctionne à priori pas.
 
voir PJ: ca devrait etre ok

J'ai modifié le module de classe pour
1) ne plus vider le tag "Numérique" : à sa création, le texbox est bien déclaré en numérique, mais quand tu créés un nouveau textbox, le précédent redevenait un textbox classique

2) faire un controle sur la nature numérique quand tu tapes dans le textbox
 

Pièces jointes

Un grand merci !
 
Bonjour @vgendron
j'avais apporté des modifs assez conséquentes a ces codes
par exemple pour le code postal donc textbox numerique avec un séparateur (espace) automatique
et l'utilisation du pavé numérique que l'on a en haut du clavier , sauf que là pas besoins de mettre en majuscule
c'est pour ceux qui ont un portable sans pavé numérique

VB:
Private Sub CDP_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
   With CDP
   Select Case KeyCode
        Case 96 To 105:                                 'ici  on les met mais on fait rien pour voir s'en servir
            If .SelStart = 2 Then .Value = .Value & " " 'ajoute l'espace apres le 2d chiffre
        Case 49 To 57: KeyCode = KeyCode + 48           'pavé numérique haut du clavier (verr MAj ou pas )
            If .SelStart = 2 Then .Value = .Value & " " 'ajoute l'espace apres le 2d chiffre
        Case 188: KeyCode = 110                         'ou l'inverse comme vous voulez 'c'est le switch (virgule/point) on peut inverser selon le besoin
        Case 8, 46:                                     'ici on met rien  c'est juste pour pouvoir utiliser les touches back et supprimer
        Case Else: KeyCode = 0:                         'toute les autres touches sont annulées
    End Select
    .Value = Mid(.Value, 1, 5)
End With
End Sub
j'ai mis des commentaires explicatifs
 
Dernière édition:
Bonjour à tous,

Je ne comprends vraiment pas pourquoi on utilise des codes aussi compliqués alors que ceci est bien suffisant :
VB:
Private Sub UserForm_Initialize()
ListBox1.List = [MOBILIER].Value
ListBox2.List = [ABRI].Value
ListBox3.List = [SIGNALETIQUE].Value
ListBox4.List = [DECHETS].Value
Sheets("PANIER").Range("A2:B" & Rows.Count).ClearContents
End Sub

Private Sub ListBox1_Change()
Label7 = ListBox1.Value
End Sub

Private Sub ListBox2_Change()
Label7 = ListBox2.Value
End Sub

Private Sub ListBox3_Change()
Label7 = ListBox3.Value
End Sub

Private Sub ListBox4_Change()
Label7 = ListBox4.Value
End Sub

Private Sub CommandButton1_Click()
If Label7 = "" Or TextBox1 = "" Then Exit Sub
With Sheets("PANIER")
    With .Cells(Application.CountA(.Columns(1)) + 1, 1)
        .Value = Label7
        .Offset(, 1) = Val(Replace(TextBox1, ",", "."))
    End With
    .Columns.AutoFit
End With
End Sub
A+
 

Pièces jointes

Dernière édition:
Bonjour.... l'ergonomie n'est plus la même... dans la version originale, l'utilisateur peut sélectionner plusieurs Items qui sont alors "surlignés"....et à côté de chacun d'eux il peut indiquer une quantité
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

O
Réponses
27
Affichages
2 K
romfret
R
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…