IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

MsgBox_Perso : une boîte de message personnalisée


Sujet :

Contribuez

  1. #1
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 065
    Par défaut MsgBox_Perso : une boîte de message personnalisée
    Et une de plus !

    Parmi les grands classiques de la famille des fonctions personnalisées on retrouve inévitablement les boîtes de message (et les calendriers).

    Voici donc une boîte de message de plus, qui vient s’ajouter à toutes celles que vous trouverez sur Internet : aucune ne couvrant l’ensemble des besoins, à vous d’utiliser celles qui répondent au mieux à vos attentes.

    Certains programmeurs utilisent les API, d’autres les formulaires. La boîte de message que je vous présente ici est basée sur un formulaire. Car l’avantage est de pouvoir afficher une image personnelle à la place des classiques icônes d’Excel, voire de faire un semblant d’animation comme nous allons le découvrir.

    Présentation des caractéristiques de la boîte de message « MsgBox_Perso » :
    - La police du message ainsi que sa taille, sa couleur et son alignement sont configurables ;
    - Le titre est libre (le nom du classeur est repris par défaut) ;
    - La boîte peut avoir de 1 à 4 boutons ;
    - La croix pour fermer la boîte (le formulaire) peut être affichée ou masquée (mais Alt+F4 reste disponible) ;
    - La boîte peut contenir une image personnalisée et une animation d'images est réalisable très simplement (voir plus bas) ;
    - La boîte peut être affichée en mode modale ou non modale ;
    - Un minuteur peut fermer automatiquement la boîte après le délai demandé (exprimé en secondes) ;
    - Une macro peut être liée à chaque bouton, ce qui est pratique sur une boîte non modale où le bouton validé ne peut pas être récupéré.
    - Faire précéder le libellé d'un bouton par le signe « & » génère un accès rapide au bouton (raccourci clavier) ;
    - Encadrer le libellé du bouton par un crochet ouvert « [ » et fermé « ] » désactive le bouton qui reste visible (il est grisé) mais non utilisable ;
    - La dernière position du formulaire est mémorisée pour afficher la prochaine boîte au même endroit (sauf s’il est fermé par la croix) ;
    - Un tableau structuré peut être utilisé pour alimenter les arguments de la fonction (c’est bien pratique car il y en a pas mal à renseigner et ça fait un appel parfois laborieux ou dur à relire quand on passe les arguments en dur).

    Plutôt que de longs discours, le plus simple est de consulter le fichier « MsgBox_Perso.xlsm » (ci-dessous) où vous trouverez sur la feuille « Feuil1 » une rapide présentation et des démonstrations. Les messages sont générés depuis le tableau de la feuille « MsgBox_Perso ».
    Le module « Module1 » contient les codes pour ces exemples. Ils sont simples à comprendre et vous apprendront mieux que moi comment utiliser cette fonction.

    Ça se passe ici : MsgBox_Perso.xlsm

    Exemple d’appel avec les arguments passés en dur :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    Réponse = MsgBox_Perso("Avez-vous bien tout compris ?", 13, "&Oui", "&Non", "", "", "J'ai un doute...", , , , , True)

    Nom : Image1.jpg
Affichages : 503
Taille : 9,2 Ko


    Pour récupérer cette fonction dans vos applications :
    - Importez la feuille « Feuil_MsgBox_Perso » ;
    - Importer le formulaire « UserForm_MsgBox_Persov » ;
    - Importez le module « Module_MsgBox_Perso ».



    Pour les curieux voici un extrait de la fonction « MsgBox_Perso » que vous trouverez dans le module « Module_MsgBox_Perso » :

    Code VBA : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    '------------------------------------------------------------------------------------------------------
    Public Function MsgBox_Perso(Message As String, _
                                   Optional NumImage As Integer = 1, _
                                   Optional Bouton1 As String = "", _
                                   Optional Bouton2 As String = "", _
                                   Optional Bouton3 As String = "", _
                                   Optional Bouton4 As String = "", _
                                   Optional Titre As String = "", _
                                   Optional Hauteur As Integer = 0, _
                                   Optional Largeur As Integer = 0, _
                                   Optional BoutonDéfaut As Integer = 1, _
                                   Optional Minuteur As Long = 0, _
                                   Optional MasquerCroix As Boolean = False, _
                                   Optional MessageFontSize As Integer = 10, _
                                   Optional MessageForeColor As Long = 0, _
                                   Optional MessageTextAlign As Integer = 1, _
                                   Optional MessageFont As String = "Tahoma", _
                                   Optional FenetreModale As Boolean = True) As Integer
    '------------------------------------------------------------------------------------------------------
    ' Message : le message à afficher ou vide pour faire autre chose (voir la remarque).
    ' NumImage : numéro de l'image à afficher (si non existant dans le formulaire "UserForm_MsgBox_Perso" prend
    '            l'image "I1". Si non renseigné l'image 1 est reprise.
    ' Bouton1 à Bouton4 : le libellé des boutons. Si vide alors le bouton est ignoré.
    '                     Si le libellé est entre crochets "[" et "]" alors il est affiché mais le bouton n'est
    '                     pas activé (le texte est grisé).
    '                     Si le libellé contient "&" devant une lettre alors la lettre est surlignée et devient
    '                     une touche d'accès rapide (la première lettre du libellé : Page &Précédente = &Page Précédente).
    '                     Vous pouvez assigner une macro à un bouton : ajouter a son libellé le signe # (dièse) suivi
    '                     du nom de la macro (pratique pour une fenêtre non modale).
    ' Titre : le titre du formulaire, si vide alors reprend le nom du classeur.
    ' Hauteur : nombre entre 0 et 100 qui représente le pourcentage d'affichage de la hauteur maximale du formulaire.
    ' Largeur : nombre entre 0 et 100 qui représente le pourcentage d'affichage de la largeur maximale du formulaire.
    ' BoutonDéfaut : le bouton à sélectionner par défaut.
    ' Minuteur : si différent de 0 alors indique le nombre de secondes avant la fermeture automatique du formulaire.
    ' MasquerCroix : si True alors masque la crois en haut à droite du formulaire. Attention [Alt][F4] reste valide.
    ' MessageFontSize : la taille de la police du message (et pas des boutons).
    ' MessageForeColor : la couleur du message (et pas des boutons).
    ' MessageTextAlign : l'alignement du message : 1 = à gauche, 2 = centré, 3 = à droite.
    ' MessageFont : le nom de la police du message (et pas des boutons), vérifiez qu'elle existe.
    ' Modale : indique s'il faut afficher la fenêtre en mode modale ou non (à utiliser avec modération).
    '------------------------------------------------------------------------------------------------------
    ' Renvoie : le bouton validé 1 à 4 ou 0 si fermeture de formulaire par la croix, ou par [Alt][F4] (même
    '           si la croix est masquée), ou -1 si fermeture suite à la fin du minuteur.
    '------------------------------------------------------------------------------------------------------
    ' Remarque si "Message" est vide : ""
    ' Dans ce cas la fonction va utiliser le tableau structuré arbitrairement nommé "MsgBox_Perso" et qui reprend en colonnes
    ' le nom des arguments de la fonction avec en plus en première colonne un champ nommé "Id" pour alimenter la
    ' fonction. Et "NumImage" indique la ligne où "Id" = NumImage (pour reprend ses données).
    ' Voir l'exemple de la feuille "MsgBox_Perso" où un bouton permet de tester la ligne active.
    '------------------------------------------------------------------------------------------------------


    La feuille « MsgBox_Perso » contient le tableau utilisé pour les démonstrations. C’est bien pratique pour la maintenance et l’évolution du programme si vous avez plusieurs messages dans une grosse application.

    Le formulaire « UserForm_MsgBox_Perso » contient déjà quelques images, que vous compléterez à votre guise. Il se présente ainsi :

    Nom : Image2.jpg
Affichages : 496
Taille : 101,6 Ko

    Regardons les images numéro 23 à 26 :
    Elles ont en propriété Tag (commentaire) l’image suivante à afficher une seconde après leur affichage : c’est ainsi que sera réalisée une animation dans la boîte de message :

    Nom : Image3.jpg
Affichages : 494
Taille : 33,4 Ko

    N'hésitez pas à apporter vos commentaires, vos questions, dans cette discussion.

    Bonne programmation.
    Laurent Ott.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 586
    Par défaut
    Bonjour laurent_ott,

    voilà une fonction qui ajoute à la bibliothèque des Msgbox mais avec en plus un côté marrant dans les messages (avec les animations c'est bien vu)
    Bon boulot

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    712
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 712
    Par défaut
    Il y a un côté vintage (Windows 95...) qui est rafraîchissant

  4. #4
    Rédacteur/Modérateur


    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 702
    Billets dans le blog
    67
    Par défaut
    Sympa
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

Discussions similaires

  1. [AC-2003] Comment imprimer une boîte de message MsgBox
    Par electrosat03 dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/07/2009, 22h46
  2. [OpenOffice] Réafficher une boîte de message
    Par mpat dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 14/09/2007, 13h10
  3. Réponses: 4
    Dernier message: 18/02/2007, 22h29
  4. Réponses: 4
    Dernier message: 23/08/2006, 14h15
  5. Une boîte de messages en PHP ?
    Par TheRedLed dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/05/2006, 15h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo