Message d'alerte Excel VBA

Bonjour, j'ai créé un message d'alerte indiquant une date dépassée avec ThisWorkbook et j'aimerai savoir s'il vous plait comment faire en sorte qu'il s'applique sur 3 feuille et pas que sur la 1ère.

Je vous joins mon code.

Merci d'avance pour votre aide.

Option Explicit

Sub Workbook_Open()

    Dim lig As Integer
    Dim derlig As Long
    Dim ch$
    derlig = Cells(Rows.Count, 1).End(xlUp).Row

    With Sheets("hill rom")
        For lig = 2 To .Cells(Rows.Count, 3).End(xlUp).Row
            If .Cells(lig, 16) <= Date _
                And .Cells(lig, 16) <> "" Then
                    ch = ch & vbCr & .Cells(lig, 3)
            End If
        Next lig
    End With
    MsgBox "Date atteinte ou dépassée" & vbCr & ch
End Sub

Bonjour,

Je ne suis pas sûr que cette macro soit la solution la plus efficace (la contrainte avec une msgbox, c'est qu'on perd l'info une fois qu'on a cliqué sur OK) mais voici quand même un essai :

Option Explicit

Sub Workbook_Open()

Dim lig As Integer
Dim derlig As Long
Dim ch$
dim ws as worksheet

for each ws in worksheets
    With ws
        derlig = .Cells(.Rows.Count, 1).End(xlUp).Row
        For lig = 2 To dl
            If .Cells(lig, 16) <= Date And .Cells(lig, 16) <> "" Then
                ch = ch & vbCr & "Feuille " & .name & " - " & .Cells(lig, 3)
            End If
        Next lig
    End With
next ws

MsgBox "Date atteinte ou dépassée" & vbCr & ch

End Sub

Sinon, une autre proposition par MFC (sur chaque feuille) :

=ET($P2>0;$P2<=AUJOURDHUI())

à appliquer à $A$2:$P$1000.

Cdlt,

Merci de votre réponse mais malheureusement le code ne marche pas.

Je crois que je me suis mal expliqué, je souhaiterai avoir 3 MsgBox pour les 3 feuilles et que chacune me disent les dates qui sont dépassées dans leur feuille. Je précise aussi que je suis stagiaire et j'ai la demande d'utiliser MsgBox .

Je joins un fichier pour mieux comprendre.

Ah bon, le code ne marche pas ? Bizarre...

Un nouvel essai avec 3 msgbox :

Option Explicit

Sub Workbook_Open()

Dim lig As Integer
Dim derlig As Long
Dim ch$
dim ws as worksheet

for each ws in me.worksheets
    With ws
        derlig = .Cells(.Rows.Count, 1).End(xlUp).Row: ch = ""
        For lig = 2 To dl
            If .Cells(lig, 16) <= Date And .Cells(lig, 16) <> "" Then
                ch = ch & vbCr & .Cells(lig, 3)
            End If
        Next lig
        if ch <> "" then
            MsgBox "Date atteinte ou dépassée" & vbCr & ch,, "Feuille " & .name
        else
            MsgBox "Aucune date dépassée",, "Feuille " & .name
        end if
    End With
next ws

End Sub

Cdlt,

Le code marche pour la première feuille puis me dis "dépassement de capacité" . Je reste malheureusement que sur une msgbox .

Je ne vois pas d'autre raison qu'un texte qui dépasse la capacité de la msgbox... C'est pour ça que ce n'est pas une bonne solution selon moi.

Pour en être sûr, comptez le nombre de dates dépassées sur la feuille 2. J'imagine qu'il y en aura plus que sur la feuille 1.

Bonjour tout le monde !

Test à nouveau en remplaçant Dim lig As Integer par Dim lig As Long

Bonjour,

Oh bon sang, un Pedro22 ! Ça faisait un bail ^^

J'ai fais en sorte de laisser 1 seule date dépassée pour chaque feuille. La seule erreur que je vois c'est que je dois me tromper en mettant définissant la variable dl.

Vous en pensez quoi?

Bonjour,

Oh bon sang, un Pedro22 ! Ça faisait un bail ^^

Salut Noël !

Je ne suis pas mort ! Seulement bien occupé...

Oui bien joué ! C'est ma faute désolé, par habitude, je mets dl et j'aurais dû mettre derlig !

Bonjour Pedro et JoyeuxNoel !

J'ai fais en sorte de laisser 1 seule date dépassée pour chaque feuille. La seule erreur que je vois c'est que je dois me tromper en mettant définissant la variable dl.

Vous en pensez quoi?

C'est aussi une erreur, la variable doit s'appeler derlig partout, ou dl partout, mais pas un mélange des 2.

Edit : salut 3GB, désolé pour le doublon, je dégaine moins vite que toi !

Merci Pedro22 c'était ça et merci ci à vous aussi 3GB.

Rechercher des sujets similaires à "message alerte vba"