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
 

Yeahou

XLDnaute Impliqué
Bonjour le forum

la feuille de destination n'est pas accessible ou verrouillée ou comporte des cellules fusionnées.
mets deux fichiers exemples pour les tests

Cordialement
 

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.
 

Fichiers joints

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
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 !!
 

fablog

XLDnaute Occasionnel
Bonsoir herve62. en modifiant le nom de ma feuille, la macro s'arrete plus tot dans le code. cela ne semble pas etre un problème de titre.
 
Dernière édition:

eriiiic

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!
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas