Copie tableaux

ZAJNI

XLDnaute Nouveau
Bonjour à tous,

Alors j'aimerai copier une ligne d'un tableau nommé sur une feuille excel dans un tableau similaire dans une autre feuille.
Je veux utiliser la formule : [Tableau_base[Nom]].item(1).copy mais cela ne marche pas
Pourriez-vous me proposer une solution mais avec la même écriture, c'est à dire l'utilisation de [Tableau_Base]

Ci-joint le fichier Excel.
Mes remerciements
Bien à vous,
 

Pièces jointes

  • Exemple.xlsx
    10.4 KB · Affichages: 4

sixair

XLDnaute Junior
bonjour ZAJNI,

un essai..

Sub CopieLigne()
Dim x As Integer
Dim SauvegardeRacine(1 To 3) As Range
Dim TabBase As ListObject
Dim TabDest As ListObject

x = 1 'ligne a copier

Set TabBase = Worksheets("Tableau base").ListObjects("Tableau_Base") 'tableau (Envoyeur)
Set TabDest = Worksheets("Tableau destination").ListObjects("Tableau_destination") 'tableau (receveur)

Set SauvegardeRacine(1) = TabBase.ListRows(x).Range 'On récupère la ligne souhaitée

TabDest.ListRows.Add 'ajoute une nouvelle ligne
TabDest.ListRows(TabDest.ListRows.Count).Range.Formula = SauvegardeRacine(1).Formula
End Sub
 

Pièces jointes

  • Exemple.xlsm
    17.7 KB · Affichages: 4

ZAJNI

XLDnaute Nouveau
Merci beaucoup pour ton aide

et si mon j'ai plusieurs onglets avec des tableaux similaires, sauf que le nom du tableau change en fonction du nom de la feuille: par exemple
Feuille : Classe_2 contient le tableau : Tableau_Classe_2
comment puis-je accéder à ces tableaux dans une boucle sur VBA en utilisant l'écriture : [Tableau_Classe_2[Nom]] ou autre expression ?

Merci beaucoup
 

job75

XLDnaute Barbatruc
Bonsoir ZAJNI, sixair,

Voyez le fichier joint et ces macros dans ThisWorkbook :
VB:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Sh.ListObjects.Count = 0 Then Exit Sub
If Intersect(Target, Sh.ListObjects(1).DataBodyRange) Is Nothing Then Exit Sub
Cancel = True
Intersect(Target.EntireRow, Sh.ListObjects(1).DataBodyRange).Copy
End Sub

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Sh.ListObjects.Count * Application.CutCopyMode = 0 Then Exit Sub
If Intersect(ActiveCell, Sh.ListObjects(1).Range.Offset(1)) Is Nothing Then Exit Sub
Cancel = True
Intersect(ActiveCell.EntireRow, Sh.ListObjects(1).Range.Offset(1)).Cells(1).PasteSpecial xlPasteValues
End Sub
S'il n'y a qu'un tableau (ListObject) dans chaque feuille il est inutile d'utiliser son nom.

A+
 

Pièces jointes

  • Exemple(1).xlsm
    25.9 KB · Affichages: 1

Discussions similaires

Réponses
4
Affichages
195
Réponses
4
Affichages
108

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87