Microsoft 365 (VBA) Copier/Coller problème

PatLaNouille

XLDnaute Nouveau
Bonjour,

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.

Merci de votre aide.

PatLaNouille
 

Pièces jointes

  • Nouveau Feuille de calcul Microsoft Excel.xlsx
    14 KB · Affichages: 11
Solution
@PatLaNouille

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

soan

soan

XLDnaute Barbatruc
Inactif
Bonjour PatLaNouille,

bienvenue sur le site XLD ! :)

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.

soan
 

Pièces jointes

  • Exo Pat.xlsm
    20.6 KB · Affichages: 5

PatLaNouille

XLDnaute Nouveau
Bonjour PatLaNouille,

bienvenue sur le site XLD ! :)

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.

soan
Bonjour Soan,

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?

Merci encore de votre aide, vous m'avez sauvé!

PatLaNouille
 

Pièces jointes

  • Exo Pat.xlsm
    20.7 KB · Affichages: 3
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
@PatLaNouille

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

soan
 

Pièces jointes

  • Exo Pat.xlsm
    20.7 KB · Affichages: 4

PatLaNouille

XLDnaute Nouveau
@PatLaNouille

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

soan
Tout marche A1.

Merci de ton aide c'est grandement apprécié!

À toute!

PatLaNouille
 

Discussions similaires

Réponses
56
Affichages
2 K
Réponses
10
Affichages
643

Statistiques des forums

Discussions
315 095
Messages
2 116 170
Membres
112 676
dernier inscrit
little_b