par , 02/10/2018 à 09h45 (1144 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).

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 :

- Changer (ou pas) le nom de la macro :

- Dans l'éditeur VBA :

- 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 :

- Insérer un bouton dans la Feuil1 (par exemple)
- Affecter une macro à ce bouton :

- 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 :

- Choisir une valeur dans la zone de liste et saisir n'importe quoi (sauf un entier) dans la zone d'édition :

Notre MsgBox s'affiche bien.
- Mais un message d'Excel apparaît :

- Et nous empêche de quitter :

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++