franckylecake
XLDnaute Nouveau
Bonjour à tous,
Dans le cadre de mon travail, je dois réaliser un code permettant d'automatiser un copier / coller d'une plage de cellules entre 2 classeurs. Etant un novice bidouilleur, j'ai réussi à pondre à code mais je me fais jeter à chaque exécution de ce code avec toujours la même erreur : "1004".
Je souhaite copier une plage de cellule du fichier NomFichier1 dans mon fichier. Etant susceptible de rajouter des lignes et des colonnes, la plage à copier doit être dynamique:
Plage à copier dans le classeur NomFichier1 :
Cellule (L_savings,C_savings) à la cellule (Lbis_savings,Cbis_savings)
Coller dans la plage (classeur actif):
Cellule(L,C) à la cellule(Lbis,Cbis)
J'ai testé mes différentes variables et elles renvoient les bons numéros de lignes te colonnes. De plus, je pense que mon code est simplifiable étant donné que je n'utilise pas les fonctions de recherches d'adresses des cellules.
Comment faire pour faire fonctionner ce code?
D'avance merci pour votre aide.
Sub ImporterOnglet()
Dim NomFichier1 As Variant
Dim NomDernièreInitiative As Variant
Dim Q As Long
Dim L As Integer'première ligne de reception des données
Dim Lbis As Integer 'dernière ligne de reception des données
Dim C As Integer 'première colonne de reception des données
Dim Cbis As Integer 'dernière colonne de reception des données
Dim L_savings As Long 'première ligne à copier
Dim Lbis_savings As Long 'dernière ligne à copier
Dim C_savings As Long 'première colonne à copier
Dim Cbis_savings As Long 'dernière colonne à copier
NomFichier1 = ActiveWorkbook.Sheets("Paramètre").Cells(1, 2).Value
NomDernièreInitiative = ActiveWorkbook.Sheets("Paramètre").Cells(2, 2).Value
Q = MsgBox("Avez-vous mis à jour l'onglet Paramètre ?", vbYesNo)
If (Q = 6) Then
L = Cells.Find(What:="Weighted savings ATF + AFS + AF 2010-2013", After:=Range("B6"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Row
Lbis = Cells.Find(What:=NomDernièreInitiative, After:=Range("B6"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Row
C = Cells.Find(What:="Weighted savings ATF + AFS + AF 2010-2013", After:=Range("B6"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Column
Cbis = Cells.Find(What:="One time Savings AF 2013", After:=Range("B6"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Column
Cter = Cells.Find(What:="Status", After:=Range("B6"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Column
Cquater = Cells.Find(What:="Complexity", After:=Range("B6"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Column
L_savings = Workbooks(NomFichier1).Sheets("Paramètre").Range("B3").Value
Lbis_savings = Workbooks(NomFichier1).Sheets("Paramètre").Range("B4").Value
C_savings = Workbooks(NomFichier1).Sheets("Paramètre").Range("B5").Value
Cbis_savings = Workbooks(NomFichier1).Sheets("Paramètre").Range("B6").Value
Workbooks(NomFichier1).Sheets("Initiatives Lead Chart").Range(Cells(L_savings, C_savings), Cells(Lbis_savings, Cbis_savings)).Value.Copy
ActiveWorkbook.Sheets("Initiatives Lead Chart").Range(Cells(L, C), Cells(Lbis, Cbis)).PasteSpecial (xlPasteValues)
MsgBox "La mise à jour est effectuée"
Else
MsgBox "Veuillez mettre à jour le nom du fichier dans l'onglet Paramètre"
End If
End Sub
Dans le cadre de mon travail, je dois réaliser un code permettant d'automatiser un copier / coller d'une plage de cellules entre 2 classeurs. Etant un novice bidouilleur, j'ai réussi à pondre à code mais je me fais jeter à chaque exécution de ce code avec toujours la même erreur : "1004".
Je souhaite copier une plage de cellule du fichier NomFichier1 dans mon fichier. Etant susceptible de rajouter des lignes et des colonnes, la plage à copier doit être dynamique:
Plage à copier dans le classeur NomFichier1 :
Cellule (L_savings,C_savings) à la cellule (Lbis_savings,Cbis_savings)
Coller dans la plage (classeur actif):
Cellule(L,C) à la cellule(Lbis,Cbis)
J'ai testé mes différentes variables et elles renvoient les bons numéros de lignes te colonnes. De plus, je pense que mon code est simplifiable étant donné que je n'utilise pas les fonctions de recherches d'adresses des cellules.
Comment faire pour faire fonctionner ce code?
D'avance merci pour votre aide.
Sub ImporterOnglet()
Dim NomFichier1 As Variant
Dim NomDernièreInitiative As Variant
Dim Q As Long
Dim L As Integer'première ligne de reception des données
Dim Lbis As Integer 'dernière ligne de reception des données
Dim C As Integer 'première colonne de reception des données
Dim Cbis As Integer 'dernière colonne de reception des données
Dim L_savings As Long 'première ligne à copier
Dim Lbis_savings As Long 'dernière ligne à copier
Dim C_savings As Long 'première colonne à copier
Dim Cbis_savings As Long 'dernière colonne à copier
NomFichier1 = ActiveWorkbook.Sheets("Paramètre").Cells(1, 2).Value
NomDernièreInitiative = ActiveWorkbook.Sheets("Paramètre").Cells(2, 2).Value
Q = MsgBox("Avez-vous mis à jour l'onglet Paramètre ?", vbYesNo)
If (Q = 6) Then
L = Cells.Find(What:="Weighted savings ATF + AFS + AF 2010-2013", After:=Range("B6"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Row
Lbis = Cells.Find(What:=NomDernièreInitiative, After:=Range("B6"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Row
C = Cells.Find(What:="Weighted savings ATF + AFS + AF 2010-2013", After:=Range("B6"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Column
Cbis = Cells.Find(What:="One time Savings AF 2013", After:=Range("B6"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Column
Cter = Cells.Find(What:="Status", After:=Range("B6"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Column
Cquater = Cells.Find(What:="Complexity", After:=Range("B6"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Column
L_savings = Workbooks(NomFichier1).Sheets("Paramètre").Range("B3").Value
Lbis_savings = Workbooks(NomFichier1).Sheets("Paramètre").Range("B4").Value
C_savings = Workbooks(NomFichier1).Sheets("Paramètre").Range("B5").Value
Cbis_savings = Workbooks(NomFichier1).Sheets("Paramètre").Range("B6").Value
Workbooks(NomFichier1).Sheets("Initiatives Lead Chart").Range(Cells(L_savings, C_savings), Cells(Lbis_savings, Cbis_savings)).Value.Copy
ActiveWorkbook.Sheets("Initiatives Lead Chart").Range(Cells(L, C), Cells(Lbis, Cbis)).PasteSpecial (xlPasteValues)
MsgBox "La mise à jour est effectuée"
Else
MsgBox "Veuillez mettre à jour le nom du fichier dans l'onglet Paramètre"
End If
End Sub