Voir le flux RSS

pijaku

L'Objet DialogSheet, une alternative aux Userforms - Partie 2

Noter ce billet
par , 02/10/2018 à 09h45 (104 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 : 506
Taille : 30,8 Ko



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

  1. Clic droit sur le bouton OK/Affecter une macro :
    Nom : 11 Bouton OK Affecter macro.png
Affichages : 17
Taille : 13,6 Ko

  2. Changer (ou pas) le nom de la macro :
    Nom : 12 renommer macro.png
Affichages : 16
Taille : 29,1 Ko

  3. Dans l'éditeur VBA :
    Nom : 13 Macro.png
Affichages : 17
Taille : 70,2 Ko

  4. Placez ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
  1. Masquer la feuille : clic droit/Masquer :
    Nom : 14 Masquer.png
Affichages : 17
Taille : 11,2 Ko
  2. Insérer un bouton dans la Feuil1 (par exemple)
  3. Affecter une macro à ce bouton :
    Nom : 15 Bouton Commande.png
Affichages : 16
Taille : 27,8 Ko
  4. Dans l'éditeur VBA placer ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
  1. Clic sur le bouton :
    Nom : 16 Essai.png
Affichages : 16
Taille : 19,4 Ko

  2. 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 : 18
Taille : 22,6 Ko
    Notre MsgBox s'affiche bien.
  3. Mais un message d'Excel apparaît :
    Nom : 18 Message Excel Valeur incorrecte.png
Affichages : 17
Taille : 22,3 Ko

  4. Et nous empêche de quitter :
    Nom : 19 retour boite de dialogue AZERTY select.png
Affichages : 18
Taille : 14,0 Ko


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

Envoyer le billet « L'Objet DialogSheet, une alternative aux Userforms - Partie 2 » dans le blog Viadeo Envoyer le billet « L'Objet DialogSheet, une alternative aux Userforms - Partie 2 » dans le blog Twitter Envoyer le billet « L'Objet DialogSheet, une alternative aux Userforms - Partie 2 » dans le blog Google Envoyer le billet « L'Objet DialogSheet, une alternative aux Userforms - Partie 2 » dans le blog Facebook Envoyer le billet « L'Objet DialogSheet, une alternative aux Userforms - Partie 2 » dans le blog Digg Envoyer le billet « L'Objet DialogSheet, une alternative aux Userforms - Partie 2 » dans le blog Delicious Envoyer le billet « L'Objet DialogSheet, une alternative aux Userforms - Partie 2 » dans le blog MySpace Envoyer le billet « L'Objet DialogSheet, une alternative aux Userforms - Partie 2 » dans le blog Yahoo

Tags: excel, vba excel
Catégories
Sans catégorie

Commentaires