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 :

Msg d'alerte au démarrage. [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut Msg d'alerte au démarrage.
    Bonjour,

    Je désirerai faire apparaître, au démarrage, un msg d'alerte selon certaines conditions.

    En feuil 1, je dispose d'indicateurs. Parfois ces indicateurs sont au vert, à l'orange ou au rouge en fonction des chiffres associés.

    Je voudrais savoir comment faire pour si la valeur d'une cellule est soit :
    - Supérieure à un chiffre
    - Compris entre 2 valeurs
    - Inférieure à un chiffre
    - ou tout simplement sans aucune condition requise

    qu'un msgbox apparaissent à l'ouverture de mon fichier Excel en disant :

    Attention, vous avez :
    - W actions en cours
    - X fiches en retard d'analyse
    - Y fiches en retard de traitement
    - Z audits à réaliser

    Sachant que les valeurs W, X, Y et Z sont respectivement en cellules A3, B7, F9 et K2

    Pour W, le message doit apparaître si la valeur en A3 est <0 à 0
    Pour X, le message doit apparaître si la valeur en B7 est > à 5
    Pour Y, le message doit apparaître si la valeur en F9 est comprise entre 2 et 6
    Pour Z, le message doit apparaître quelque soit la valeur en K2

    Merci à ceux qui m'apporteront une solution.

    Cordialement.

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, dans module ThisWorkbook, à tester et éventuellement adapter ( Feuil1 est le CodeName de la feuille dont on teste le contenu et pas le nom d'onglet ! )

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Option Explicit
     
    Dim bW As Boolean, bX As Boolean
    Dim bY As Boolean
     
    Private Sub Workbook_Open()
        bW = False: bX = False: bY = False
     
        If Feuil1.Range("A3").Value <= 0 Then bW = True
        If Feuil1.Range("B7").Value > 5 Then bX = True
        If Feuil1.Range("F9").Value <= 6 And Feuil1.Range("F9").Value >= 2 Then bY = True
     
        MsgOuv
    End Sub
     
    Private Sub MsgOuv()
    Dim sStr As String
        sStr = ""
        If bW Then sStr = Feuil1.Range("A3") & vbTab & " actions en cours" & vbCrLf
        If bX Then sStr = sStr & Feuil1.Range("B7") & vbTab & " fiches en retard d'analyse" & vbCrLf
        If bY Then sStr = sStr & Feuil1.Range("F9") & vbTab & " fiches en retard de traitement" & vbCrLf
        sStr = sStr & Feuil1.Range("K2") & vbTab & " audits à réaliser" & vbCrLf
     
        If Len(sStr) > 0 Then MsgBox sStr, vbOKOnly + vbInformation, "Infos"
    End Sub

  3. #3
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut
    Bonjour et merci,
    Je viens de tester en faisant quelques petites modifs (car mon nom de feuil est different de feuil1 ainsi que les cellules). Mais je rencontre une erreur en faisant dérouler la macro avec F8, lorsque j'arrive à MsgOuv()
    J'ai mis le code dans Thisworkbook sur BeforeOpen, j'ai été obligé de supprimer 'Option Explicit' de votre code.

    Voici le code modifié :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     Private Sub Workbook_Open() 
    ' Message d'alerte
     
    Dim bW As Boolean, bX As Boolean
    Dim bY As Boolean, bZ As Boolean
     
        bW = False: bX = False: bY = False: bZ = False
     
        If Sheets("Accueil").Range("G32").Value <= 0 Then bW = True
        If Sheets("Accueil").Range("D27").Value > 0 Then bX = True
        If Sheets("Accueil").Range("F9").Value <= 6 And Sheets("Accueil").Range("F9").Value >= 2 Then bY = True
        bZ = True
     
        MsgOuv
    End Sub
     
    Private Sub MsgOuv()
    Dim sStr As String
        sStr = ""
        If bW Then sStr = Sheets("Accueil").Range("G32") & " actions en cours" & vbCrLf
        If bX Then sStr = sStr & Sheets("Accueil").Range("D27") & " fiches en retard d'analyse" & vbCrLf
        If bY Then sStr = sStr & Sheets("Accueil").Range("F9") & " fiches en retard de traitement" & vbCrLf
        If bZ Then sStr = sStr & Sheets("Accueil").Range("K2") & " audits à réaliser" & vbCrLf
     
        If Len(sStr) > 0 Then MsgBox sStr, vbOKOnly + vbInformation, "Infos"
    End Sub
     
     
    End Sub

  4. #4
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut
    J'ai cherché, j'ai trouvé :
    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
    17
    18
    19
    20
    21
    ' Message d'alerte
     
    Dim bW As Boolean, bX As Boolean
    Dim bY As Boolean, bZ As Boolean
     
        bW = False: bX = False: bY = False: bZ = False
     
        If Sheets("Accueil").Range("G32").Value <= 0 Then bW = True
        If Sheets("Accueil").Range("D27").Value > 0 Then bX = True
        If Sheets("Accueil").Range("E27").Value > 0 Then bY = True
        'If Sheets("Accueil").Range("F9").Value <= 6 And Sheets("Accueil").Range("F9").Value >= 2 Then bY = True
        bZ = True
     
     Dim sStr As String
        sStr = ""
        If bW Then sStr = Sheets("Accueil").Range("G32") & " actions en cours" & vbCrLf
        If bX Then sStr = sStr & Sheets("Accueil").Range("D27") & " fiches en retard d'analyse - Niveau 2" & vbCrLf
        If bY Then sStr = sStr & Sheets("Accueil").Range("E27") & " fiches en retard de traitement - Niveau 2" & vbCrLf
        If bZ Then sStr = sStr & Sheets("Accueil").Range("D38") & " audits à réaliser" & vbCrLf
     
        If Len(sStr) > 0 Then MsgBox sStr, vbOKOnly + vbInformation, "Infos"

  5. #5
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, c'est vraiment n'importe quoi. On te fournit qqch de propre et tu le cochonnes. En plus tu n'as rien compris au CodeName.

  6. #6
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Salut, c'est vraiment n'importe quoi. On te fournit qqch de propre et tu le cochonnes. En plus tu n'as rien compris au CodeName.
    Pourquoi tant de haine ?
    Je n'ai rien cochonné, j'ai juste corrigé pour que ça fonctionne avec mon fichier.
    J'estime que si je pose une question, c'est que je n'ai pas la science infuse, donc je fais appel aux bonnes âmes charitables.

    Je ne sais même pas ce qu'est un code Name.

    Merci quand même.

    Sinon, si vous n'êtes pas trop fâché, pouvez vous m'expliquer comment mettre dans ce msgbox, une valeur en pourcentage, s'il vous plaît ?
    Dans ma cellule J7, j'ai 24,8% mais dans ma msgbox, j'ai 0.2475487454
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sStr = sStr & Sheets("Accueil").Range("J7") & " du référentiel documentaire est à jour" & vbCrLf
    Cordialement

  7. #7
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, qqch du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sStr = sStr & Feuil1.Range("J7") * 100 & " %" & vbTab & " du référentiel documentaire est à jour" & vbCrLf

  8. #8
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut
    Merci Kiki29.
    ça fonctionne parfaitement mais il faudrait que le résultat soit arrondi à 2 chiffres après la virgule. Comment dois faire ?

    Pour améliorer le visuel de ma msgbox, quel code mettre pour afficher les lignes en couleur ?

    Voici le code actuel :
    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
    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
    ' Message d'alerte
     
    Dim bA As Boolean, bB As Boolean
    Dim bC As Boolean, bD As Boolean
    Dim bE As Boolean, bF As Boolean
    Dim bG As Boolean, bH As Boolean
    Dim bI As Boolean, bJ As Boolean
     
     
        bA = False: bB = False: bC = False: bD = False: bE = False: bF = False: bG = False: bH = False: bI = False: bJ = False
     
     
        If Sheets("Accueil").Range("D26").Value > 0 Then bA = True
        If Sheets("Accueil").Range("E26").Value > 0 Then bB = True
        If Sheets("Accueil").Range("D27").Value > 0 Then bC = True
        If Sheets("Accueil").Range("E27").Value > 0 Then bD = True
        If Sheets("Accueil").Range("D28").Value > 0 Then bE = True
        If Sheets("Accueil").Range("E28").Value > 0 Then bF = True
        If Sheets("Accueil").Range("G32").Value > 0 Then bG = True
        If Sheets("Accueil").Range("H39").Value > 0 Then bH = True
        If Sheets("Accueil").Range("J22").Value > 0 Then bI = True
        If Sheets("Accueil").Range("J7").Value <= 0.5 And Sheets("Accueil").Range("J7").Value >= 0 Then bJ = True
     
     
        'If Sheets("Accueil").Range("F9").Value <= 6 And Sheets("Accueil").Range("F9").Value >= 2 Then bY = True
        'bZ = True
     
     Dim sStr As String
        sStr = ""
        If bA Then sStr = sStr & Sheets("Accueil").Range("D26") & " fiche(s) en retard d'analyse - Niveau 1 ;" & vbCrLf & vbCrLf
        If bB Then sStr = sStr & Sheets("Accueil").Range("E26") & " fiche(s) en retard de traitement - Niveau 1 ;" & vbCrLf & vbCrLf
        If bC Then sStr = sStr & Sheets("Accueil").Range("D27") & " fiche(s) en retard d'analyse - Niveau 2 ;" & vbCrLf & vbCrLf
        If bD Then sStr = sStr & Sheets("Accueil").Range("E27") & " fiche(s) en retard de traitement - Niveau 2 ;" & vbCrLf & vbCrLf
        If bE Then sStr = sStr & Sheets("Accueil").Range("D28") & " fiche(s) en retard d'analyse - Niveau 3 ;" & vbCrLf & vbCrLf
        If bF Then sStr = sStr & Sheets("Accueil").Range("E28") & " fiche(s) en retard de traitement - Niveau 3 ;" & vbCrLf & vbCrLf
        If bG Then sStr = sStr & Sheets("Accueil").Range("D38") & " audit(s) en retard ;" & vbCrLf & vbCrLf
        If bH Then sStr = sStr & Sheets("Accueil").Range("H39") & " actions du plan d'amélioration des processus sont en retard ;" & vbCrLf & vbCrLf
        If bI Then sStr = sStr & Sheets("Accueil").Range("J22") & " documents du référentiel ne sont pas à jour." & vbCrLf & vbCrLf
        If bJ Then sStr = sStr & "Seul," & Sheets("Accueil").Range("J7") * 100 & " %" & vbTab & "du référentiel documentaire est à jour" & vbCrLf & vbCrLf
     
        If Len(sStr) > 0 Then MsgBox sStr, vbOKOnly + vbExclamation, "Attention - Message d'alerte B.Q.I :"
    Cordialement

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour
    msgbox round(123.12345678,2)

  10. #10
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut
    Bonjour et merci,
    mais je ne comprend pas trop où il faut mettre ce code.
    Pour moi il s'agit de la ligne 49

    Cordialement

  11. #11
    Invité
    Invité(e)
    Par défaut
    Je t'es juste donné la fonction qui fait un arrondi sur 2 décimale! Mais à ta place je m'intéresserai plutôt à la ligne 39!

    Si l'intervention de mes collègues ne t'ont apporté en termes de connaissance une si faible plus value, il doivent être dessus!
    Dernière modification par Invité ; 22/11/2015 à 12h55.

  12. #12
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut
    Au zut, je me suis trompée d'une dizaine.
    Effectivement c'est bien 39.
    Mais comment je place le round ?

  13. #13
    Invité
    Invité(e)
    Par défaut
    Très précisément sur ce que tu veux arrondir aller je t'aide ca peut être un divisons ou un multiplication!

  14. #14
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut
    Je dois etre comme les kinders.
    Brune à l'extérieur et blonde à l'intérieur ! ! !
    je ne vois pas du tout.
    Dsl

  15. #15
    Invité
    Invité(e)
    Par défaut
    Tu as déposée 510 messages et tu as obtenue 230 points et tu n'as rien apprise et la on ne parle que de la fonction Round! (arrondi m)

    Dommage!

  16. #16
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Dame Belette, à tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sStr = sStr & Format(Feuil1.Range("J7") * 100, "0.00") & " %" & vbTab & " du référentiel documentaire est à jour" & vbCrLf
    Images attachées Images attachées  

  17. #17
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut
    Merci a vous 2, mais bien que ma valeur en J7 soit égale à 24,78%, la msgbox m'indique 0,00%

    Sinon avez vous une idée pour afficher les différentes lignes s'affichant dans la msgbox en couleur (par exemple rouge pour niveaux 1, orange niveaux 2, vert ....)

    Merci

  18. #18
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 181
    Points : 377
    Points
    377
    Par défaut
    Bonsoir à tous,
    Pour mettre de la couleur dans le texte d'une MsgBox, c'est impossible à moins d'utiliser la MsgBoxetendue V3.0. Mais là, ce sera compliqué !

    Une autre solution plus facile : remplacer la MsgBox par un formulaire avec des Controls Label dans la couleur voulue.

  19. #19
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut
    ça m'a l'air bien compliqué.
    J'attend une reponse pour mon probléme de pourcentage
    Encore merci

  20. #20
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, là il faudrait un échantillon ( sans données confidentielles ) pour voir.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2010] Msg Alerte au démarrage
    Par graphikris dans le forum Excel
    Réponses: 1
    Dernier message: 24/11/2014, 18h07
  2. [AC-2003] Message d alerte au démarrage de mon appli
    Par adelsunwind dans le forum IHM
    Réponses: 1
    Dernier message: 06/04/2009, 12h24
  3. Réponses: 6
    Dernier message: 02/03/2007, 09h44
  4. [VBA -A]Code pour répondre au question des msg d'alertes
    Par soad029 dans le forum VBA Access
    Réponses: 8
    Dernier message: 23/03/2006, 12h21
  5. Réponses: 2
    Dernier message: 09/10/2004, 20h45

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