Message d'alerte "conditionnel" à l'ouverture du fichier - besoi

Résolu/Fermé
HIBISCUS988 Messages postés 31 Date d'inscription jeudi 9 février 2017 Statut Membre Dernière intervention 15 mars 2018 - 9 févr. 2017 à 01:10
HIBISCUS988 Messages postés 31 Date d'inscription jeudi 9 février 2017 Statut Membre Dernière intervention 15 mars 2018 - 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 :

https://www.cjoint.com/c/GBix6sCnH2N
A voir également:

7 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
9 févr. 2017 à 08:17
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.
0
HIBISCUS988 Messages postés 31 Date d'inscription jeudi 9 février 2017 Statut Membre Dernière intervention 15 mars 2018 1
9 févr. 2017 à 11:14
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.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
9 févr. 2017 à 11:21
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

0
HIBISCUS988 Messages postés 31 Date d'inscription jeudi 9 février 2017 Statut Membre Dernière intervention 15 mars 2018 1
9 févr. 2017 à 11:41
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.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
HIBISCUS988 Messages postés 31 Date d'inscription jeudi 9 février 2017 Statut Membre Dernière intervention 15 mars 2018 1
9 févr. 2017 à 11:54
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.
0
HIBISCUS988 Messages postés 31 Date d'inscription jeudi 9 février 2017 Statut Membre Dernière intervention 15 mars 2018 1
9 févr. 2017 à 12:10
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.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 9/02/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
0
HIBISCUS988 Messages postés 31 Date d'inscription jeudi 9 février 2017 Statut Membre Dernière intervention 15 mars 2018 1
9 févr. 2017 à 12:40
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 :)
0