Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 copier coller un tableau

BER6543

XLDnaute Nouveau
Bonjour, j'ai réalisé un code vba pour copier coller un tableau en respectant la mise en forme et toute les fonctions associées au tableau original.
Mon idée est qu'il me rajoute des tableaux les un après les autres en changeant d'année.
mon code est le suivant :
Sub CopierTableau()
' Définir la plage de la table à copier
Dim PlageATableau As Range
Set PlageATableau = Range("G510000") ' Remplacez A15 par la plage de votre propre tableau

' Copier la plage de la table
PlageATableau.Copy

' Coller la table dans une autre plage
Dim PlageDeCollage As Range
Set PlageDeCollage = Range("Q5") ' Remplacez F1 par l'emplacement où vous voulez coller la table
PlageDeCollage.PasteSpecial xlPasteAll ' Collez la table avec toutes les données et les mises en forme

' Facultatif : ajuster la largeur des colonnes de la table collée pour s'adapter aux données
PlageDeCollage.CurrentRegion.Columns.AutoFit
End Sub
je pense que mon code ne répond pas totalement à mon besoin .
Quelqu'un pourrait m'aider à voir plus claire ?? svp
j'ai mis le fichier en pièce jointe.
merci d'avance
 

Pièces jointes

  • Trame _ Carnet suivi AIR V4 (version 1) Test VBA - Copie - Copie - Copie.xlsb
    586.8 KB · Affichages: 8

Staple1600

XLDnaute Barbatruc
Bonjour @BER6543 , le fil,

Suggestions/questions au passage
Tu ne souhaites pas utiliser les tableaux structurés ?
Peut-on ne pas utiliser de cellules fusionnées ?

Suggestion
Un seul tableau (on choisit l'année dans une liste déroulante)
(on archive les années précédentes)

PS: Masquer des feuilles ne rend pas le fichier "anonyme"
Mes amitiés à Naelle
 

Staple1600

XLDnaute Barbatruc
Re

Exemple de ce que j'évoque
Un tableau sur une feuille
Que ce code recopie à chaque fois qu'on éxécute cette macro
Code:
Sub Copier_Tableau_Bis()
'En utilisant un tableau structuré
Dim col&
col = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Range("Tableau1[#All]").Copy Cells(1, col)
End Sub
La recopie se fait vers la droite, dans le 1ère colonne vide adjacente
(et les formules s'adaptent automatiquement)
Ci-dessous le tableau initial
Et ici le résultat après la 1ère exécution de la macro
NB: On voit que les formules se sont mises à jour.

PS: Ce type de tableau est créé par Excel en faisant : Insertion/Tableau
En ayant au préalable sélectionné une plage de cellules avec des données et une ligne d'entête.

(facultatif, les entêtes)
 
Dernière édition:
Réactions: cp4

Staple1600

XLDnaute Barbatruc
Avec cette version, je nomme les copies pour mieux s'y retrouver
VB:
Sub Copier_Tableau_Ter()
'En utilisant un tableau structuré
Dim col&, nLo&
col = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Range("Tableau1[#All]").Copy Cells(1, col)
nLo = ActiveSheet.ListObjects.Count
ActiveSheet.ListObjects(nLo).Name = "TABLEAU_N" & nLo
End Sub
 

BER6543

XLDnaute Nouveau

Bonjour Staple1600

merci pour ces propositions mais elles ne répondent pas à mon besoin.​

J'ai certainement mal exprimé mon besoin.​

PS: les fichiers non pas été masqué, il était trop lourd le fichier je pensais avoir supprimé certaines feuille.​

 

Staple1600

XLDnaute Barbatruc
Bonsoir

@BER6543
Si, si des feuilles étaient masquées
(propriéte Visible réglée sur : xlSheetHidden

Et mon code fait pourtant ceci, non ?
Comme le montre ma copie d'écran
Bonjour, j'ai réalisé un code vba pour copier coller un tableau en respectant la mise en forme et toute les fonctions associées au tableau original.
 

Staple1600

XLDnaute Barbatruc
Re

Evidemment que cela fonctionne, sinon pourquoi aurais-je posté ce bout de code ?
Ce n'est qu'un exemple, un test.

Ensuite il te faudra adapter selon ton classeur

Testes ceci sur un classeur vierge et tu verras que cela fonctionne
VB:
Sub Test_OK()
Dim rg As Range
Range("A1:E1", "A2:E15").Formula = Application.Transpose(Array("=""ITEM_""&COLUMN()", "=ADDRESS(ROW(),COLUMN(),4)"))
Range("A2:E15").FillDown: Set rg = Cells(1).CurrentRegion
ActiveSheet.ListObjects.Add(xlSrcRange, rg, , xlYes).Name = "Tableau1"
MsgBox "Test de recopie de tableau"
Call Copier_Tableau_Bis
End Sub
Sub Copier_Tableau_Bis()
'En utilisant un tableau structuré
Dim col&
col = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Range("Tableau1[#All]").Copy Cells(1, col)
End Sub
 

Discussions similaires

Réponses
9
Affichages
342
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…