Dupliquer des données depuis un onglet créé vers un onglet de récap

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é.

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

Rémi

Bonsoir

Tu déclare ta variable "ajoutsalarie" en début de module ce qui permet de l'utiliser dans toutes les macros du module

tes feuilles s'appelleront sheets(ajoutsalarie)

A+ François

Non malheureusement ça ne fonctionne pas,

Dans votre exemple les données sources ne sont pas prise en compte dans le tableau de l'onglet de suivi annuel...

Bonjour

Comment veux tu avoir plusieurs utilisateur sur la feuille

je t'ai fait un userform pour cette feuille

A+ François

Non on s'éloigne... le userform n'est pas adapté.

Mais merci quand même pour votre aide

Bonjour,

un essai, mais avant je dois vous dire qu'il n'est pas utile de sélectionner les feuilles et les cellules pour travailler dessus !

Pour ceci :

Sheets("LouReeD").Select
Range("A1:A24").Select
Selection.Copy
Sheets("Annuel").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

ceci suffit :

Sheets("Annuel").Range("A1")=Sheets("LouReeD").Range("A1:A24")

votre code ajousalarie :

Sub Bouton1_ajoutersalarie()

'Box info ajout salariŽ

    Dim ajoutsalarie As String
         ajoutsalarie = InputBox("Nom du nouveau salariŽ")

    If ajoutsalarie = "" Then
        Exit Sub
    End If

    Dim debutcontrat As Date
        debutcontrat = InputBox("Date de d_but du contrat ?", " Date de debut d'intervalle ", "01/01/2013 ")

    Dim fincontrat As Date
        fincontrat = InputBox("Date de fin du contrat ?", " Date de debut d'intervalle ", "01/01/2013 ")

    Dim dureecontrat As String
        dureecontrat = InputBox("Volume hebdomadaire ? (heure:min)")

    'crŽation de la feuille ajousalarie

    Sheets("Onglet vierge").Copy after:=Sheets("Accueil")
    actvesheet.Name = ajoutsalarie
    With Sheets(ajoutsalarie)
        .Name = ajoutsalarie
        .Range("_nomsalarie").Value = ajoutsalarie
        .Range("_debut").Value = debutcontrat
        .Range("_fin").Value = fincontrat
        .Range("_duree").Value = dureecontrat
    End With

    'crŽation salariŽ tableau accueil
    i = Sheets("Accueil").Range("B" & Rows.Count).End(xlUp).Row + 1
    Sheets("Accueil").Range("B" & i).Value = ajoutsalarie
    Sheets("Accueil").Range("C" & i).Value = dureecontrat
    Sheets("Accueil").Range("D" & i).Value = debutcontrat
    Sheets("Accueil").Range("E" & i).Value = fincontrat
    With Sheets("Accueil")
        .Hyperlinks.Add Anchor:=.Range("G" & i), Address:="", SubAddress:="'" & ajoutsalarie & "'!A1", TextToDisplay:="lien"
    End With

    'Suivi annuel tableau recap dupliquŽ
    Sheets("Suivi annuel").Activate
    Range("B1:X25").Select
    Selection.Copy
    Range("B1").Select
    Selection.Insert Shift:=xlDown

    ActiveSheet.Range("C4").Value = ajoutsalarie
    ActiveSheet.Range("F5").Value = debutcontrat
    ActiveSheet.Range("G5").Value = fincontrat
    ActiveSheet.Range("E5").Value = dureecontrat

    'copie donnŽes tableau recap annuel
    With Sheets(ajoutsalarie)
        Sheets("Suivi annuel").Range("D9") = .Range("C25:F39")
        Sheets("Suivi annuel").Range("J11") = .Range("J25:M32")
        Sheets("Suivi annuel").Range("O11") = .Range("J35:M42")
        Sheets("Suivi annuel").Range("T11") = .Range("J45:M52")
    End With

End Sub

A vérifier que la plage (par exemple) C25:F39 se copie bien en entier à partir de la cellule D9...

@ bientôt

LouReeD

Merci LouReed pour ces précieux conseil, je vais tâcher de corriger le code selon vos remarques.

J'ai appliqué le code tel que vous me l'avez donné, et les cellule à copier semblent juste, mais lorsque je test, le résultat ne correspond pas du tout aux cellules...

En pièce jointe le fichier avec le code en question...

J'ai fait le test avec l'ajout d'un salarié intitulé ERIC SIMON, vous pourrez voir ce qu'il m'affiche....

Bonsoir,

je crois voir le problème, il y a copie du tableau de Didier avec des formules écrites "en dur" avec Didier dedans, du coup lors de la copie, ces formule garde Didier et non pas Simon !

Il faut remplacer les formule de Didier par une formule prenant comme référence la cellule du tableau où il y a inscrit son nom :
par exemple en cellule (du fichier joint) D34, remplacez ='DIDIER Rémi'!C25 par =INDIRECT(" ' " & C29 & " '!C25") comme cela la formule va aller cherche la valeur en C29 "DIDIER Rémi" et va concaténer tout ceci ce qui donne 'DIDIER Rémi'!C25.

Je vous laisse le soin de faire les modifications partout où cela s'impose...

Ne pas oublier l'apostrophe car vos nom de feuille comportent des espaces ! c'est pourquoi j'ai ajouté des espace dans l'écriture pour bien les faire ressortir, mais ils ne sont pas utile, la formule est donc : =INDIRECT("'"&C29&"'!C25")

@ bientôt

LouReeD

Bonsoir,

pour une recopie facile des formule vous pouvez mettre en cellule D8 cette formule : =INDIRECT("'"&$C$3&"'!L"&LIGNE()+17&"C"&COLONNE()-1;FAUX)
elle pourra alors être "tirée" vers la droite puis vers le bas. D8 est la référence de la cellule Janvier/Nb d'heure avec un tableau pour DIDIER commençant en cellule B2 (mise en forme cadre bleu) et avec son nom en cellule C3.

Maintenant je n'ai pas de données pour vérifier si la formule passe bien et si cela permet de faire un copier/coller avec "échange" des noms.

Bon plus simple je vous communique le fichier avec toutes les formules, ceci fonctionne bien à la condition de supprimer les colonnes K, P et U qui ne servent à rien à première vu...

Le fichier :

@ bientôt

LouReeD

Merci beaucoup pour votre aide Loureed.

Merci de vos remerciements et votre retout !

@ bientôt

LouReeD

Rechercher des sujets similaires à "dupliquer donnees onglet cree recap"