XL 2010 Erreur d'exécution '1004'

  • Initiateur de la discussion Initiateur de la discussion fablog
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fablog

XLDnaute Occasionnel
Bonjour tout le monde,

Je rencontre un problème, que je sais pas résoudre, lors de l'exécution de la macro ci-dessous. Son but est de recopier les données de certaines cellules, de la feuille "1. Planification", sur un autre document Excel nommé processus.xlsm. Le message d'erreur est:
Erreur d'exécution '1004': La méthode Copy de la classe Range a échoué.
Pouvez-vous m'aider svp?

VB:
Sub CopierCollerToutPlanification()
'
' Macro1 Macro


Dim WsC As Worksheet
Dim T, Plages
Dim i As Long, j As Long
Dim P1 As String, P2 As String, P3 As String, P4 As String, P5 As String, P6 As String, P7 As String, P8 As String, P9 As String, P10 As String
    Set WsC = Workbooks("Processus.xlsm").Worksheets("1. Planification")
     P1 = "E3:G3,E5:G5,E7,E9,J3:P3,J5:P5,J7:P7,J9:P9,U3:W3,U5:W5,U7:W7,AE3:AF3,AE5:AF5,AE7:AF7,AE9:AF9"
     P2 = "M13:M40,M42:M53,M55:M68,M70:M71,M73:M92,M94:M113,M115:M134,M136:M143,M145:M152,M154:M157"
     P3 = "O13:O40,O42:O53,O55:O68,O70:O71,O73:O92,O94:O113,O115:O134,O136:O143,O145:O152,O154:O157"
     P4 = "Q13:Q40,Q42:Q53,Q55:Q68,Q70:Q71,Q73:Q92,Q94:Q113,Q115:Q134,Q136:Q143,Q145:Q152,Q154:Q157"
     P5 = "S13:S40,S42:S53,S55:S68,S70:S71,S73:S92,S94:S113,S115:S134,S136:S143,S145:S152,S154:S157"
     P6 = "U13:U40,U42:U53,U55:U68,U70:U71,U73:U92,U94:U113,U115:U134,U136:U143,U145:U152,U154:U157"
     P7 = "AA13:AA40,AA42:AA53,AA55:AA68,AA70:AA71,AA73:AA92,AA94:AA113,AA115:AA134,AA136:AA143,AA145:AA152,AA154:AA157"
     P8 = "AC13:AC40,AC42:AC53,AC55:AC68,AC70:AC71,AC73:AC92,AC94:AC113,AC115:AC134,AC136:AC143,AC145:AC152,AC154:AC157"
     P9 = "AE55:AE68,AE70:AE71,AE73:AE92,AE94:AE113,AE115:AE134,AE136:AE143,AE145:AE152,AE154:AE157"
     P10 = "AG13:AG40,AG42:AG53,AG55:AG68,AG70:AG71,AG73:AG92,AG94:AG113,AG115:AG134,AG136:AG143,AG145:AG152,AG154:AG157"
     P11 = "B165:G166,M165:Q165,M166:Q166,M167:Q167,M168:Q168,U165:W165,U166:W166,U167:W167,U168:W168,Y165,Y166,Y167,Y168,AG165,AG166,AG167,AG168"

    Plages = Array(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11)
    For j = 0 To UBound(Plages)
        T = Split(Range(Plages(j)).Address, ",")
        For i = 0 To UBound(T)
            Sheets("1. Planification").Range(T(i)).Copy WsC.Range(T(i))
        Next i
    Next j
End Sub
 
Le fichier est bien trop complexe pour que j'en mette une copie ici. Par contre, merci pour m'avoir mis sur la voie. Ce qui me surprend c'est que j'ai déprotégé toute la feuille, pensant justement que cela pouvait venir de là. Peut etre que c'est un pb de concordance de cellule...
 
Bonjour,

"Son but est de recopier les données de certaines cellules, de la feuille "1. Planification" *** d'un fichier X je suppose***, sur un autre document Excel nommé processus.xlsm".

et dans ton code tu écris ceci:
Set WsC = Workbooks("Processus.xlsm").Worksheets("1. Planification") c'est la feuille "1.Planification" que tu copies sur elle même non et pas sur un autre fichier ?
Je me trompe peut être...

J'ai ouvert ici un fichier "processus1" qui copie vers "processus" , onglet "1.Planification" avec couleurs dans les zone pour mieux voir 🙂

P.
 

Pièces jointes

Dernière édition:
Bonjour gosselien,
Que ce soit dans le fichier source ou de destination, le feuille s'appelle toujours "1. Planification". Le fichier de destination s'appelera toujours processus.xslm, alors que le fichier source aura un nom X.

Je précise que j'ai éssayé cette macro sur une autre feuille, pour laque je précisais des cellules différentes à copier, et cela fonctionne. Il semble donc que cela soit sur ma feuille "1. Planification", source ou de destination, qu'il y ait une particularité qui bloque la macro.

Dans le deboggeur d'Excel, il met en jaune la ligne:
VB:
Sheets("1. Planification").Range(T(i)).Copy WsC.Range(T(i))

Merci!
 
Dernière édition:
Bonsoir tous
Déjà pour éliminer une source , on teste !!! donc renomme ton onglet 1.planification par un truc tout
bête genre testpb ...etc et modifie ta macro en conséquence
si cela ne marche pas tu sauras au moins que cela ne vient pas du nom !!
 
Bonjour,

fait ton .copy et le .paste sur une autre ligne.
Ca permettra de confirmer que le problème est sur la feuille destination ou non.

Questions annexes : version d'excel ?
Dès la 1ère copie ? Si non valeur de T(i) au plantage
As-tu rendu (in)visibles des feuilles avant ?
Un userform ouvert ?
eric
 
Bonsoir le fil, le forum

J'ai testé sur le même classeur
(avec cellules fusionnées sur feuille source et/ou feuille destination masquée)
Pas de message d'erreur
VB:
Sub CopierCollerToutPlanification_shorten()
Dim WsC As Worksheet, T, Plages, i&, j&
Dim P1$, P2$, P3$, P4$, P5$, P6$, P7$, P8$, P9$, P10$
Set WsC = Feuil2
     P1 = "E3:G3,E5:G5,E7,E9"
     P2 = "M13:M40,M42:M53"
     P3 = "Q13:Q40,Q42:Q53,Q55:Q68"
    Plages = Array(P1, P2, P3)
    For j = 0 To UBound(Plages)
        T = Split(Range(Plages(j)).Address, ",")
        For i = 0 To UBound(T)
            Feuil1.Range(T(i)).Copy WsC.Range(T(i))
        Next i
    Next j
End Sub
 
Bonjour tout le monde et merci pour votre aide.
Eric tu m'as mis la puce à l'oreille! J'ai mis un espion sur la variable T(i) et j'ai identifié la cellule fusionnée qui était simplement mal définie. Après correction tout fonctionne.

Bonne journée!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
907
Réponses
68
Affichages
8 K
Réponses
2
Affichages
1 K
Réponses
1
Affichages
926
Retour