Créer une boîte de saisie en VBA

  • Initiateur de la discussion Initiateur de la discussion yumat
  • 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 !

Y

yumat

Guest
Bonjour à vous les excellents "Exceliens"

J'aurais besoin d'une boîte de saisie en VBA avec un titre, trois cases de valeurs à saisir par exemple bois, fer et cuivre.
Ces trois valeurs saisies doivent ensuite être affectées à trois cellules portant les noms din, ding et dong (toujours par exemple).
Comme je ne peux pas enregistrer une telle macro et que je suis trop faible en VBA, je fais donc appel à vous.

A l'avance merci.
 
Re : Créer une boîte de saisie en VBA

Bonjour à tous,

j'aurais plutôt utilisé ce code:
Code:
Private Sub CommandButton1_Click()
Range("A" & Range("A65535").End(xlUp).Row + 1) = DIN.Text
Range("B" & Range("B65535").End(xlUp).Row + 1) = DING.Text
Range("C" & Range("C65535").End(xlUp).Row + 1) = DONG.Text
    Unload Me
End Sub

à+
Philippe
 
Re : Créer une boîte de saisie en VBA

Exact ! On peut aussi, après avoir nommé les cellules réceptrices utiliser le code suivant :
Code:
Private Sub CommandButton1_Click()
    Range("DIN").Value = DIN.Text
    Range("DING").Value = DING.Text
    Range("DONG").Value = DONG.Text
    Unload Me
End Sub
 

Pièces jointes

Re : Créer une boîte de saisie en VBA

Merci phlaurent55 et surtout merci à toi Dormeur74

La réponse est excellente. Mais, comme je l'ai écrit plus haut, je suis vraiment nul en VBA 😡 et il va me falloir un certain temps pour comprendre ta réponse. Par exemple comment créer la boîte de dialogue, comment modifier le prg bref je sens que je vais m'amuser !!!

Dès que je suis plus à l'aise je te fais signe

Merci encore
 
Re : Créer une boîte de saisie en VBA

Alors on y va. Comme tu vas pouvoir le constater, c'est assez simple.
Tu fais ta mise en forme comme dans l'exemple (cellules A1 à C4).

1- On nomme les cellules
.on clique sur A4 puis on appelle le menu Insertion...Nom...Définir...
.sur la ligne de saisie on tape : "DIN" , on clique sur le bouton "Ajouter" et OK
.on fait pareil avec les cellules B4 et C4.

2- Préparation de la macro

.menu Outils...Macro...Nouvelle macro
.dans la fenêtre "Enregistrer une macro", on accepte le nom "Macro1" en cliquant sur « OK »
.menu Outils...Macro...Arrêter l'enregistrement
.menu Outils...Macro...Visual Basic Editor (raccourci Alt+F11)
.dans la fenêtre de gauche (VBA Project) double-clic sur Modules et double-clic sur Module1
.on tape les deux instructions qui vont faire apparaître la boîte de saisie entre Sub Macro1() et End Sub, ce qui va donner :

Code:
Option Explicit

Sub Macro1()
    Load UserForm1
    UserForm1.Show
End Sub

3 – Création de la feuille de saisie
.menu Insertion…UserForm
.on clique sur la feuille à l’aide du bouton droit et on sélectionne la commande Propriétés (raccourci F4)
. à côté de Caption, on entre « Titre de la boîte »
. on ouvre la boîte à Outils par Affichage…Boîte à Outils
. on clique sur l’outil matérialisé par un A majuscule (étiquette) et on dessine une étiquette sur la feuille
. dans la fenêtre des propriétés, double-clic sur « Label1 » (Caption), on entre « DIN :» à la place. On fait pareil pour « Ding :» et « Dong :»
. on clique sur l’outil « Zone de texte » matérialisé par un « ab| » et on dessine une zone sur la feuille
. dans la fenêtre des propriétés, on change la propriété (Name) et on remplace TextBox1 par DIN. On fait la même chose pour DING et DONG.
. dans la boîte à outils, on sélectionne l’outil « Bouton de commande » matérialisé par un rectangle en relief et on dessine un bouton sous les zones de saisie
. on remplace le Caption « CommandButton1 » par « OK »
. double-clic sur le bouton « OK » et on entre le code, ce qui doit donner :

Option Explicit

Code:
Private Sub CommandButton1_Click()
    Range("DIN").Value = DIN.Text
    Range("DING").Value = DING.Text
    Range("DONG").Value = DONG.Text
    Unload Me ' On cache la boîte de saisie
End Sub

4- Mise en place d’un bouton sur l'interface

. on revient au tableur par Alt+F11
. menu Affichage…Barres d’Outils…Formulaire (ne pas confondre cette boîte avec Affichage…Barres d’outils…Boîte à outils Contrôle)
.sélectionner l’outil « Bouton » et dessiner un bouton n’importe où dans la feuille
.dans la fenêtre qui s’est ouverte (« Affecter une macro ») sélectionner Macro1. OK
.on clique dans la zone grisée autour du bouton et on le met au bon endroit (glisser-poser)
.on clique sur le bouton avec le bouton droit de la souris, on sélectionne la commande « Modifier le texte » et on remplace « Bouton1 » par « Ouvrir la boîte de saisie ».
. on referme la boîte à outils.

Fin de tutoriel.
 
Re : Créer une boîte de saisie en VBA

Salut à toi Dormeur74
Tous mes compliments, bravo tu es excellent dans tes explications.

J'ai fait un essai sur un classeur vierge et, à ma grande surprise et un grand bonheur, j'ai bien réussi un tout petit bout pour voir : changer le titre, une étiquette, une variable, un bouton ok et un bouton annuler. Et ça fonctionne!!!!

Pour être au top, il me faudrait dans cette boîte de saisie une liste déroulante. La valeur apparaitrait dans une cellule nommée et la liste des textes de la liste déroulante serait créée dans la feuille elle même. Est-ce possible???

Enfin dernière chose, je crée une application sous office 2007. Les personnes comme toi ayant office 2003 pourront-elles se servir de cette application?

Encore merci et un grand bravo à toi

J'oubliais comment empêcher les successions d'affichage d'écran lors de l'exécution d'une macro??? Et encore bravo : imagine j'ai réussi à créer cette boîte de saisie alors que je m'en sentais totalement incapable. Serais-je devenu "bon"? Non je rigole je suis tjrs aussi nul crois moi
 
Dernière modification par un modérateur:
Re : Créer une boîte de saisie en VBA

Que tu te sentes des ailes parce que tu as eu la patience de suivre pas à pas ce pensum est une juste récompense.

Bon, je ne sais pas comment intercepter le rafraîchissement de l'écran lors de l'exécution d'une macro, parce que je ne m'y suis jamais intéressé de près.

Enfin dernière chose, je crée une application sous office 2007. Les personnes comme toi ayant office 2003 pourront-elles se servir de cette application?

Halte : danger !
- tu peux, par exemple utiliser une nouvelle fonction implémentée sous Office 2007 ; elle ne sera pas reconnue sous Office 2003.
- tu peux tomber également sur un réseau d'entreprise où l'administrateur n'acceptera pas un composant aussi simple que le Calendar (je viens de le vivre)
- tu peux enfin (étage supérieur) faire appel à des API incompatibles au niveau du système : une API pour un processeur 64 bits ne fonctionnera pas forcément en 32 bits.

Donc tout un tas de raisons pour te dire a priori non.
 
Re : Créer une boîte de saisie en VBA

"a priori non" ne signifie pas que ça ne fonctionnera pas, mais qu'il faudra tester le programme sous toutes ses coutures.

Ci-joint un petit exemple avec une liste contenant 15 pierres précieuses.
- Si on sélectionne la pierre n° 10, les pierres de 10 à 15 s'afficheront.
- Si on fait un couper-coller de la cellule nommée n'importe où dans la feuille, ça marchera toujours.
 

Pièces jointes

Re : Créer une boîte de saisie en VBA

Je vais tester chez un copain avec le 2003. Mais comme je n'utilise que les formules rechercheV, somme.si cela devrait coller à moins que les macros .... Je te tiendrais au courant.

Pour la liste déroulante, impeccable! Je vais seulement bidouiller pour n'afficher que l'article sélectionné et non pas l'article et le reste de la liste.

Et, comme toujours : encore merci tu es un chef
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
Réponses
6
Affichages
1 K
M
Réponses
4
Affichages
2 K
M
J
Réponses
0
Affichages
19 K
jlvinfo
J
J
Réponses
7
Affichages
2 K
jayroom
J
E
Réponses
41
Affichages
9 K
S
Retour