Copier une plage de cellules d'un classeur vers un autre
Bonjour,
J'essai de résoudre un problème fort simple, c'est de copier la plage de cellule d'une feuille d'un premier classeur vers une autre feuille d'un autre classeur :
Voici UNE PARTIE du code que j'ai écris d'après mes recherches sur le forum (je débute, merci de votre indulgence
Dim WkCible As Workbook
WkCible = "synthese Usine A"
l_s_plageSource = "A3:U1000"
l_s_ongletSource = "Database"
l_s_ongletCible = "Database MHH"
l_s_plageCible = "A3:U1000"
ThisWorkbook.Sheets(l_s_ongletSource).Range(l_s_plageSource).Copy WkCible.Sheets(l_s_ongletCible).Range(l_s_palgeCible)
Autre précision : les deux classeurs sont ouverts à ce moment du code !
Merci d'avance pour le coup de main
PS : le fichier serait trop lourd à joindre, je ne recherche que la méthode de calcul pour copier coller sans avoir l'erreur 91 correspondant au fait que la variable objet n'est pas définie !
Bonjour
Essaie comme ça :
Dim WkCible As Workbook
WkCible = WorkBooks("synthese Usine A")
...
Bye !
J'ai essayé mais toujours la même erreur, comme s'il ne pouvait pas trouver le classeur "synthese Usine A"...
Une idée ?
Alors, joins tes classeurs et on regardera ça de plus près !
Bye !
Le mot de passe est : synthese
Je ne peux pas mettre les autres fichiers, ils font plus que 1Mo.
La macro s'appelle mise_a_jour, vous trouverez le code.
Merci d'avance pour votre coup de main !
bonjour essyb89 , gmb, Excelleurs(es),
Je suis sur le même sujet que toi.
With Workbooks(Filename)
.Sheets("2011").Range("Z5:AQ" & Range("A65536").End(xlUp).Row - 1).Copy
ThisWorkbook.Sheets("2011").Range("W5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
.Close
'Application.EnableEvents = False
End With
j'ai lu ton code :
Dim l_dt_dateMin As Date
Dim l_dt_dateMax As Date
Dim l_l_derniereLigne As Long
Dim l_t_memErr As ERR_Mem 'variable utilisée pour la gestion d'erreur
Dim WkCible As Workbook
On Error GoTo GestErr
l_l_derniereLigne = 1097
l_dt_dateMin = Len(frmSelectWeek.txtDateMin.Text)
l_dt_dateMax = Len(frmSelectWeek.txtDateMax.Text)
l_s_chemin = chercheChemin("synthese MHH")
If l_s_chemin <> "" Then
Call afficheGraph("synthese MHH", 30)
l_s_fichier = ouvreFichierXLS(l_s_chemin)
Workbooks(l_s_fichier).Activate
Application.Run "'synthese Atelier MHH TRS ppm V1.xlsm'!Mod_MAJ.mise_a_jour"
If l_s_fichier <> "" Then
l_s_ongletSource = "Database"
l_s_plageSource = "A3:U1048575"
l_s_ongletCible = "Database MHH"
l_s_plageCible = "A3:U1048575" & l_l_derniereLigne
WkCible = Workbooks("synthese Usine A TRS ppm V1.xlsm")
ThisWorkbook.Sheets(l_s_ongletSource).Range(l_s_plageSource).Copy_ WkCible.Sheets(l_s_ongletCible).Range(l_s_plageCible)
'Workbooks("synthese Usine A TRS ppm V1").Sheets("Database MHH").Range ("A3:U1048575")
MsgBox "OK OK"
End If
closeFile (l_s_fichier)
' End If
il te manque un truc dans ton code où coller
dans mon code je lui dis ce que tu dois copier et où tu dois le coller
Re, désolé pour la réponse si tardive, j'étais en congé et faisant ce travail à mon boulot...
Voici le code que j'ai fait après les différents conseils et mes recherches, mais en vain...
l_s_ongletSource = "Database"
l_s_plageSource = "A3:U1048575"
l_s_ongletCible = "Database MHH"
l_s_plageCible = "A3:U1048575" & l_l_derniereLigne
' WkCible = Workbooks("synthese Usine A TRS ppm V1.xlsm")
Workbooks(l_s_fichier).Sheets(l_s_ongletSource).Range(l_s_plageSource).Copy
Set WkCible = GetObject("C:\Users\bonninj\Desktop\Tests\synthese Usine A TRS ppm V1.xlsm")
Set WkCible = ActiveWorkbook
' WkCible.Windows(1).Visible = True
ThisWorkbooks.Sheets(l_s_ongletCible).Range(l_s_plageCible).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
L'erreur 424 Objet requis apparait, je sais maintenant que l'objet Workbook pour mon classeur WkCible n'est pas reconnu.
De plus, lorsque j'écris :
Workbooks(WkCible).Sheets(l_s_ongletCible).Range(l_s_plageCible).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
C'est l'erreur 13 Incompatibilité de type qui survient, comme si finalement WkCible n'était pas un classeur alors qu'au début de mon code, j'ai bien écrit Dim WkCible As Workbook
Qu'est ce qui cloche ??
Merci d'avance !!
Résolu, en réalité il ne faut pas chercher à activer un classeur (Workbook) mais plutôt activer une fenêtre (Windows), ainsi on peut naviguer dans l'instance EXCEL entre différents classeur afin de les faire executer des macros et faire des copier-coller (bien-sûr il faut bien penser à ouvrir le classeur à un moment où à un autre.
Voici le code utilisé pour naviguer entre un classeur (où j'y exécute une macro) et le classeur d'origine où je colle mes données et où se trouve le code ci-dessous.
Workbooks(l_s_fichier).Sheets(l_s_ongletSource).Range(l_s_plageSource).Copy
Windows("synthese Usine A TRS ppm V1.xlsm").Activate 'activation par windows et non workbook
Sheets(l_s_ongletCible).Select
Range("A3").Select 'on sélectionne une seule cellule pour éviter les conflits de plages de cellules non identiques
ActiveSheet.Paste
Application.CutCopyMode = False 'désactive la fonction copier-coller pour quitter le presse-papier automatiquement
Merci en tout cas pour vos réponses.