[VBA]Condition : 13 chiffres entrés seulement
Résolu/Fermé
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
-
4 avril 2008 à 11:48
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 7 avril 2008 à 17:40
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 7 avril 2008 à 17:40
A voir également:
- [VBA]Condition : 13 chiffres entrés seulement
- Excel cellule couleur si condition texte - Guide
- Condition et excel - Guide
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
8 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
4 avril 2008 à 11:57
4 avril 2008 à 11:57
Bonjour,
En VBA tu peu faire un inputBox toi-même avec un usercontrol auquel tu ajoute une zone de texte limitée à 13 caractères.
Ou avec une macro tester la longeur de la chaine entrée dans le Box.
dim Txt as string
Txt = inputbox("Entrez un code de 13 Chiffres ou lettres")
if len(Txt)<>13 then
MsgBox("Entrée invalide")
exit sub
end if
.... Suite du traitement
A+
En VBA tu peu faire un inputBox toi-même avec un usercontrol auquel tu ajoute une zone de texte limitée à 13 caractères.
Ou avec une macro tester la longeur de la chaine entrée dans le Box.
dim Txt as string
Txt = inputbox("Entrez un code de 13 Chiffres ou lettres")
if len(Txt)<>13 then
MsgBox("Entrée invalide")
exit sub
end if
.... Suite du traitement
A+
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
5 avril 2008 à 09:04
5 avril 2008 à 09:04
Autant pour moi, en VBA c'est un UserForm.
UserForm n'est pas une fonction mais une feuille qui s'affiche comme un inputbox.
Quand tu est dans l'éditeur VBA (Alt+F11) >Insertion > UserForm
Tu peu y incorporer des contrôles tel que le texte que je t'ai signaler + des labels etc...
A+
UserForm n'est pas une fonction mais une feuille qui s'affiche comme un inputbox.
Quand tu est dans l'éditeur VBA (Alt+F11) >Insertion > UserForm
Tu peu y incorporer des contrôles tel que le texte que je t'ai signaler + des labels etc...
A+
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
120
7 avril 2008 à 10:00
7 avril 2008 à 10:00
Salut,
Merci, j'ai trouvé pour le Userform,
J'ai crée ça : http://img214.imageshack.us/img214/969/userformnc7.jpg
Le problème c'est que j'aimerais incorporer quelques contraintes mais je ne sais pas du tout comment m'y prendre :
- Passer à la case suivante dès que le champ est entièrement rempli (j'ai fixé les limites de champ a 4 sauf le dernier a 1 et j'ai mis dans l'ordre les tabindex)
- Supprimer la croix, pour forcer l'utilisateur à cliquer sur le bouton annuler
- Ici, que renvoie le bouton "ok" et le bouton "annuler" sur ma feuille principale ? Une sorte de Userform1.vbOK ?
- Je pourrais par la suite faire un "SIM = Userform1.SIM1.value & Userform1.SIM2.value & Userform1.SIM3.value & Userform1.SIM4.value" ?
- Ah oui, j'aimerai aussi cacher par défaut le bouton ok (le rendre grisé), et le rendre visible et enable quand tout les champs ont été remplis...
- et enfin, un petit contrôle sur le fait que tout les champs soient bien numériques, sans quoi un retry s'impose :P
J'espère ne pas trop en demander, ça fait vraiment énoncé d'examen lol :$
Merci d'avance pour tout tes précieux conseils ! :)
Merci, j'ai trouvé pour le Userform,
J'ai crée ça : http://img214.imageshack.us/img214/969/userformnc7.jpg
Le problème c'est que j'aimerais incorporer quelques contraintes mais je ne sais pas du tout comment m'y prendre :
- Passer à la case suivante dès que le champ est entièrement rempli (j'ai fixé les limites de champ a 4 sauf le dernier a 1 et j'ai mis dans l'ordre les tabindex)
- Supprimer la croix, pour forcer l'utilisateur à cliquer sur le bouton annuler
- Ici, que renvoie le bouton "ok" et le bouton "annuler" sur ma feuille principale ? Une sorte de Userform1.vbOK ?
- Je pourrais par la suite faire un "SIM = Userform1.SIM1.value & Userform1.SIM2.value & Userform1.SIM3.value & Userform1.SIM4.value" ?
- Ah oui, j'aimerai aussi cacher par défaut le bouton ok (le rendre grisé), et le rendre visible et enable quand tout les champs ont été remplis...
- et enfin, un petit contrôle sur le fait que tout les champs soient bien numériques, sans quoi un retry s'impose :P
J'espère ne pas trop en demander, ça fait vraiment énoncé d'examen lol :$
Merci d'avance pour tout tes précieux conseils ! :)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
7 avril 2008 à 10:42
7 avril 2008 à 10:42
Bonjour,
J'ai mis un exemple sur ce lien : https://www.cjoint.com/?ehkQvn5PaG
Bon courage
;o)
Polux
J'ai mis un exemple sur ce lien : https://www.cjoint.com/?ehkQvn5PaG
Bon courage
;o)
Polux
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
120
7 avril 2008 à 11:24
7 avril 2008 à 11:24
Merci infiniment de t'être donné la peine ! :-))
Bon alors, j'ai compris le système, j'aurais jamais pensé au set focus :D
Par contre, s'en suit quelques petites questions subsidiaires :
Qu'as-tu fais là au juste ? J'ai pas compris :S
La non plus :$
Ce userform apparait à la suite de plusieurs inputbox dans une procédure sur mon classeur principal. Y a-t-il un moyen de faire une "pause" a la procédure, jusqu'à ce que j'ai cliqué sur OK dans le userform ?
Comment je pourrais exporter les variables assemblées de mes textbox sur mon classeur principal, sachant que je perds les variables de mes textboxs si celui ci est fermé ... ?
Rah encore désolé de toutes ces questions, je me sens nul de pas savoir ça :S
Bon alors, j'ai compris le système, j'aurais jamais pensé au set focus :D
Par contre, s'en suit quelques petites questions subsidiaires :
Option Explicit Private Const SC_CLOSE = &HF060& Private Const MF_BYCOMMAND = &H0& Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Qu'as-tu fais là au juste ? J'ai pas compris :S
Private Sub UserForm_Initialize() Dim hSysMenu As Long Dim MeHwnd As Long MeHwnd = FindWindowA(vbNullString, Me.Caption) If MeHwnd > 0 Then hSysMenu = GetSystemMenu(MeHwnd, False) RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND Else MsgBox "Handle de " & Me.Caption & " Introuvable", vbCritical End If End Sub
La non plus :$
Ce userform apparait à la suite de plusieurs inputbox dans une procédure sur mon classeur principal. Y a-t-il un moyen de faire une "pause" a la procédure, jusqu'à ce que j'ai cliqué sur OK dans le userform ?
Comment je pourrais exporter les variables assemblées de mes textbox sur mon classeur principal, sachant que je perds les variables de mes textboxs si celui ci est fermé ... ?
Rah encore désolé de toutes ces questions, je me sens nul de pas savoir ça :S
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
7 avril 2008 à 11:55
7 avril 2008 à 11:55
re,
Ce bout de code utilise une API windows qui rend inutilisable la croix en haut à droit de la UserForm.
Ce userform apparait à la suite de plusieurs inputbox dans une procédure sur mon classeur principal. Y a-t-il un moyen de faire une "pause" a la procédure, jusqu'à ce que j'ai cliqué sur OK dans le userform ?. Dsl je ne comprends pas bien l'enchainement ...
Comment je pourrais exporter les variables assemblées de mes textbox sur mon classeur principal, sachant que je perds les variables de mes textboxs si celui ci est fermé ... ?. Il faut ajouter dans chaque procédure textbox_change ce bout de code :
;o)
Polux
Ce bout de code utilise une API windows qui rend inutilisable la croix en haut à droit de la UserForm.
Ce userform apparait à la suite de plusieurs inputbox dans une procédure sur mon classeur principal. Y a-t-il un moyen de faire une "pause" a la procédure, jusqu'à ce que j'ai cliqué sur OK dans le userform ?. Dsl je ne comprends pas bien l'enchainement ...
Comment je pourrais exporter les variables assemblées de mes textbox sur mon classeur principal, sachant que je perds les variables de mes textboxs si celui ci est fermé ... ?. Il faut ajouter dans chaque procédure textbox_change ce bout de code :
Worksheets("Save").Range("B2")Value = TextBox1.TextOn stock dans la feuille "Save" (onglet) dans la cellule B2 la valeur saisie dans TextBox1.
;o)
Polux
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
120
7 avril 2008 à 12:08
7 avril 2008 à 12:08
Merci encore :)
Ce userform apparait à la suite de plusieurs inputbox dans une procédure sur mon classeur principal. Y a-t-il un moyen de faire une "pause" a la procédure, jusqu'à ce que j'ai cliqué sur OK dans le userform ?
Imaginons que ma procédure ce lance suite à un raccourci clavier ou un bouton présent sur la première feuille.
nom = Inputbox("donnez un nom")
lieu = inputbox("donnez un lieu")
userform1.show
userform2.show
msgbox("nom = " & nom & chr(13) & chr(10) & "lieu = " & lieu, vbokcancel + 256, "récaptiulatif")
For i = 1 to 500
.........
En suivant cette procédure, les 2 userform s'affichent en même temps, ainsi que la message box...j'aimerai que le userform2 ne se lance pas avant que le userform1 n'ai renvoyé la valeur VbOK, et que la suite du programme ne continue pas à se lancer tant que le userform2 n'ai pas renvoyée la valeur vbOK :)
Voilà ce que je voulais dire :)
Bon appétit !
EDIT : Je vais plutôt mettre ces valeurs ans une seule case concaténé à l'appui de OK, mais n'y a t il pas un autre moyen que de simplement les mettre en dur sur la feuille ? :$ (par exemple exporter les variables pour les utiliser dans la procédure principale ?
Ce userform apparait à la suite de plusieurs inputbox dans une procédure sur mon classeur principal. Y a-t-il un moyen de faire une "pause" a la procédure, jusqu'à ce que j'ai cliqué sur OK dans le userform ?
Imaginons que ma procédure ce lance suite à un raccourci clavier ou un bouton présent sur la première feuille.
nom = Inputbox("donnez un nom")
lieu = inputbox("donnez un lieu")
userform1.show
userform2.show
msgbox("nom = " & nom & chr(13) & chr(10) & "lieu = " & lieu, vbokcancel + 256, "récaptiulatif")
For i = 1 to 500
.........
En suivant cette procédure, les 2 userform s'affichent en même temps, ainsi que la message box...j'aimerai que le userform2 ne se lance pas avant que le userform1 n'ai renvoyé la valeur VbOK, et que la suite du programme ne continue pas à se lancer tant que le userform2 n'ai pas renvoyée la valeur vbOK :)
Voilà ce que je voulais dire :)
Bon appétit !
EDIT : Je vais plutôt mettre ces valeurs ans une seule case concaténé à l'appui de OK, mais n'y a t il pas un autre moyen que de simplement les mettre en dur sur la feuille ? :$ (par exemple exporter les variables pour les utiliser dans la procédure principale ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
7 avril 2008 à 12:16
7 avril 2008 à 12:16
re,
Il faut donc mettre UserForm2.Show dans le retour de VbOk. Il faut mettre dans le UserForm1 un truc comme ça, à l'endroit qui doit lancer le UserForm2 :
Bon app à to aussi
;o)
Polux
Il faut donc mettre UserForm2.Show dans le retour de VbOk. Il faut mettre dans le UserForm1 un truc comme ça, à l'endroit qui doit lancer le UserForm2 :
Dim OkNo As Integer OkNo = MsgBox("blablabla", VbYesNo, "Message") If OkNo = VbYes Then UserForm2.Show Unload Me Else Exit Sub End If
Bon app à to aussi
;o)
Polux
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
120
7 avril 2008 à 14:00
7 avril 2008 à 14:00
oui, ok, mais en attendant le msgbox après le userform1 se lance en même temps que celui ci, meme si le userform2 n'est pas encore montrée :S
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
7 avril 2008 à 14:34
7 avril 2008 à 14:34
nom = Inputbox("donnez un nom")
lieu = inputbox("donnez un lieu")
userform1.show
userform2.show 'il faut supprimer cette ligne
lieu = inputbox("donnez un lieu")
userform1.show
userform2.show 'il faut supprimer cette ligne
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
120
7 avril 2008 à 14:49
7 avril 2008 à 14:49
Mon dieu je m'exprime mal ...
ce n'est pas le userform2 qui s'affiche en même temps que le userform1, mais la suite !
C'est à dire que avec l'exemple que je t'ai filé, je rentre le nom, le lieu, et au moment où le script arrive à userform1, il me met par-dessus ce userform le msgbox récapitulatif, tout en continuant le script...
Il me faudrait quelque chose que je puisse mettre qui arrête le script pendant que j'opère sur le userform2, et dès que j'ai appuyé sur valider, le script continue...
Je sais pas si j'ai réussi à me faire comprendre, je suis désolé je suis pas du tout une lumière pour expliquer, surtout les choses simples :S
désolé :$
ce n'est pas le userform2 qui s'affiche en même temps que le userform1, mais la suite !
C'est à dire que avec l'exemple que je t'ai filé, je rentre le nom, le lieu, et au moment où le script arrive à userform1, il me met par-dessus ce userform le msgbox récapitulatif, tout en continuant le script...
Il me faudrait quelque chose que je puisse mettre qui arrête le script pendant que j'opère sur le userform2, et dès que j'ai appuyé sur valider, le script continue...
Je sais pas si j'ai réussi à me faire comprendre, je suis désolé je suis pas du tout une lumière pour expliquer, surtout les choses simples :S
désolé :$
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
7 avril 2008 à 15:24
7 avril 2008 à 15:24
en fait je pense que tu as tout ce qu'il faut pour faire tourner ton script ... mais dans le désordre ... il faut certainement remettre les choses comme elles doivent se dérouler.
Peux-tu mettre ton fichier ici : https://www.cjoint.com/ et coller le lien dans ton prochain post.
Peux-tu mettre ton fichier ici : https://www.cjoint.com/ et coller le lien dans ton prochain post.
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
120
7 avril 2008 à 15:31
7 avril 2008 à 15:31
voilà il est disponible à cette adresse : https://www.cjoint.com/?ehpFzHIGhR
Je ne pense pas avoir oublié quelque chose...
Je te laisse voir :)
EDIT : ne t'inquiète pas pour la flèche qui pointe nulle part, j'attends de la macro soit fonctionnelle pour la coller dans un bouton :)
Je ne pense pas avoir oublié quelque chose...
Je te laisse voir :)
EDIT : ne t'inquiète pas pour la flèche qui pointe nulle part, j'attends de la macro soit fonctionnelle pour la coller dans un bouton :)
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
120
>
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
7 avril 2008 à 15:44
7 avril 2008 à 15:44
Ok j'ai trouvé...en changeant deux propriétés des Userform,
fmCycleCurrentForm, pour mettre le formulaire en premier plan, et
Showmodal en True, pour avoir le focus...
Tout est enchainé, le programme fonctionne, un merci gros comme ça à toi polux31, ainsi qu'a lermite222, je vais pouvoir profiter de mon petit script tout chaud dès que j'ai tout finalisé :))))
Bonne journée à vous, et encore merci !
fmCycleCurrentForm, pour mettre le formulaire en premier plan, et
Showmodal en True, pour avoir le focus...
Tout est enchainé, le programme fonctionne, un merci gros comme ça à toi polux31, ainsi qu'a lermite222, je vais pouvoir profiter de mon petit script tout chaud dès que j'ai tout finalisé :))))
Bonne journée à vous, et encore merci !
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
7 avril 2008 à 17:40
7 avril 2008 à 17:40
de rien, bonne continuation
;o)
polux
;o)
polux
4 avril 2008 à 12:05
Si tu as une doc sur lequel je peux me référer, je prends avec plaisir :)
4 avril 2008 à 12:28
Tu en met un sur le UC tu le selectionne et ensuite tu rape F1. C'est le mode d'emploi.
A+
4 avril 2008 à 14:09
4 avril 2008 à 15:01
https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa173472(v=office.11)?redirectedfrom=MSDN
Tu pourrais m'éclairer un peu sur la fonction ? :$
Merci !