Erreur d'exécution 1004 [Résolu]

Signaler
Messages postés
30
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2019
-
f894009
Messages postés
14950
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
20 janvier 2020
-
Bonjour à tous,

J'ai fait un programme qui affiche un message à l'ouverture d'un ficher excel.
Petit problème, lorsque j'ouvre le fichier, on m'affiche "erreur d'exécution 1004".

Voici mon programme :
Private Sub workbook_open()
Dim reponseclient As Range
Dim datereponse As Range

For Each reponseclient In ActiveSheet.Range("reponse_envoye")
    If reponseclient = "" Then
        For Each datereponse In ActiveSheet.Range("date_reponse")
        Valeur = Cells(alertestock.Row, 6)
            If datereponse = "date-3" Then
            MsgBox "Le client " & Valeur & " attend une réponse dans trois jours.", vbCritical, "Réponse sous 3 jours"
            Else
            End If
            If datereponse = "date" Then
            MsgBox "Le client " & Valeur & " attend une réponse aujourd'hui.", vbCritical, "Réponse aujourd'hui"
            Else
            End If
        Next
    End If
Next
End Sub


Merci d'avance pour vos réponses !

5 réponses

Messages postés
4623
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
20 janvier 2020
119
Bonjour Loic, bonjour le forum,

alertestock non déclarée ?!... J'ai aussi l'impresion que datereponse devrait être une variable de type Date... Bref, impossible de te répondre sans le fichier qui va bien !...
voir par exemple https://www.cjoint.com/ pour mettre un fichier en pièce jointe.
Messages postés
9382
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2020
492
bonjour, as-tu bien
option explicit
en début de module?
à quelle ligne obtiens-tu le message d'erreur?
Messages postés
30
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2019

Merci pour vos réponses, ça m'a permis de corriger quelques détails, mais je rencontre toujours le même problème...

Option Explicit

Private Sub workbook_open()
Dim reponseclient As Date
Dim datereponse As Date
Dim Client As Variant

For Each reponseclient In ActiveSheet.Range("reponse_envoye")
    If reponseclient = "" Then
        For Each datereponse In ActiveSheet.Range("date_reponse")
        Client = Cells(datereponse.Row, 6)
            If datereponse = Date - 3 Then
            MsgBox "Le client " & Client & " attend une réponse dans trois jours.", vbCritical, "Réponse sous 3 jours"
            Else
            End If
            If datereponse = Date Then
            MsgBox "Le client " & Client & " attend une réponse aujourd'hui.", vbCritical, "Réponse aujourd'hui"
            Else
            End If
        Next
    End If
Next
End Sub


Le message d’erreur 1004 apparait au niveau de la ligne 8, au premier
For each ...
.
J'ai déclaré
reponseclient
et
datereponse
en tant que Date, mais un autre message d'erreur s'affiche et me dit "La variable de type For each doit être de type Variant ou Object". Je ne sais donc pas trop quoi faire pour que mon programme fonctionne.
Loic_7447
Messages postés
30
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2019
> yg_be
Messages postés
9382
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2020

Après la ligne n°9
 If date_envoi_mail = "" Then
---->
For Each date_attendue In ActiveSheet.Range("delai_reponse_client")
...
f894009
Messages postés
14950
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
20 janvier 2020
1 210 > Loic_7447
Messages postés
30
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2019

Bonjour,
Si vous utilisez le meme fichier que celui que vous avez mis a dispo, le nom des plages nommees n'est pas le bon

C'est vraiment vous qui avez ecrit ce code????
Loic_7447
Messages postés
30
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2019
> f894009
Messages postés
14950
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
20 janvier 2020

J'ai essayé de bricoler à partir d'un trouvé sur internet.

De base, le programme m'affichait un message a l'ouverture du fichier si un client attendait une réponse dans les jours qui arrivaient. Il fonctionnait très bien, mais ne prenait pas en compte si une réponse avait déjà été envoyée ou non. C'est la où j'ai voulu ajouter un if et que j'ai commencer à avoir du mal à le faire fonctionner.
yg_be
Messages postés
9382
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2020
492 > Loic_7447
Messages postés
30
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2019

peux-tu publier le code ici? j'ai l'impression que tu fais référence à une ligne que tu as supprimée.
sais-tu ce que fait un for each?
oublions le programme un instant: dans le classeur, où se trouve la date de réponse pour un client?
ALS35
Messages postés
364
Date d'inscription
jeudi 18 juillet 2019
Statut
Membre
Dernière intervention
1 janvier 2020
13 > yg_be
Messages postés
9382
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2020

Bonjour,

Dans le fichier exemple que tu as posté, il n'y a aucune colonne qui porte le nom de date_reponse ni de reponse_envoye (voir tes infos post #14) et le code posté ne correspond pas aux noms définis dans ta feuille (déjà dit plusieurs fois).
De plus dans ton fichier tu as des lignes fusionnées et des en-têtes de colonnes fusionnées, c'est pas le top dans Excel.

Alors si tu veux de l'aide fais un fichier exemple qui soit cohérent avec tes propos et ton code.

Cordialement
Messages postés
9382
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2020
492
suggestion:
Option Explicit

Private Sub workbook_open()
Call rappels
End Sub
Private Sub rappels()
Dim date_envoi_mail As Range
Dim date_attendue As Date
Dim Client As Variant

For Each date_envoi_mail In ActiveSheet.Range("date_client_informe")
    If date_envoi_mail = "" Then
        If IsDate(Cells(date_envoi_mail.Row, 8)) Then
            date_attendue = CDate(Cells(date_envoi_mail.Row, 8))
            Client = Cells(date_envoi_mail.Row, 6)
            If date_attendue = Date - 3 Then
                MsgBox "Le client " & Client & " attend une réponse dans trois jours.", vbCritical, "Réponse sous 3 jours"
            Else
                If date_attendue = Date Then
                MsgBox "Le client " & Client & " attend une réponse aujourd'hui.", vbCritical, "Réponse aujourd'hui"
                End If
            End If
        End If
    End If
Next
End Sub
Messages postés
30
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2019

Bonjour à tous,

J'ai résolu mon problème en repartant de zéro. Une partie du problème était liée à la mise en forme du fichier (cellules fusionnées ...). J'ai donc revu cette mise en forme et adapté un nouveau programme.

Merci pour votre aide !
f894009
Messages postés
14950
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
20 janvier 2020
1 210
Bonjour,
C'est ce que je vous avais recommande post 20........