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

XL pour MAC Dupliquer des données depuis plusieurs onglets vers un onglet de récap.

Joker88

XLDnaute Nouveau
Bonjour,

Je souhaiterai savoir comment dupliquer des données depuis un onglet créé vers un onglet de récap.

Dans mon fichier ( en pièce jointe ) lorsque je créé un salarié, un onglet à son nom se créé, ainsi qu'un tableau de récap le concernant dans l'onglet suivi annuel.

Lorsque je saisi des données dans l'onglet du salariés, celles ci viennent se mettre à jour dans son tableau de récap. Jusque la ma macro fonctionne.

Cela se complique lorsque je créé un second salarié...

J'arrive bien à créer un nouveau tableau vierge au dessus de l'existant, dans l'onglet "Suivi annuel"

Mais mon souci est de devoir à nouveau demander à ma macro d'aller récupérer les données le concernant...

Je vois d'où viens le souci, car je demande à ma macro de copier les données de l'onglet "DIDIER Rémi". --> Sheets("DIDIER Rémi").Select

Or j'aimerai demander à ma macro de prendre les données du dernier onglet créé....

Cela se trouve dans la macro Bouton1_ajouter salarié, dans la partie "copie données tableau recap annuel"

Je ne sais pas si je suis très clair...

Et désolé je suis débutant, j'ai utilisé le mode automatique pour écrire cette partie...

Merci de bien vouloir m'indiquer quel code utiliser pour remplacer Sheets("DIDIER Rémi").Select et lui demander de faire référence au dernier onglet généré.

Voici le lien pour récupérer mon fichier --> https://we.tl/t-rr1u8XBwRF

Bonne journée et merci par avance pour votre aide.

 
Solution
Bonjour,
Le transfert de données dans Suivi annuel pourrait ressembler à ça :
VB:
    'Copie données tableau recap annuel
    With Sheets("Suivi annuel")                         ' Dans suivi annule
        .[D9].Formula = "='" & ajoutsalarie & "'!C25"   ' Mettre NomSalarié!C25 en D9
        .[D9:G20] = [D9].Formula                        ' Dupliquer formule sur tableau
        .[J11].Formula = "='" & ajoutsalarie & "'!J25"  ' Tableau CONGES
        .[D9:M18] = [J11].Formula
        .[O11].Formula = "='" & ajoutsalarie & "'!J35"  ' Tableau ABSENCES INJUSTIFIEES
        .[O11:R18] = [O11].Formula
        .[T11].Formula = "='" & ajoutsalarie & "'!J45"  ' Tableau MALADIE
        .[T11:W18] = [T11].Formula
    End With

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Joker,
Votre variable "ajoutsalarie" contient le nom de la feuille nouvellement créée.
Faites un essai en remplaçant :
VB:
Sheets("DIDIER Rémi").Select
par
Sheets(ajoutsalarie).Select

Addon :
Il faut éviter les Select qui font perdre du temps. On peut aussi optimiser en évitant les copier/coller et swap de pages.
Par ex, on peut remplacer :
VB:
    Sheets(ajoutsalarie).Select
    Range("C25:F39").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Suivi annuel").Select
    Range("D9").Select
    ActiveSheet.Paste Link:=True
par
Code:
With Sheets("Suivi annuel")                       ' Dans suivi annule
  .[D9].Formula = "='" & ajoutsalarie & "'!C25"   ' Mettre NomSalarié!C25 en D9
  .[D9:G20] = [D9].Formula                        ' Dupliquer formule sur tableau
End With
A tester
 
Dernière édition:

Joker88

XLDnaute Nouveau
Bonsoir Sylvanu,

Merci beaucoup pour votre retour !

Lorsque je remplace sheet(nom de la feuille) par sheet(ajoutsalarie) comme vous me l'avez indiqué, il m'indique une erreur dés la 1ère ligne ... :-(

Vocii le code :

Sheets("ajoutsalarie").Select
Range("C25:F39").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Suivi annuel").Select
Range("D9").Select
ActiveSheet.Paste Link:=True
Sheets("ajoutsalarie").Select
Range("J25:M32").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Suivi annuel").Select
Range("J11").Select
ActiveSheet.Paste Link:=True
Sheets("ajoutsalarie").Select
Range("J35:M42").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Suivi annuel").Select
Range("O11").Select
ActiveSheet.Paste Link:=True
Sheets("ajoutsalarie").Select
Range("J45:M52").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Suivi annuel").Select
Range("T11").Select
ActiveSheet.Paste Link:=True

Pour la 2nd partie de votre réponse, merci pour ces conseils, je vais essayer mais je débute eN VBA et ce n'est pas simple. J'essaierai de corriger ça lorsque la macro sera fonctionnelle..

Merci beaucoup en tout cas pour votre aide
 

Joker88

XLDnaute Nouveau
Ok merci je n'ai pas bien fait attention.

C'est super ca fonctionne !

Merci beaucoup pour ce bon coup de pouce !

Je vais regarder pour corriger le code selon la simplification que vous m'avez proposé.

Bonne journée.

Joker88
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Le transfert de données dans Suivi annuel pourrait ressembler à ça :
VB:
    'Copie données tableau recap annuel
    With Sheets("Suivi annuel")                         ' Dans suivi annule
        .[D9].Formula = "='" & ajoutsalarie & "'!C25"   ' Mettre NomSalarié!C25 en D9
        .[D9:G20] = [D9].Formula                        ' Dupliquer formule sur tableau
        .[J11].Formula = "='" & ajoutsalarie & "'!J25"  ' Tableau CONGES
        .[D9:M18] = [J11].Formula
        .[O11].Formula = "='" & ajoutsalarie & "'!J35"  ' Tableau ABSENCES INJUSTIFIEES
        .[O11:R18] = [O11].Formula
        .[T11].Formula = "='" & ajoutsalarie & "'!J45"  ' Tableau MALADIE
        .[T11:W18] = [T11].Formula
    End With
 

Joker88

XLDnaute Nouveau
Ah oui c'est super comme ça ! Merci beaucoup ! Ca allège bien le code effectivement !

Merci beaucoup pour votre aide et vos explications très claires et détaillées. Je vais pouvoir progresser.

Bonne journée à vous.

Joker88
 

Discussions similaires

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