Microsoft 365 [Résolu] Copier des colonnes à la fin d'un tableau

Tava94

XLDnaute Nouveau
EDIT : j'ai finalement résolu mon problème, celui-ci venait du fait que la première cellule de ma première colonne était vide (utilisée uniquement pour la forme), et j'ai ajuste le paramètre Offset à (0,1), j'ai en effet mal compris son utilité.

Bonjour à tous,

Dans le cadre d'un reporting trimestriel, je suis amené à fabriquer un tableau excel (modèle simplifié ci-joint) avec :
- en première colonne : des en-têtes
- les quatre colonnes suivantes : les données d'un trimestre
- les quatre colonnes suivantes : les données du trimestre suivant
etc, à priori extensible à l'infini.

Les données se trouvant dans ces colonnes sont textuelles, numériques (saisie manuelle), et certaines d'entre elles sont des formules (sous-totaux, division)

---> J'aimerais pouvoir créer une macro permettant de copier les données d'un trimestre (donc quatre colonnes) à la fin du tableau pour servir de modèle, tout en gardant les formules s'y trouvant.
Malgré mes recherches je n'arrive pas à trouver de solution convenable.
Pour reprendre le modèle ci-joint, j'aimerais copier les colonnes B à E (avec les en-têtes bleues) à la suite du tableau, c'est-à-dire sur les premières colonnes vides, ici J à M.
J'adapterai le nom des feuilles ci nécessaire.

Étant débutant en VBA, j'ai essayé divers tutoriels mais aucun d'entre eux ne fonctionnait pour mon cas, j'ai cependant pu approcher du but avec le code présenté ci-dessous, mais celui-ci m'insère les colonnes juste avant celles copiées, et non à la fin du tableau...

Sub ajout_trimestre()

Columns("B:E").Copy
Worksheets("synth evol trim").Range("A4").End(xlToRight).Offset(0, 4).EntireColumn.Insert

End Sub


J'ai encore beaucoup de mal à saisir les subtilités du code VBA et c'est pourquoi je fais appel à vous pour corriger ou me proposer un code adapté à mes besoins.

Merci d'avance pour votre aide !
 

Pièces jointes

  • Test macro.xlsm
    11.8 KB · Affichages: 5
Dernière édition:

vgendron

XLDnaute Barbatruc
Bonjour

essaie ceci
VB:
Sub CopierCol()

With ActiveSheet 'dans la feuille active
    LastCol = .Cells(4, .Columns.Count).End(xlToLeft).Column 'on récupère le numéro de la derniere colonne utilisée sur la ligne 4
    .Columns("B:E").Copy Destination:=.Columns(LastCol + 1) 'on copie les colonnes B C D et E après la dernière colonne utilisée
End With
End Sub
 

Tava94

XLDnaute Nouveau
Bonjour

essaie ceci
VB:
Sub CopierCol()

With ActiveSheet 'dans la feuille active
    LastCol = .Cells(4, .Columns.Count).End(xlToLeft).Column 'on récupère le numéro de la derniere colonne utilisée sur la ligne 4
    .Columns("B:E").Copy Destination:=.Columns(LastCol + 1) 'on copie les colonnes B C D et E après la dernière colonne utilisée
End With
End Sub

Bonjour,

Merci pour votre réponse, j'ai finalement pu corriger mon code mais je vais regarder plus attentivement le votre pour ma culture.

Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
299 938
Messages
1 980 230
Membres
207 037
dernier inscrit
Cld.