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 :

Valeurs dans MsgBox.


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut Valeurs dans MsgBox.
    Bonsoir tout le monde,

    J'ai un petit souci d'affichage dans une MsgBox.

    J'ai une plage (A1:B10) et je souhaite une macro qui affiche une MsgBox me demandant si je veux effacer cette plage.

    J'ai fais ceci, qui bien sûr ne joue pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub MaMsgBox ()
    Dim x As Variant
     
    x = Range("A1:B10")
     
    Select Case MsgBox("Souhaitez-vous effacer les données de " & x & " ?", vbYesNo)
    Case vbYes
    [A1:B10].ClearContents
    Case vbNo
    End Select
    End Sub
    Bien sûr je peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub MaMsgBox ()
    Select Case MsgBox ("Voulez-vous effacer les données de A1:B10 ?", vbYesNo)
    Case vbYes
    [A1:B10].ClearContents
    Case vbNo
    End Select
    End Sub
    mais par principe, je souhaite savoir comment je dois procéder pour la première façon.

    Par avance je vous remercie.

    Cdt, Antoniom.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Il est toujours souhaitable de travailler avec des variables typées.

    Travailler avec une variable de type Range te permet d'utiliser les méthodes et propriétés appropriées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub MaMsgBox ()
    Dim x As Range
     
    Set x = Range("A1:B10")
     
    Select Case MsgBox("Souhaitez-vous effacer les données de " & x.Address & " ?", vbYesNo)
    Case vbYes
    x.ClearContents
    End Select
    End Sub
    J'ai supprimé le Case vbNo, inutile dans ce cas puisque le bloc ne contient aucune ligne de code.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub MaMsgBox ()
    Dim x As Variant
     
    x = Range("A1:B10")
     
    Select Case MsgBox("Souhaitez-vous effacer les données de " & x.Address(false,false) & " ?", vbYesNo)
    Case vbYes
    et tant que tu es sur les principes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x.ClearContents
    Case vbNo
    End Select
    End Sub
    COrdialement,

    PGZ

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    , pgz

    1. Sans mettre Set x = range(...) tu n'initialiseras pas un objet, donc tu ne pourras pas en utiliser les propriétés et tu planteras sur x.Address et sur x.ClearContents.

    2. je ne vois pas trop l'intérêt, a priori, de travailler avec un Variant plutôt qu'avec le bon type d'objet. C'est se priver des options de débogage, de la saisie semi-automatique,...

    3. Je ne vois pas trop l'utilité du Case vbNo... et je n'ai pas compris et tant que tu es sur les principes

    Bref... Je n'ai pas compris... l'utilité de ta réponse...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Re-bonsoir,

    Merci beaucoup à vous de m'avoir montré. Je n'étais pas loin.

    Me manquait deux petits mots, le Range de Dim x As Range et le Address de x.Address.

    Encore un grand merci.

    Antoniom.

    P. S. Et manquait aussi le Set !

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Hum....

    Il ne te manquait pas le Set?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Re,

    Oui au final, il me manquait aussi le Set, mais dans mes diverses tentatives d'essais, un coup je l'avais mis, (c'est pour ça j'ai cru qu'il me manquait que deux p'tits mots) mais à ce moment là, me manquait le Address

    Bref, merci encore m'sieur

    Au plaisir, Antoniom.

  8. #8
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    , pgz

    1. Sans mettre Set x = range(...) tu n'initialiseras pas un objet, donc tu ne pourras pas en utiliser les propriétés et tu planteras sur x.Address et sur x.ClearContents.

    2. je ne vois pas trop l'intérêt, a priori, de travailler avec un Variant plutôt qu'avec le bon type d'objet. C'est se priver des options de débogage, de la saisie semi-automatique,...

    3. Je ne vois pas trop l'utilité du Case vbNo... et je n'ai pas compris et tant que tu es sur les principes

    Bref... Je n'ai pas compris... l'utilité de ta réponse...
    Tu as raison. En fait j'avais vu le .Address et l'objet de ClearContents. Et c'était bien le seul intérêt de la réponse.
    Le reste j'ai lu trop vite.
    Il y en avait un peu trop pour moi.

    PGZ

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/04/2014, 07h22
  2. [XL-2007] inserer une valeur dans msgbox
    Par abrmed dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/04/2011, 16h38
  3. [AC-2002] intégration valeur recordset dans msgbox
    Par wushu29 dans le forum VBA Access
    Réponses: 19
    Dernier message: 19/03/2010, 15h50
  4. [AC-2002] Comment inclure la valeur des champs dans msgbox ?
    Par vortexlechien dans le forum VBA Access
    Réponses: 10
    Dernier message: 24/04/2009, 07h23
  5. indiquer une valeur dans un MSGBOX
    Par Yoooo dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 13/07/2007, 19h57

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