Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Erreur d'exécution '1004'

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
 

fablog

XLDnaute Occasionnel
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...
 

gosselien

XLDnaute Barbatruc
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

  • Processus.xlsm
    8.4 KB · Affichages: 19
  • Processus1.xlsm
    23.2 KB · Affichages: 22
Dernière édition:

fablog

XLDnaute Occasionnel
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:

herve62

XLDnaute Barbatruc
Supporter XLD
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 !!
 

eriiic

XLDnaute Barbatruc
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
 

Staple1600

XLDnaute Barbatruc
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
 

fablog

XLDnaute Occasionnel
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!
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…