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

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
Bonjour à tous,

Cette macro est très simple :
VB:
Sub CopierColler()
If Not [t_Import].ListObject.DataBodyRange Is Nothing Then [t_Import].Delete
Intersect([t_Recap], [t_Recap].Parent.Range("A:C,J:P")).Copy [t_Import].Cells(1)
End Sub
On constate que les formules sont remplacées par leurs valeurs.

A+
 

NONO14

XLDnaute Impliqué
J'aurais deux remarques (je passe sur l'indentation et sur le End Sub qui n'apparait pas ).

Il y a un petit problème de logique dans ta macro qui conduit à activer deux fois la feuille "Saisie".
Il y a bien End Sub à la fin mais que je n'ai pas copié dans mon message, mais il apparaît bien dans mon code, sinon j'aurai eu un message d'erreur lors de l'exécution. Pour l'activation de la feuille Saisie, c'est une erreur de ma part, merci de l'avoir soulignée.
 

NONO14

XLDnaute Impliqué
Voici le fichier. J'ai modifié le code Copier_Valeurs dans le module mFunctions.
J'ai essayé de mettre en place une fonction qui permet de copier/coller, trier, imposer une police à 10, inscrire une en-tête avec le numéro de semaine et du lundi .... au dimanche... et un aperçu avant impression.
Par contre, je souhaiterai faire un deuxième tri sur le code de l'agent, mais ça bug à chaque fois alors je l'ai supprimé.
J'attends vos commentaires avec impatience car votre savoir-faire va mettre à l'épreuve mon modeste travail, réalisé avec votre aide.
Le fichier est le 15b, car je conserve l'original (son jumeau).
 

Pièces jointes

  • PointHeure15b.xlsm
    783.9 KB · Affichages: 7

job75

XLDnaute Barbatruc
Je dois seulement ajouter une ligne pour effacer les données du fichier source t_Recap
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
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

J'attends vos commentaires avec impatience

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
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…