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

Macros et VBA Excel Discussion :

création fenêtre de message étendue (MsgBoxEx)


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut création fenêtre de message étendue (MsgBoxEx)
    bonjour,

    Je souhaiterais créer un message box avec des boutons avec un texte spécifique (modifier / créer / annuler)
    Pour cela, j'ai trouvé le tutoriel sur MsgBoxEx. Mais je n'arrive pas à l'appliquer et je ne comprends pas comment rattacher un bouton à une variable.

    Ci joint le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test2()
    Dim ltexte As String
        ltexte = "{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fcharset0 Arial;}}" & vbCrLf & _
                 "{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 " & vbCrLf & _
                 "\b Que souhaitez-vous faire ?\par" & vbCrLf & _
                 "\b0\par" & vbCrLf & _
                 "}"
        Call MsgBoxEx(ltexte, vbQuestion Or vbDefaultButton1 Or vbDefaultButton2 Or vbDefaultButton3, "SPI E7180031", , , _
                      , , , , False, "modifier", "créer")
     
    End Sub
    d'avance merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je ne connais pas du tout MsgboxEx mais déjà, tel que tu l'utilises il ne retourne rien.
    Pour retourner "quelque chose", et pour autant que la syntaxe soit la bonne, tu dois mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UneVariable = MsgBoxEx(ltexte, vbQuestion Or vbDefaultButton1 Or vbDefaultButton2 Or vbDefaultButton3, "SPI E7180031", , , _
                      , , , , False, "modifier", "créer")
    Pour le reste, si tu as toujours un pb, je te laisse avec ceux qui connaissent
    Bonne journée

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    Est ce qu'il existe une autre solution que le MsgBoxEx pour créer une boîte de dialogue avec des boutons avec un texte spécifique ?

    Dans mon code précédent, je n'arrive à afficher que le 1er bouton.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    La solution "que je connais" est l'utilisation d'un userform avec autant de boutons que nécessaire et un label pour afficher le message principal.
    Et là on fait ce qu'on veut sans difficulté aucune
    Regarde ici, tu as un exemple. Regarde aussi la suggestion de Cafeine quant à l'utilisation d'une "DialogBox" (dont j'ignore si on peut lui mettre plusieurs boutons).

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    j'avoue je suis un peu perdue.

    je viens de parcourir le tutoriel sur les UserForm (car je ne connaissais pas)
    et je ne comprends pas trop comment je peux faire afficher mon userform depuis ma macro et savoir sur quel bouton l'utilisateur à cliquer.

    est ce que je peux lui donner un titre d'après un nom de variable ?

  6. #6
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Pour info, un lien ici sur MSGBOXEX

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par depi67
    est ce que je peux lui donner un titre d'après un nom de variable ?
    Bien sûr !
    Pour afficher un userform ? On va t'ouvrir de nouveaux horizons
    Dans l'éditeur VBA ajoute un userform à ton projet -> Insertion -> Userform
    Dans un module standard, place le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub OuvrirLusf()
        Load Userform1 'le nom doit correspondre avec celui de l'userform (!)
        Userform1.show
    End sub
    et dans ta macro ajoute cette ligne là ou tu voudrais ouvrir l'userform
    Tu as testé ?
    Maintenant fais pareil avec l'exemple que je t'ai passé, ou tout autre
    Pour récupérer, on verra plus tard
    A+

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    j'ai réussi à modifier mon userform comme je le souhaitais.

    j'ai donc ma macro principale qui fait appel à mon userform
    j'ai rattaché chaque bouton de mon userform à une macro.
    mais par contre, je n'arrive pas, une fois que j'ai fini la macro du bouton selectionné, à retourner à la suite de la macro principale.

    programe principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'début du programme 
    DT_JOUR = Date
    DT_JOUR2 = Mid(DT_JOUR, 7, 4) & Mid(DT_JOUR, 4, 2) & Mid(DT_JOUR, 1, 2)
    OuvrirLusf
    ...
    'suite du programme
    programme du boutton selectionné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
     
     DT_MODIF = DT_JOUR2
     DT_CREA = "        "
     End
     
    End Sub


    d'avance merci

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Remplace le "End" par
    Pendant que tu y es, remplace tes deux lignes concernant le date par une seule qui fait la même chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DT_JOUR2 = Format(Date, "yyyymmdd")
    Bonne soirée

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Citation Envoyé par depi67 Voir le message

    Je souhaiterais créer un message box avec des boutons avec un texte spécifique (modifier / créer / annuler)

    Bonsoir,

    Dans un tel cas, une simple InputBox avec le texte que l'on veut et une invite à saisir "M" (pour modifier), "C" (pour Créer) ou "A" (pour annuler) ferait largement l'affaire sans les frais ni d'une MessageBoxEx, ni d'un UserForm.

    On peut même (une inputbox le permet), définir une réponse par défaut (celle estimée la plus fréquente).

    Quant à boiucler tant que la réponse n'est ni A, Ni C, ni M, les exemples ne manquent pas ici...

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu as raison, ucfoutu, mais pour ma part je préfère la souplesse d'utilisation d'un userform, aussi bien pour une question de disposition que de présentation des contrôles - mise en forme, casse, couleur, taille etc.
    Mais c'est un point de vue. Libre à toi de penser le contraire.

  12. #12
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    Merci ça fonctionne
    bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Des Fenêtres de message étendues
    Par Arkham46 dans le forum Contribuez
    Réponses: 5
    Dernier message: 17/09/2017, 21h00
  2. Création fenêtre graphique en temps réel
    Par Juanes dans le forum Visual C++
    Réponses: 1
    Dernier message: 26/06/2007, 14h57
  3. Fenêtre pour message d'erreur
    Par javaDev dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 25/04/2007, 12h35
  4. Réponses: 4
    Dernier message: 24/08/2006, 11h19
  5. fermer fentre avec message
    Par allowen dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/03/2006, 14h57

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