Message d'alerte "conditionnel" à l'ouverture du fichier - besoi [Résolu]

HIBISCUS988 23 Messages postés jeudi 9 février 2017Date d'inscription 4 mai 2017 Dernière intervention - 9 févr. 2017 à 01:10 - Dernière réponse : HIBISCUS988 23 Messages postés jeudi 9 février 2017Date d'inscription 4 mai 2017 Dernière intervention
- 9 févr. 2017 à 12:40
Bonjour,

Je n’y connais rien ou pas grand-chose en formules Excel ou VBA.
J’ai quand même réussi, après un bon mois de galère, à mettre en place certaines formules pour atteindre mes objectifs, mais j’arrive au bout de mes compétences.

J’ai réussi à mettre un message d’alerte mais qui est automatique. J’ai trouvé plusieurs codes sur le net mais lorsqu’il faut les adapter à mon fichier, rien ne fonctionne ...

1 / Je souhaiterais que le message d’alerte ne s’active qu’en fonction des cellules situées dans la feuille (réservations), colonne (STATUT), comme suit :

- si la cellule = terminé message d’alerte à l’ouverture du fichier :
vbInformation message = Vous n’avez pas de réservations en cours

- si la cellule = échéance à surveiller message d’alerte à l’ouverture du fichier :
vbExclamation message : vous avez (nombre) réservation(s) en cours, échéance à surveiller

- si la cellule = réquisition à faire message d’alerte à l’ouverture du fichier :
vbCritical message : vous avez (nombre) réquisition(s) à faire et à transmettre à la compagnie aérienne concernée

2 / Depuis que j’ai fais une MFC (cellules de la colonne (alerte) en rouge si la valeur de la cellule = 1, mon fichier est devenu beaucoup trop lent à l’ouverture, et à l’enregistrement avant fermeture. Avez vous une astuce pour résoudre ce problème ?


Sachant que le fichier joint est un fichier "test", je vous remercie d'avance de bien m'expliquer ce que je dois faire, car je devrais adapter sur le vrai fichier qui se trouve au bureau. Merci d’avance à tous pour votre aide.


Mon fichier :

http://www.cjoint.com/c/GBix6sCnH2N
Afficher la suite 

9 réponses

Répondre au sujet
pijaku 12206 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention - 9 févr. 2017 à 08:17
0
Utile
Bonjour,

1-
Place dans un de tes modules la fonction suivante :
Function Alerte(What As String) As Double
    Alerte = WorksheetFunction.CountIf(Sheets("reservations").Columns(8), What)
End Function

Que tu appelles, dans le module ThisWorkbook par :
Private Sub Workbook_Open()
Dim Msg As String
Dim NbTerm As Double, NbRequis As Double, NbEcheance As Double

    NbEcheance = Alerte("échéance à surveiller")
    If NbEcheance > 0 Then Msg = "Vous avez " & NbEcheance & " réservation(s) en cours, échéance à surveiller" & vbCrLf
    NbRequis = Alerte("réquisition à faire")
    If NbRequis > 0 Then Msg = Msg & "Vous avez " & NbRequis & " réquisition(s) à faire et à transmettre à la compagnie aérienne concernée" & vbCrLf
    NbTerm = Alerte("terminé")
    If Msg = "" And NbTerm > 0 Then
        Msg = "Vous n’avez pas de réservations en cours"
    Else
        Msg = Msg & "Vous avez " & NbTerm & " réservations terminées"
    End If
    MsgBox Msg, vbInformation
End Sub


2-
choix 1 : Ta MFC peut être restreinte à moins de 65000 cellules comme c'est le cas actuellement
choix 2 : tu peux la remplacer par une macro événementielle.
Commenter la réponse de pijaku
HIBISCUS988 23 Messages postés jeudi 9 février 2017Date d'inscription 4 mai 2017 Dernière intervention - 9 févr. 2017 à 11:14
0
Utile
Bonjour, et Merci infiniment Pijaku pour tes explications, je viens de tester et il y a 2 ou 3 petits détails qui ne vont pas, mais c’est de ma faute, dans la précipitation, j’ai oublié certains détails d’importance.

Dans la feuille réservations, dans la colonne G, j’ai 3 niveaux d’alertes automatiques :

1 : pour « réquisition à faire » Message d’alerte à l’ouverture du fichier : « vous avez nbre réquisitions à faire …..» + icône rouge critical

2 : pour « réservation en cours, échéance à surveiller » Message d’alerte à l’ouverture du fichier « Vous avez nbre réservations en cours, échéances à surveiller » + icône jaune exclamation

3 : pour « terminé » Message d’alerte à l’ouverture du fichier « Vous n’avez pas de réservations en cours » + icône information Uniquement si aucune autre alerte (1) et (2) en cours


Pour la MFC, je vais essayer de trouver une macro événementielle et tester ça sur mon fichier.


- Je te présente toutes mes excuses en espérant que tu pourras encore m’aider avec ces précisions (si c’est possible). Ca serait vraiment génial. Merci d’avance.
Commenter la réponse de HIBISCUS988
pijaku 12206 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention - 9 févr. 2017 à 11:21
0
Utile
Tu veux donc 2 ou 3 MsgBox.
Ok.

Private Sub Workbook_Open()
Dim NbRequis As Double, NbEcheance As Double

    NbEcheance = Alerte("échéance à surveiller")
    If NbEcheance > 0 Then MsgBox "Vous avez " & NbEcheance & " réservation(s) en cours, échéance à surveiller", vbExclamation
    NbRequis = Alerte("réquisition à faire")
    If NbRequis > 0 Then MsgBox "Vous avez " & NbRequis & " réquisition(s) à faire et à transmettre à la compagnie aérienne concernée", vbCritical
    If NbRequis + NbEcheance = 0 Then MsgBox "Vous n’avez pas de réservations en cours", vbInformation
End Sub

Commenter la réponse de pijaku
HIBISCUS988 23 Messages postés jeudi 9 février 2017Date d'inscription 4 mai 2017 Dernière intervention - 9 févr. 2017 à 11:41
0
Utile
1
Merci pijaku, je viens de tester, le message à l'ouverture me dit que je n'ai pas de réservation en cours, alors que j'en ai une avec échéance au 15 février (alerte 2 ne fonctionne pas). Merci pour ton aide.
pijaku 12206 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention - 9 févr. 2017 à 11:47
Chez moi ça fonctionne avec le fichier que tu nous as transmis.
Vérifie les saisies dans les cellules (attention aux espaces supplémentaires, majuscules etc)
Commenter la réponse de HIBISCUS988
HIBISCUS988 23 Messages postés jeudi 9 février 2017Date d'inscription 4 mai 2017 Dernière intervention - 9 févr. 2017 à 11:54
0
Utile
Effectivement, j'ai enlevé la majuscule de "Echéance à surveiller", et ça fonctionne. Mais du coup je ne comprends pas, car ça fonctionne pour l'alerte 3 avec une majuscule à "Terminé". En tous cas merci infiniment pour ton aide, je me lance dans la macro événementielle pour mon dernier objectif.
Commenter la réponse de HIBISCUS988
HIBISCUS988 23 Messages postés jeudi 9 février 2017Date d'inscription 4 mai 2017 Dernière intervention - 9 févr. 2017 à 12:10
0
Utile
1
Pijaku, je suis un peu perfectionniste, et en rajoutant plusieurs échéances avec des niveaux d'alerte 1 et 2, les messages d'alerte à l'ouverture suivent l'ordre des cellules, donc il m'affiche le message d'alerte 2 avant les messages d'alerte 1. Aurais tu une astuce pour que les alertes 1 s'affichent en premier (réquisition à faire). Désolée d'abuser de ton temps, et d'avance un grand merci pour ton aide, je galère depuis pas mal de temps et toi tu me donnes la solution en 5 minutes.
pijaku 12206 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention - 9 févr. 2017 à 12:24
Toi, tu n'as rien compris au code...

Private Sub Workbook_Open()
Dim NbRequis As Double, NbEcheance As Double

NbRequis = Alerte("réquisition à faire")
    If NbRequis > 0 Then MsgBox "Vous avez " & NbRequis & " réquisition(s) à faire et à transmettre à la compagnie aérienne concernée", vbCritical
    NbEcheance = Alerte("échéance à surveiller")
    If NbEcheance > 0 Then MsgBox "Vous avez " & NbEcheance & " réservation(s) en cours, échéance à surveiller", vbExclamation
    If NbRequis + NbEcheance = 0 Then MsgBox "Vous n’avez pas de réservations en cours", vbInformation
End Sub
Commenter la réponse de HIBISCUS988
HIBISCUS988 23 Messages postés jeudi 9 février 2017Date d'inscription 4 mai 2017 Dernière intervention - 9 févr. 2017 à 12:40
0
Utile
Tu as tout compris pijaku, je n'y comprends pas grand chose .... Mais je ne demande qu'à apprendre ... Je te remercie encore et encore pour ton aide ça fonctionne super bien. Allez, je retourne dans mes macros événementielles ... Pas finie la galère :)
Commenter la réponse de HIBISCUS988