par , 02/10/2018 à 09h45 (991 Affichages)
________________________________________________________
Ce billet est la suite de cette première partie.
Nous avions, dans cette première partie, fini de remplir notre liste de liste modifiable fixe.
Réglons notre zone d'édition :
Clic droit / format de contrôle sélectionner Entier :
Ceci, juste afin de tester l'une des possibilités (nombreuses) offertes par l'Objet DialogSheet et les contrôles de formulaire (cf ci-dessous).
![Nom : 10 Contrôle Textbox.png
Affichages : 1454
Taille : 30,8 Ko](https://www.developpez.net/forums/attachment.php?attachmentid=416689&d=1538464948)
Voilà, nous en avons terminé avec la préparation.
Ne reste que la partie VBA et code de cette boite de dialogue.
Faisons donc réagir nos boutons...
- Clic droit sur le bouton OK/Affecter une macro :
![Nom : 11 Bouton OK Affecter macro.png
Affichages : 207
Taille : 13,6 Ko](https://www.developpez.net/forums/attachment.php?attachmentid=416692&d=1538464948)
- Changer (ou pas) le nom de la macro :
![Nom : 12 renommer macro.png
Affichages : 207
Taille : 29,1 Ko](https://www.developpez.net/forums/attachment.php?attachmentid=416696&d=1538464949)
- Dans l'éditeur VBA :
![Nom : 13 Macro.png
Affichages : 187
Taille : 70,2 Ko](https://www.developpez.net/forums/attachment.php?attachmentid=416698&d=1538464951)
- Placez ce code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Sub Bouton_Ok_Click()
Dim Fruit As String
With Sheets("Dialogue1")
With .Shapes("Zone combinée 4").ControlFormat
If .ListIndex > 0 Then
Fruit = .List(.ListIndex)
End If
End With
With .Shapes("Zone d'édition 5")
If .TextFrame.Characters.Count > 0 Then
MsgBox "Commander d'urgence : " & .TextFrame.Characters.Text & " " & Fruit
End If
End With
End With
End Sub |
Vous disposez maintenant d'une boîte de dialogue fonctionnelle.
Pour terminer, nous allons masquer un peu tout cela, juste pour l'esthétique de votre classeur.
- Masquer la feuille : clic droit/Masquer :
![Nom : 14 Masquer.png
Affichages : 214
Taille : 11,2 Ko](https://www.developpez.net/forums/attachment.php?attachmentid=416702&d=1538464951)
- Insérer un bouton dans la Feuil1 (par exemple)
- Affecter une macro à ce bouton :
![Nom : 15 Bouton Commande.png
Affichages : 212
Taille : 27,8 Ko](https://www.developpez.net/forums/attachment.php?attachmentid=416705&d=1538464952)
- Dans l'éditeur VBA placer ce code :
1 2 3 4 5 6 7
| Sub Bouton_Commande_Click()
With DialogSheets("Dialogue1")
.Shapes("Zone combinée 4").ControlFormat.ListIndex = 0
.Shapes("Zone d'édition 5").TextFrame.Characters.Text = ""
.Show
End With
End Sub |
Ne nous reste plus qu'à tester.
- Clic sur le bouton :
![Nom : 16 Essai.png
Affichages : 218
Taille : 19,4 Ko](https://www.developpez.net/forums/attachment.php?attachmentid=416708&d=1538464953)
- Choisir une valeur dans la zone de liste et saisir n'importe quoi (sauf un entier) dans la zone d'édition :
![Nom : 17 mauvaise saisie.png
Affichages : 231
Taille : 22,6 Ko](https://www.developpez.net/forums/attachment.php?attachmentid=416709&d=1538464954)
Notre MsgBox s'affiche bien.
- Mais un message d'Excel apparaît :
![Nom : 18 Message Excel Valeur incorrecte.png
Affichages : 332
Taille : 22,3 Ko](https://www.developpez.net/forums/attachment.php?attachmentid=416710&d=1538464955)
- Et nous empêche de quitter :
![Nom : 19 retour boite de dialogue AZERTY select.png
Affichages : 290
Taille : 14,0 Ko](https://www.developpez.net/forums/attachment.php?attachmentid=416712&d=1538464955)
Cette alternative aux Userforms n'est pas évidente à coder. Nous avons, en effet, davantage l'habitude des contrôles ActiveX.
Mais, une fois maîtrisée, cela permet de se passer de moultes lignes de code rendues inutiles...
A lire ...
A lire également.
La création de telles boîtes peut-être entièrement réalisée en VBA : exemple
A++