XL 2016 textbox formulaire de saisie

PETIT YANNICK

XLDnaute Occasionnel
Bonjour,

Je cherche a imposer la saisie de la variable ODM- et 5 chiffres (ex:ODM-12345) dans une textbox de formulaire excel
La variable ODM- ne change pas.
Par contre les 5 chiffres évoluent.

Est t'il possible de préécrire dans la text box6 de mon fichier : ODM- en dur et de forcer la saisie de 5 chiffres.
Il faudrait également permettre un copier coller de 5 chiffres.

Pour lancer le formulaire Ctrl+MAJ+A

Merci par avance
 

Pièces jointes

  • Products catalogue.xlsm
    21 KB · Affichages: 9

ChTi160

XLDnaute Barbatruc
Bonsoir
Bonsoir Eric ,le Forum
une approche
seule la saisie de 5 chiffres est possible.
Click sur Enregistrer pour voir
reste à mettre un message si pas conforme.
jean marie
 

Pièces jointes

  • vocabulaire_forum-Chti160.xlsm
    51.9 KB · Affichages: 9

ChTi160

XLDnaute Barbatruc
Re
Le même Ficher modifier(Saisie)
on pourrait soit inibe l'enregistrement si Numero non conforme
VB:
Private Sub CommandButton2_Click()
With Me
If Len(.TxtB_Num) <> 5 Or .TxtB_Num = "00000" Then Exit Sub 'Ici on quitte si pas 5 chiffres valides
     MsgBox .Lbl_ODM & .TxtB_Num 'Pour l'exemple
End With
End Sub
ou n'afficher le Bouton Enregistrer que lorsque le TxtB_Num est conforme
jean marie
 

Pièces jointes

  • Products catalogue Chti160.xlsm
    19.6 KB · Affichages: 15
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonjour
je te propose un tout en un
tu ne peux enlever le prefixe tu ne peux pas taper autre chose que les 5 chiffres et ne peux depasser les 9 caracteres
exemple
VB:
Private Sub TextBox1_Change()
    Dim prefixe$
    prefixe = "ODM-"
    With TextBox1
        .MaxLength = 9
        If Not .Value Like prefixe & "*" Then .Value = prefixe
        If Not IsNumeric(Mid(.Value, Len(prefixe) + 1)) Then .Value = prefixe
    End With
End Sub
ces deux seules lignes t’empêche
  1. de modifier le préfixe
  2. de supprimer le préfixe par erreur
  3. taper autres chose que tes 5 chiffres

essaie tu verra ;)
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re

explication dans commentaires
VB:
Private Sub TextBox1_Change()

    Dim prefixe$
    prefixe = "ODM-" 'ca c'est ton préfixe qui ne doit pas bouger

    With TextBox1

        .MaxLength = 9' la longueur max  de la chaîne dans le textbox

     
 'si le textbox ne commence pas par le préfixe (et quelque chose ou rien)alors = prefixe    
if Not .Value Like prefixe & "*" Then .Value = prefixe

  

If Not IsNumeric(Mid(.Value, Len(prefixe) + 1)) Then .Value = prefixe
  'si la partie après le préfixe est non numérique alors  textbox=prefixe

End With

End Sub
ce qui fait que
situ essaie de modifier le prefixe dans le textbox ben ca te remet le prefixe
si tu tape autre chose que des chiffre apres prefixe ben ca te remet prefixe
 

PETIT YANNICK

XLDnaute Occasionnel
Bonjour Patrick toulon
Je souhaiterais avoir un message box "renseigner 5 chiffres" si l'on essaye de renseigner un caractère autre que des chiffres. en plus de la valeur prefixe qui se réinitialise

Private Sub TextBox6_Change()
Dim prefixe$
prefixe = "ODM-"
With TextBox6
.MaxLength = 9

If Not .Value Like prefixe & "*" Then .Value = prefixe
If Not IsNumeric(Mid(.Value, Len(prefixe) + 1)) Then .Value = prefixe AND MsgBox "MsgBox N° ODM ne doit comporter 5 chiffres.""


End With
End Sub

Comment écrit ton le AND pour avoir 2 résultat pour une conditiondans une condition?
Merci
 

PETIT YANNICK

XLDnaute Occasionnel
Patrick toulon
Si j'intègre le code que tu m'as fournit au bouton Private Sub CommandButton2_Click() les conditions ne fonctionne plus.
Ton code est en rouge

Comment faut t'il déclaré le boutonCommandButton2?

Merci de ton retour




Private Sub CommandButton2_Click()


'Renseignement Manufacturer


Range("G4").Value = TextBox1
Sheets("Feuil1").Range("G4").Value = UCase(TextBox1.Text)

Unload Me

'Renseignement Reference manufacturer

Range("G5").Value = TextBox2
Sheets("Feuil1").Range("G5").Value = UCase(TextBox2.Text)




'Renseignement Description article


Range("G3").Value = TextBox3
Sheets("Feuil1").Range("G3").Value = UCase(TextBox3.Text)

Unload Me


'Renseignement designation FR


Range("G25").Value = TextBox4
Sheets("Feuil1").Range("G25").Value = UCase(TextBox4.Text)
If Len(TextBox4) = 30 Then MsgBox " Nombre de 30 caractères atteint!"

Unload Me

'Renseignement designation UK


Range("G26").Value = TextBox5
Sheets("Feuil1").Range("G26").Value = UCase(TextBox5.Text)
If Len(TextBox5) = 30 Then MsgBox " Nombre de 30 caractères atteint!"

Unload Me

'Renseignement N° ODM

Dim prefixe$
prefixe = "ODM-"
With TextBox1
.MaxLength = 9
If Not .Value Like prefixe & "*" Then .Value = prefixe
If Not IsNumeric(Mid(.Value, Len(prefixe) + 1)) Then .Value = prefixe
End With

Unload Me


End Sub


Faut t'il déclaré le bouton autrement que private sub



Au déclenchement d'un bouton CommandButton2_ il faut que je renseigne TextBox1 …..TextBox6
 

Pièces jointes

  • Products catalogue.xlsm
    27.9 KB · Affichages: 10

ChTi160

XLDnaute Barbatruc
Bonjour PETIT YANNICK
Bonjour le Fil(Patrick), le Forum
Patrick(sans pretention lol)
ne pourrait on mettre
VB:
if Not .Value Like prefixe & "#####"
'plutôt que
if Not .Value Like prefixe & "*"
j aime beaucoup ce que tu fais ou as fait, ici ou ailleurs lol
jean marie
 
Dernière édition:

Discussions similaires