Microsoft 365 Macro copier/coller entre deux tableaux structurés

NONO14

XLDnaute Impliqué
Bonjour à toutes et à tous,
Dans une feuille de calcul j'ai un premier TS qui est nommé t_Recap et qui est la source des données.
Dans une deuxième feuille j'ai un deuxième TS qui est nommé t_Import et qui est la destination.

t_Import comporte moins de colonnes que t_Recap, ils ont en communs les colonnes suivantes :

t_Recap (A) = t_Import (A) - Code agent
t_Recap (B) = t_Import (B) - NOM Prénom
t_Recap (C) = t_Import (C) - Date
t_Recap (J) = t_Import (D) - Total heures matin
t_Recap (K) = t_Import (E) - Total heures après-midi
t_Recap (L) = t_Import (F) - Total heures soir
t_Recap (M) = t_Import (G) - Total heures jour
t_Recap (N) = t_Import (H) - Total heures Sup
t_Recap (O) = t_Import (I) - Nbre de plages
t_Recap (P) = t_Import (J) - Commentaires

J'ai fait la macro suivante avec l'enregistreur de macros mais elle ne fonctionne que pour la ligne 2.
Ce que je souhaite mettre en place avec votre aide, c'est une macro qui me copie à partit du TS source et colle les données dans le TS destination à partir de la ligne 2 et jusqu'à la fin du TS et seulement les colonnes définies ci-dessus.
Pourriez-vous m'aider à mettre ça en place s'il vous plaît ?
Je vous en remercie par avance

Ensuite, je mettrai en place un code pour imprimer le TS t_Import.

VB:
Sub CopierColler()
'
' CopierColler Macro
   
    Range("A2:C2,J2:P2").Select
    Range("t_Recap[TOTAL Heures matin]").Activate
    Selection.Copy
    Sheets("Imp_Pointage").Select
    Range("t_Import[Code agent]").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
 

job75

XLDnaute Barbatruc
Les amis pourquoi aller chercher midi à quatorze heures ?

Il n'y a aucune raison de modifier la position ou l'ordre des colonnes des TS.

Et si on le fait c'est vraiment qu'on veut modifier le fichier, alors on modifiera aussi les macros.
 

TooFatBoy

XLDnaute Barbatruc
Les amis pourquoi aller chercher midi à quatorze heures ?
Juste pour avoir plus de chances que sa macro fonctionne encore demain. 😉


Il n'y a aucune raison de modifier la position ou l'ordre des colonnes des TS.
Tu n'as pas dû lire ses autres fils de discussion... 😅


Et si on le fait c'est vraiment qu'on veut modifier le fichier, alors on modifiera aussi les macros.
Ben du coup... non, pas besoin. 😉
 

Phil69970

XLDnaute Barbatruc
re

Les amis pourquoi aller chercher midi à quatorze heures ?

Il n'y a aucune raison de modifier la position ou l'ordre des colonnes des TS.

Et si on le fait c'est vraiment qu'on veut modifier le fichier, alors on modifiera aussi les macros.

Alors autant pousser "la logique" jusqu'au bout ...
Pourquoi faire un TS autant s'en passer et faire une macro "ordinaire"

Perso un TS est fait pour s'affranchir de sa position sur la feuille et quelque soit la feuille sur laquelle le TS se trouve.
(Je n'ai pas parlé de l'ordre des colonnes mais bien de la position sur la feuille)
 

NONO14

XLDnaute Impliqué
J
Curieux de supprimer toutes les données du tableau source.

Car les colonnes D à I ne sont pas sauvegardées, à quoi servent-elles ?

Mais bon vous avez écrit :
VB:
[t_Recap].ListObject.DataBodyRange.Delete
il vaut mieux écrire, comme je l'ai déjà fait pour [t_Import] :
VB:
Sub CopierColler()
If Not [t_Recap].ListObject.DataBodyRange Is Nothing Then [t_Recap].Delete
End Sub
Je supprime les données du tableau source car une fois édité il n'a plus lieu d'être.
Les colonnes D à I servent de contrôle mais n'ont aucune importante pour l'édition de la feuille.
 

NONO14

XLDnaute Impliqué
Bonjour à tous



Perso
Pour moi une macro écrites pour un TS devrait fonctionner si tu déplaces les TS
Le code de la version 15b ne remplit pas ses conditions.
Le code ne copie pas les infos si tu déplaces les TS de chaque feuille car le code n'est pas écrit complètement pour un TS

Faire ce test avec toutes les solutions que l'on ta proposé :
Déplace ou tu veux les 2 TS y compris sur une autre feuille
et lance la macro de toutes les différentes versions que l'on ta proposé !!!!

Tu verras bien les macros qui sont écrites 100% pour des TS ;)
Les TS ne seront jamais déplacés, les feuilles resteront telles que créées.
 

NONO14

XLDnaute Impliqué
re



Alors autant pousser "la logique" jusqu'au bout ...
Pourquoi faire un TS autant s'en passer et faire une macro "ordinaire"

Perso un TS est fait pour s'affranchir de sa position sur la feuille et quelque soit la feuille sur laquelle le TS se trouve.
(Je n'ai pas parlé de l'ordre des colonnes mais bien de la position sur la feuille)
Je suis passé par des TS car il m'a souvent été dit que pour une meilleure gestion des données cela était nécessaire
 

TooFatBoy

XLDnaute Barbatruc
Je n'ai pas parlé de l'ordre des colonnes mais bien de la position sur la feuille
Dans ce cas, il me semble que du coup la macro de job75 convient. Me trompé-je ?



Je suis passé par des TS car il m'a souvent été dit que pour une meilleure gestion des données cela était nécessaire
Tu as, à mon avis, bien fait. Mais t'inquiète, sa remarque s'adressait exclusivement à job75. ;)
 

Phil69970

XLDnaute Barbatruc
Les TS ne seront jamais déplacés, les feuilles resteront telles que créées.
Peut être mais n’empêche que le code de ton fichier 15b n'est pas un code complètement écrit pour un TS maintenant si cela te vas moi aussi et je maintiens mes propos de mes différents post que je te laisse relire .....

Dans ce cas, il me semble que du coup la macro de @job75 convient. Me trompé-je ?
Si son code est le code de la version 15b du post #
Et bien non il ne correspond pas à un code totalement fait pour un TS

Le fichier est le 15b
TFB essaye ceci sur les différentes versions post # 2,4,8,9,10,11,12 et suivant (je me suis arrêté à la 1ere page) mais évidement on peut faire les pages suivantes
Faire ce test avec toutes les solutions que l'on ta proposé :
Déplace ou tu veux les 2 TS y compris sur une autre feuille
et lance la macro de toutes les différentes versions que l'on ta proposé !!!!

Je précise que déplacer veut aussi dire déplacer en "latéral" en clair mets les différents TS n'importe ou au milieu de la feuille (colonne A ou Z ou ZZ.... et ligne 1 ou 10 ou 100 ....)
 

job75

XLDnaute Barbatruc
Bah pour compléter mon post #31, si l'on tient à pouvoir déplacer le tableau source on utilisera :
VB:
Sub CopierColler()
If Not [t_Import].ListObject.DataBodyRange Is Nothing Then [t_Import].Delete
With [t_Recap]
    Union(.Columns("A:C"), .Columns("J:P")).Copy [t_Import].Cells(1)
    If Not .ListObject.DataBodyRange Is Nothing Then .Delete
End With
End Sub
Ce n'est guère plus compliqué.
 

TooFatBoy

XLDnaute Barbatruc
Si son code est le code de la version 15b du post #
Et bien non il ne correspond pas à un code totalement fait pour un TS
Je parlais du code de job75 en #21, et comme il a été validé comme étant LA réponse, je suppose que c'est le même en 15b. ;)

Je pensais que le code en question marchait quelles que soient les positions des deux TS.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 059
Messages
2 115 820
Membres
112 554
dernier inscrit
JULIEN.DECHIPRE