XL 2013 Erreur 1004 quand le fichier excel est lu depuis un mail ou il figure en pièce jointe

escouger

XLDnaute Occasionnel
Bonjour,

Je suis en but à un problème que je n'arrive pas à identifier et ne sais pas comment le "debugger".
J'ai un fichier excel contenant des macros qui, lorsque je l'exécute se comporte normalement.
Si je m'envoie ce fichier comme pièce attachée dans un mail, et que, lorsque j'ouvre ce mail, je double clique sur la pièce jointe, je recois le message "Erreur d'exécution 1004" La méthode 'Sheets" de l'objet '_Global' a échoué.
Je suis contraint de presser le bouton "FIN" pour continuer...sans savoir si c'est correct.

Par contre, si j'enregistre la pièce jointe sur un répertoire local quelconque et que je l'ouvre, tout marche bien.
J'aimerais déterminer quelle ligne de code de macros provoque cette erreur mais ne sait pas comment faire pour "debugger" dans ce cas-là?
Si vous avez une piste, je serai intéressé
Merci d'avance
GE
 

Dranreb

XLDnaute Barbatruc
Re : Erreur 1004 quand le fichier excel est lu depuis un mail ou il figure en pièce j

Bonjour.
Le mieux serait de remplacer l'expression Sheets(NomExcelDeFeuile) par CodeName c'est à dire par le nom d'objet Worksheet qui représente cette feuille dans VBA.
 

escouger

XLDnaute Occasionnel
Re : Erreur 1004 quand le fichier excel est lu depuis un mail ou il figure en pièce j

Merci pour cette rapide réponse.

Je veux bien volontiers faire cela, mais ne sais pas du tout comment.
Je n'ai pas la main sur ce message.
Est-ce un paramètre global qui gère ce nom ?
Est-ce que je peux remplacer quelque part SHEETS par CodeName dans le VBA ?
Merci
GE
 

Dranreb

XLDnaute Barbatruc
Re : Erreur 1004 quand le fichier excel est lu depuis un mail ou il figure en pièce j

Cherchez Sheets dans tout le projet.
Chaque fois que vous en trouvez un, cherchez le nom spécifié en argument dans la rubrique Microsoft Excel Objets du projet VBA.
Il y figurera entre parenthèses derrière un nom d'objet Worksheet. C'est ce nom qu'il faut prendre à la place de l'ensemble de l'expression Sheets(NomExcelDeFeuile).
Remarque: on l'appelle aussi parfois à tort le CodeName parce qu'il existe une propriété String en lecture seule qui s'appelle comme ça, et qui reproduit ce nom.
 
Dernière édition:

escouger

XLDnaute Occasionnel
Re : Erreur 1004 quand le fichier excel est lu depuis un mail ou il figure en pièce j

J'ai fait cela, mais çà ne change rien.....ou alors je n'ai pas compris!

Je reviens à ma question initiale:
Pourquoi, quand j'exécute ce tableau en double cliquant sur la pièce jointe de mon mail, son comportement est différent que lorsque je l'exécute depuis son répertoire ?
Dans le premier cas, j'ai ce message 1004
Dans le second cas tout va bien.

Comme je n'arrive pas à le debugger (mes breakpoints sont inactifs lorsque je le lance depuis le mail),
est-ce que je dois mettre plein de messages (type InputBox) pour voir par ou il passe avant de se planter ?

Merci

GE
 

Dranreb

XLDnaute Barbatruc
Re : Erreur 1004 quand le fichier excel est lu depuis un mail ou il figure en pièce j

Joignez votre classeur.
Je suppose que pour une raison assez mystérieuse, quand vous l'ouvrez depuis le lien, il ne devient pas immédiatement le classeur actif.
Et que dans le classeur actif il n'existe pas de Sheets("Toto") ni Sheets("Titi"). Ça pourrait se résoudre en mettant chaque fois ThisWorkbook.Sheets(etc. Mais c'est idiot de faire ces recherches dans la collection Sheets du classeur alors que des objets Worksheet qui les représentent sont directement connus du projet VBA.
 

escouger

XLDnaute Occasionnel

Dranreb

XLDnaute Barbatruc
Re : Erreur 1004 quand le fichier excel est lu depuis un mail ou il figure en pièce j

Le premier suspect c'est Sheets("Rando ").Select dans la macro auto_open de Module3.
Essayez à la place Feuil1.Select
Si toutefois vous tenez à ces Select. Normalement dans les macros on en fait le moins possible.
Cela dit si le classeur n'est pas actif pour une raison ou une autre, ça fera peut être une autre erreur, mais une erreur tout de même…
 

escouger

XLDnaute Occasionnel
Re : Erreur 1004 quand le fichier excel est lu depuis un mail ou il figure en pièce j

Hélas çà ne change rien de mettre "Feuil1.Select"
J'ai mis un MSGBOX("Start") comme première instruction de la macro Auto_Open et il ne s'exécute pas. J'en déduis donc que ce message est émis encore en amont.
J'ai aussi constaté que ce message apparaissait si, après avoir copié le tableau sur mon bureau, je l'exécutai depuis ce bureau.

Mais chose étrange en l'exécutant depuis le bureau , si j'appuie sur le bouton "FIN"
puis quitte,
puis le relance une seconde fois,

.....cette deuxième fois je n'ai plus le message !

Bref je suis au bout de mes connaissances en Excel.

Merci d'avoir consacré un peu de votre temps à ce mystère

GE
 

Dranreb

XLDnaute Barbatruc
Re : Erreur 1004 quand le fichier excel est lu depuis un mail ou il figure en pièce j

En tout cas le message parle de méthode de l'objet global. Je n'ai jamais compris pourquoi parce qu'il s'agit en fait de méthode de l'objet Application. Alors faite tout votre possible pour ne plus utiliser ces méthodes, je les sais casse-gueule. Ne jamais consulter de collection Worksheets sans préciser une expression Workbook devant suivie d'un point, ne plus jamais faire Range( ou Cells( sans préciser une expression Worksheet devant. Utilisez des variables As Workbook, Worksheet ou Range sur lesquelles vous effectuerez des Set appropriés pour éviter les redites. Utilisez aussi les noms d'objets Worksheet de la rubrique Microsoft Excel Objets du projet.
 

escouger

XLDnaute Occasionnel
Re : Erreur 1004 quand le fichier excel est lu depuis un mail ou il figure en pièce j

Dernière piste....
Si je copie le fichier depuis son répertoire d'origine sur un autre répertoire (Copier / coller) (par exemple le bureau) et que je double clique sur le fichier dans son nouveau répertoire, j'ai le message d'erreur.
Si je clique alors sur le bouton "FIN", puis sort avec enregistrement, puis enfin double clique à nouveau sur ce fichier (toujours dans son nouveau répertoire), çà marche. C'est toujours la première fois que çà dysfonctionne.
Contrairement à ma première hypothèse lorsque j'ai déclaré cet incident, çà n'est pas lié au fait que le fichier soit joint dans un mail.
Il doit y avoir un contexte différent lors de la première exécution sur un nouveau répertoire, et cela se rétablit après que l'enregistrement se soit effectué. Tout se passe en amont de la première instruction VBA dans la macro Auto_open.


Autre constat: Si je déclare le répertoire dans lequel j'ai copié mon fichier initial comme "Emplacement approuvé" dans les options excel, je n'ai plus le problème. C'est comme si, après la première exécution sur un répertoire non approuvé, et après que j'ai répondu OK aux messages liés à cette approbation lors de l'ouverture, il enregistrait cette approbation et ne posait plus la question la seconde fois.
Ce serait donc lors de ce processus d'approbation au premier lancement qu'il générerait l'erreur?

Merci pour votre aide

GE
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 257
Membres
102 840
dernier inscrit
blaise09