Erreur d'exécution 1004
Résolu
Loic_7447
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
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 :
Merci d'avance pour vos réponses !
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 !
A voir également:
- Erreur d'exécution 1004
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Java code erreur 1603 ✓ - Forum Windows
5 réponses
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.
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.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, as-tu bien
à quelle ligne obtiens-tu le message d'erreur?
option expliciten début de module?
à quelle ligne obtiens-tu le message d'erreur?
Merci pour vos réponses, ça m'a permis de corriger quelques détails, mais je rencontre toujours le même problème...
Le message d’erreur 1004 apparait au niveau de la ligne 8, au premier
J'ai déclaré
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é
reponseclientet
datereponseen 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.
Bonjour,
Es-tu sûr d'être positionné sur la bonne feuille à l'ouverture du fichier ? Ce doit être la feuille dans laquelle il y a Range("reponse_envoye") et Range("date_reponse") ?
Si tu fais For Each reponseclient In ActiveSheet.Range, reponseclient doit être de type Range, idem pour datereponse.
Difficile de voir le problème sans un extrait représentatif de ton fichier.
Cordialement
Es-tu sûr d'être positionné sur la bonne feuille à l'ouverture du fichier ? Ce doit être la feuille dans laquelle il y a Range("reponse_envoye") et Range("date_reponse") ?
Si tu fais For Each reponseclient In ActiveSheet.Range, reponseclient doit être de type Range, idem pour datereponse.
Difficile de voir le problème sans un extrait représentatif de ton fichier.
Cordialement
Je ne peux malheureusement pas partager mon fichier car il contient des infos confidentielles ...
J'ai refais quelques modifications en vérifiant bien la feuille à l'ouverture, le nom et le type de variables ... Mais cette fois ci, le fichier refuse de s'ouvrir en laissant la fenêtre de lancement excel affiché à l'écran (j'ai essayé sur plusieurs ordi pour le même résultat).
Voici mon nouveau code :
J'espère que vous allez pouvoir m'aider une fois de plus, merci d'avance !
J'ai refais quelques modifications en vérifiant bien la feuille à l'ouverture, le nom et le type de variables ... Mais cette fois ci, le fichier refuse de s'ouvrir en laissant la fenêtre de lancement excel affiché à l'écran (j'ai essayé sur plusieurs ordi pour le même résultat).
Voici mon nouveau code :
Option Explicit Private Sub workbook_open() Sheets("2019").Activate Dim reponseclient As Range Dim datereponse As Range 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
J'espère que vous allez pouvoir m'aider une fois de plus, merci d'avance !
Ne peux-tu pas supprimer les données ou les remplacer par des données non confidentielles?
Il est recommandé de ne pas utiliser
Je suggère
Je pense que la logique de ton code est incorrecte, et qu'il prend simplement un temps trop long. A quoi sert la boucle en ligne 12?
Il serait sans doute beaucoup plus simple que tu testes ton code sans l'insérer dans workbook_open. Cela te permettra d'utiliser les facilités de débogage offertes par le VBA.
Il est recommandé de ne pas utiliser
Activate.
Je suggère
Sheets("2019").Range("reponse_envoye")
Je pense que la logique de ton code est incorrecte, et qu'il prend simplement un temps trop long. A quoi sert la boucle en ligne 12?
Il serait sans doute beaucoup plus simple que tu testes ton code sans l'insérer dans workbook_open. Cela te permettra d'utiliser les facilités de débogage offertes par le VBA.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question