Afficher un message

estivill

XLDnaute Nouveau
bonjour,

je viens vers vous parceque je bloque....
j'ai crée ce classeur pour faciliter le suivi des entretien sur les equipements incendie de plusieurs bâtiments.
j'ai utilisé les mises en formes pour avoir un jeu de couleurs sur les dates en échéances, j'y ai placé un intermédiaire
(colonnes orange de la feuille batiment 1) afin de garder un accé simple et rapide pour
modifier les temps de validitées et temps d'alertes.

mon souhait serait d'afficher une MsgBox à l'ouverture du fichier qui me listerait par
feuille les equipements en échéances. en me précisant dans l'ideal combien de temps il me reste pour m'en occuper.

je bricole seulement avec les MsgBox et je ne sait pas comment faire pour qu'elle me dise ces éléments

ex:
batiment 1
desenfumage reste 3 mois
SYSTÈME D'ALARME 1 mois

batiment 2
RAS

etc.......

merci d'avance d'avoir prit le temps de lire et pour vos éventuelles propositions.

n'hesitez pas pour toutes questions
 

Pièces jointes

  • Suivi sécurité Bâtiments - mise en ligne v2.xlsm
    278.2 KB · Affichages: 17

estivill

XLDnaute Nouveau
j'ai trouvé un début de solution mais elle affiche 1 msgbox par alerte, ça fait un peu spam quand plusieurs dates arrivent....
je ne sais pas comment l'adapter pour que ça fasse 1 msgbox pour l'ensemble des alertes.
et pour que le test ne se fasse pas seulement sur la feuille active mais sur l'ensemble des feuilles du classeurs (peu importe leurs nombre) sauf la première qui me sert de sommaire.

solution trouvé qu'il me reste à adapter:

Private Sub Workbook_Open()
'Pour les stocks
Dim alertestock As Range

For Each alertestock In ActiveSheet.Range("Alerte_stock")
Valeur = Cells(alertestock.Row, 1) 'affichage du texte dans la premiere colonne
If alertestock = "0" Then 'test du flag d'alerte
MsgBox "La référence " & Valeur & " doit être commandée.", vbCritical, "Quantité en stock insuffisante" 'message d'alerte
Else
End If
If alertestock = "1" Then 'test du flag d'alerte
MsgBox "La référence " & Valeur & " devra bientôt être commandée.", vbExclamation, "Stock presque insuffisant" 'message d'alerte
Else
End If
Next

'Pour les commandes
Dim alertecommande As Range
For Each alertecommande In ActiveSheet.Range("Alerte_commande")
Valeur = Cells(alertecommande.Row, 1) 'affichage du texte dans la premiere colonne
If alertecommande = Date Then 'test du flag d'alerte
MsgBox "La référence " & Valeur & " sera livrée aujourd'hui.", vbCritical, "Réception d'une commande" 'message d'alerte
Else
End If
If alertecommande = Date + 1 Then 'test du flag d'alerte
MsgBox "La référence " & Valeur & " sera livrée demain.", vbInformation, "Prochaine commande" 'message d'alerte
Else
End If
Next
End Sub
 

xUpsilon

XLDnaute Accro
Bonjour,

Déjà, pense à utiliser les balises de code pour que ton code soit plus léger et facile à lire, parce que sinon ça donne pas envie de lire ;)
Ensuite, qu'est ce qu'un équipement "en échéance" ? Ca correspond à combien de temps avant l'échéance en question ?

Bonne continuation
 

estivill

XLDnaute Nouveau
salut,
je reviens vers toi pour un petit bug......
lorsque la message box s'affiche elle me sature de ligne qui n'ont pas lieu d'exister. j'ai fouillé mais je trouve pas....

si quelqu'un a une idée?

bonne soirée
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    15.4 KB · Affichages: 21
  • Suivi sécurité Bâtiments v4.2 - mise en ligne.xlsm
    330.7 KB · Affichages: 2

xUpsilon

XLDnaute Accro
Salut,

Voici la version corrigée j'avais fait une erreur.
Le problème est que je comptais le nombre de lignes à vérifier sur la première feuille (puisque Excel prend la première feuille par défaut si on n'indique pas la feuille que l'on souhaite étudier) avec Range("C" & Rows.Count).End(xlUp).Row. J'ai simplement rajouté Worksheets(i) devant Range, comme ça le code teste pour tous les éléments de la feuille qu'il est en train d'observer (plutot logique n'est ce pas ;) ).

Bonne continuation
 

Pièces jointes

  • Suivi sécurité Bâtiments v4.2 - mise en ligne.xlsm
    327.6 KB · Affichages: 17

estivill

XLDnaute Nouveau
salut je reviens ver toi,
ta solution était bien mais je souhaiterais mtn que le test soit "évolutif"

j'ai essayé de rédiger ça mais rien s'affiche et je comprends pas pk.......

je cherche à tester la date d'aujourd'hui par rapport à mes différents seuils d'alertes


Sub echeances()

Dim txt As String
txt = ""
For i = 2 To Worksheets.Count
Worksheets(i).Range("O6").FormulaLocal = "=AUJOURDHUI()"
For j = 9 To Range("T" & Rows.Count).End(xlUp).Row
If Worksheets(i).Range("O" & j) > Worksheets(i).Range("O6") > Worksheets(i).Range("J" & j) Then
If Worksheets(i).Range("E" & j) > Worksheets(i).Range("O6") > Worksheets(i).Range("O" & j) Then
If Worksheets(i).Range("E" & j) < Worksheets(i).Range("O6") Then

txt = txt & Worksheets(i).Name & " échéance " & Worksheets(i).Range("B" & j) & " expirée." & vbCrLf
Else
txt = txt & Worksheets(i).Name & " échéance " & Worksheets(i).Range("B" & j) & " expire moins de 2 mois." & vbCrLf
End If
Else
txt = txt & Worksheets(i).Name & " échéance " & Worksheets(i).Range("B" & j) & " expire moins de 3 mois." & vbCrLf
End If
End If
Next j
Next i
MsgBox txt, , " ----- VISITES A PREVOIR ------" 'afficher la msgbox
'
End Sub

merci d'avance du temps que tu pourras peut etre m'accorder
 

Pièces jointes

  • Suivi sécurité - SP - 5.0 mise en ligne.xlsm
    320.8 KB · Affichages: 4

xUpsilon

XLDnaute Accro
Re,

Il n'est pas possible de mettre plusieurs tests à la suite de cette manière
VB:
If Worksheets(i).Range("O" & j) > Worksheets(i).Range("O6") > Worksheets(i).Range("J" & j) Then

Il faut plutot écrire cela avec des ET logiques :
Code:
If (Worksheets(i).Range("O" & j) > Worksheets(i).Range("O6")) And (Worksheets(i).Range("O6") > Worksheets(i).Range("J" & j)) Then

Bonne continuation
 

Discussions similaires

Réponses
1
Affichages
269
Compte Supprimé 979
C