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
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.
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.
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.
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.
job75
Effectivement ça fonctionne bien sans tous mes ajouts.
Je dois seulement ajouter une ligne pour effacer les données du fichier source t_Recap
Merci beaucoup pour ton apport
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).
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