Alerte avec une Msgbox sur des dates

Bonjour, je n'ai jamais posté de sujet sur un forum car d'habitude j'arrive à me débrouiller avec ceux qui sont déjà présent mais aujourd’hui je bloque.

J'aimerais afficher à l'ouverture de mon fihcier excel une MsgBox avec " Les documents n°2, n°4, n°9 " arrive a échéance par exemple quand leur date approche ( par exemple un mois avant la date ).

Vous trouverez mon fichier ci-joint. Ce n'est malheureusement pas le "vrai" fichier( car je ne peux pas le poster ) mais je veux juste comprendre le principe et je m'adapterais.

Cordialement

6test.xlsx (9.05 Ko)

Bonjour,

Je te laisse tester le fichier.

23test.xlsm (15.01 Ko)

Merci, je regarde ça tout de suite et je te fais un retour

Re

J'ai le message d'erreur suivant " La méthode 'Cells' de l'objet '_Global' a échoué " ( Erreur que je ne comprend pas au passage si tu aurais une explication )

re,

Tu as ce message quand tu ouvre le fichier que je t'ai envoyé ?

Oui, je l'ouvre, j'active la modification et le message d'erreur s’affiche ensuite.

C'est vraiment louche parce que chez moi tout fonctionne.

Et si tu essaye de coller le bout de code dans ton fichier à toi ?

tiens je te le joins, colle cela dans thisworkbook puis enregistre en xlsm et rouvre le fichier pour voir.

Private Sub Workbook_Open()
Dim ajd As Date 'On définit le type de variable

     ajd = Format(Now, "dd/mm/yyyy") ' ce format permet d'afficher la date d'aujourd'hui JJ/MM/AAA
     compteur = "" 'Ceci va nous servir de stocker les documents à afficher à la fin du code
     ligne = 1 'c'est la où nos données commencent
     While Cells(ligne, "C") <> "" 'tant que la colonne C nest pas vide on faot les instructions suivantes
        If Cells(ligne, "C").Value - ajd < 30 Then 'si la date du documet - la date d'ajd est < 30
            compteur = compteur + Cells(ligne, "A") & "  " 'on stock dans compteur les documents
        End If
        ligne = ligne + 1 'on teste la ligne suivante
     Wend
     MsgBox (compteur & "Arrivent à écheance")

End Sub

Je ne sais pas d’où venait le problème mais en collant le code dans mon fichier, ça marche parfaitement. Merci.

Tu as un peu de temps pour expliquer le code ? Je suis content d'avoir la solution mais j'aimerais aussi comprendre. Tu peux m'expliquer plus tard aussi si tu n'a pas le temps. Merci Encore

Bonjour

moi je préfère avec une listbox

A toi de voir

A+

Maurice

22test-1.xlsm (20.15 Ko)

C'est vrai que je trouve ça mieux aussi, je ne savais pas que c'était possible.

Juste une question? pourquoi l'userform s'ouvre suer la feuille 3 ? et pas avec les documents ?

Re,

Suite à ta demande j'ai mis des commentaires sur le code qui est au dessus.

Bonne journée.

Merci

Bonjour

ne pas confonde le codename avec ne name sur un onglet

voila la modife

A+

Maurice

11test-1.xlsm (22.12 Ko)

Bonjour, j'ai toujours le même problème quand j'essaye d'appliquer ça à mon fichier

La date sur lesquels je veux tester se trouve colonne F.

Le voici :

Cordialement

13fs01.xlsm (97.66 Ko)

Salut,

Tu as une erreur car le code commence à calculer à partir de la ligne 1.

Alors que ta ligne 1 c'est les titres.

Il faut juste que tu remplaces for i=1 par for i = 2

Cdlt.

Salut, Merci pour ton aide mais le problème persiste.

Tu as réussi à faire fonctionner le fichier en modifiant seulement cette ligne ?

RE,

Tu as un document pour lequel la 'Date APPROBATION' est vide (ligne 185).

Du coup rien moins une date te donne une erreur..

il faut revoir le code

Je vais travailler un peu sur ça et je te tiens au courant.

Je vais essayer de faire un test et en cas de case vide de mettre une date prédéfini.

Le fichier fonctionne super sans aucune cellule de date vide.

Merci beaucoup.

RE,

Tiens remplace le bout de code par cela.

Sub InitList()
Dim Ajd As Date
Ajd = DateValue(Now)
Set Sh = Sheets("T impression") '  Feuil1 = au CodeName
    With ListBox1
        .Clear
        nblig = Sh.Range("A" & Rows.Count).End(xlUp).Row
            For L = 2 To nblig
                    While Cells(L, 6) = ""
                        L = L + 1
                    Wend
                    If Sh.Cells(L, 6).Value - Ajd < 30 Then
                      .AddItem Sh.Cells(L, 1)
                      .List(.ListCount - 1, 1) = Sh.Cells(L, 2)
                      .List(.ListCount - 1, 2) = Sh.Cells(L, 3)
                      .List(.ListCount - 1, 3) = L                  ' Numéro de la ligne
                    End If
            Next
    End With
End Sub

Bonjour

A voir

Sub InitList()
Dim Ajd As Date
Ajd = DateValue(Now)
Set Sh = Sheets("T impression") '  Feuil1 = au CodeName
    With ListBox1
        .Clear
            For L = 2 To Sh.Range("A" & Rows.Count).End(xlUp).Row
                If IsDate(Sh.Cells(L, 6).Value) Then
                    If Sh.Cells(L, 6).Value - Ajd < 30 Then
                      .AddItem Sh.Cells(L, 1)
                      .List(.ListCount - 1, 1) = Sh.Cells(L, 2)
                      .List(.ListCount - 1, 2) = Sh.Cells(L, 3)
                      .List(.ListCount - 1, 3) = L                  ' Numéro de la ligne
                    End If
                End If
            Next
    End With
End Sub

A+

Maurice

Rechercher des sujets similaires à "alerte msgbox dates"