Suite à une demande de mon employeur, je désire faire un Excel avec des commandes VBA consistant à Copier/Coller une ligne de données et la recopier sur une autre feuille précise. À ce niveau là, je suis capable de me débrouiller, mais j'aimerais que lorsque mes données ont été collées à la ligne précise, j'aimerais que la macro copie les prochaines données sur la ligne du bas et ainsi de suite.
Dans le excel, j'aimerais que les données soient copié de la feuille Calculateur (C6:I6) et (E14:G14) et j'aimerais qu'il termine leur chemin dans la feuille données.
voici la nouvelle version ; utilisation : fais comme précédemment.
VB:
Option Explicit
Sub CpyData()
If ActiveSheet.Name <> "Calculateur" Then Exit Sub
If [C6] = "" Then Exit Sub 'si C6 est vide : y'a rien à copier/coller
Dim lig&: Application.ScreenUpdating = 0
With Worksheets("Données")
lig = .Cells(Rows.Count, 2).End(3).Row + 1
[C6].Resize(, 7).Copy: .Cells(lig, 2).PasteSpecial -4163
Application.CutCopyMode = 0: .Cells(lig, 9) = [G14]
.Select: [A1].Select
End With
End Sub
ton fichier en retour ; tu peux voir que la 2ème feuille "Données" est inchangée ; va sur la 1ère feuille "Calculateur" ; regarde la ligne 6 ; fais Ctrl e ; vu ? retourne sur "Calculateur", et fais Ctrl e ; ok ? refais-le encore une fois ; ainsi, tu vois bien que ça se remplit ligne après ligne ; attention : la macro ne s'exécute qu'à partir de la feuille "Calculateur", et sur cette feuille, si C6 est vide, ça ne fera rien : pas de copier / coller !
VB:
Option Explicit
Sub CpyData()
If ActiveSheet.Name <> "Calculateur" Then Exit Sub
If [C6] = "" Then Exit Sub 'si C6 est vide : y'a rien à copier/coller
Dim lig&: Application.ScreenUpdating = 0
With Worksheets("Données")
lig = .Cells(Rows.Count, 2).End(3).Row + 1
[C6].Resize(, 7).Copy: .Cells(lig, 2).PasteSpecial -4163
Application.CutCopyMode = 0: .Select: [A1].Select
End With
End Sub
si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis.
ton fichier en retour ; tu peux voir que la 2ème feuille "Données" est inchangée ; va sur la 1ère feuille "Calculateur" ; regarde la ligne 6 ; fais Ctrl e ; vu ? retourne sur "Calculateur", et fais Ctrl e ; ok ? refais-le encore une fois ; ainsi, tu vois bien que ça se remplit ligne après ligne ; attention : la macro ne s'exécute qu'à partir de la feuille "Calculateur", et sur cette feuille, si C6 est vide, ça ne fera rien : pas de copier / coller !
VB:
Option Explicit
Sub CpyData()
If ActiveSheet.Name <> "Calculateur" Then Exit Sub
If [C6] = "" Then Exit Sub 'si C6 est vide : y'a rien à copier/coller
Dim lig&: Application.ScreenUpdating = 0
With Worksheets("Données")
lig = .Cells(Rows.Count, 2).End(3).Row + 1
[C6].Resize(, 7).Copy: .Cells(lig, 2).PasteSpecial -4163
Application.CutCopyMode = 0: .Select: [A1].Select
End With
End Sub
si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis.
Merci de votre réponse, votre code marche à la perfection une fois imbriquée dans mon classeur. Si j'aimerais copier la case Taxe Total (G14) à la case Hors QC (I2), comment devrais-je m'y prendre?
voici la nouvelle version ; utilisation : fais comme précédemment.
VB:
Option Explicit
Sub CpyData()
If ActiveSheet.Name <> "Calculateur" Then Exit Sub
If [C6] = "" Then Exit Sub 'si C6 est vide : y'a rien à copier/coller
Dim lig&: Application.ScreenUpdating = 0
With Worksheets("Données")
lig = .Cells(Rows.Count, 2).End(3).Row + 1
[C6].Resize(, 7).Copy: .Cells(lig, 2).PasteSpecial -4163
Application.CutCopyMode = 0: .Cells(lig, 9) = [G14]
.Select: [A1].Select
End With
End Sub
voici la nouvelle version ; utilisation : fais comme précédemment.
VB:
Option Explicit
Sub CpyData()
If ActiveSheet.Name <> "Calculateur" Then Exit Sub
If [C6] = "" Then Exit Sub 'si C6 est vide : y'a rien à copier/coller
Dim lig&: Application.ScreenUpdating = 0
With Worksheets("Données")
lig = .Cells(Rows.Count, 2).End(3).Row + 1
[C6].Resize(, 7).Copy: .Cells(lig, 2).PasteSpecial -4163
Application.CutCopyMode = 0: .Cells(lig, 9) = [G14]
.Select: [A1].Select
End With
End Sub