Lié 2 feuille d'un classeur

Bonjour à tous,

Je souhaiterais lier 2 feuilles d'un même classeur.

Je vous explique. J'aimerai que sur ma deuxième feuille du classeur nommé "Liste complète TH 2019" apparaisse automatiquement les personnes avec une reconnaissance TH ainsi que toutes les informations liées tel que le nom, le prénom, la date de naissance et la date de reconnaissance travailleur handicapé.

Et je souhaiterais dans un deuxième temps que dans la feuille "Liste complète TH 2019" et dans la colonne "renouvellement" que en fonction de la date du jour cela m'inscrit automatiquement "à jour" ou "périmé" et j'aimerai que cela indique "en cours" quand une date est rentré dans la colonne "date remise dossier la MDPH".

Je vous ai joint un modèle en pièce jointe.

J'espère avoir été clair et vous remercie par avance pour votre aide.

Bien cordialement.

Emma95

Bonjour,

Est-ce que ça vous dérange d'avoir une macro excel dans votre fichier ? Cela implique que si vous modifiez le format de votre tableau de base, il faudra éventuellement retoucher le code. Sinon, je ne vois pas comment faire la 1ère partie de votre problème, recopier dans votre 2ème onglet seulement les personnes TH.

Cindy

Bonjour Cindy,

Non cela ne me dérange absolument pas d'avoir un macro sur ce fichier au contraire mais je ne sais pas créer un macro donc si vous pouvez m'aider en me le créant et en me l'expliquant un minimum.

En vous remerciant par avance.

Bonjour,

Voici donc votre fichier avec la macro qui va bien pour mettre à jour le 2ème onglet lorsqu'une nouvelle personne TH est ajoutée sur l'onglet 1.

Pour accéder à la macro, vous pouvez aller dans Développeur/Visual Basic/Feuil1. Je vous ai mis le plus de commentaires possibles pour que vous la compreniez. Grâce à elle, en cliquant sur le bouton sur le 1er onglet "Ajouter TH", il va identifier les personnes TH de l'onglet 1 pour les copier dans le 2ème onglet.

Ensuite, je vous ai mis une formule dans la date renouvellement. Attention à ne pas effacer les formules présentes dans les colonnes jaunes de l'onglet 2. Même si les cases paraissent vides, il y a des formules dedans.

J'espère que j'ai pu t'aider.

Cindy

Bonjour Cindy,

Merci beaucoup, par contre la macro ne fonctionne pas, même sur votre document, je supprime toutes les données de la feuille 2 et clique sur le bouton "Ajouter TH" sur la feuille 1 un message s'affiche : Impossible d'exécuter la macro "Registre du personnel 2019.xlsm'!Feuil.1.TH"Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macros soient désactivées.

Je suis sous excel version 2010, j'ai déjà insérer des macros sur plusieurs de mes fichiers excel et cela a toujours bien fonctionné, je ne comprends pas.

Votre macro fonctionne t'il correctement ?

Je vous remercie également pour les formules dans les colonnes jaunes de la feuille 2.

Bonjour,

Dans "Date reconnaissance RQTH", il faut que les années ne comportent que 2 chiffres (18 pour 2018). Vous aviez fait comme ça pour tous sauf pour Mario, donc ça bloquait.

Je vous renvoie votre fichier, dites moi s'il y a encore des bugs?

Cindy

Bonjour,

Dans "Date reconnaissance RQTH", il faut que les années ne comportent que 2 chiffres (18 pour 2018). Vous aviez fait comme ça pour tous sauf pour Mario, donc ça bloquait.

Je vous renvoie votre fichier, dites moi s'il y a encore des bugs?

Cindy

Bonjour Cindy,

Votre macro fonctionne.

Par contre je n'arrive pas a créer le bouton "Ajouter TH", parce que il faut que je mette cette macro sur mon vrai registre du personnel. J'ai réussi a créer le bouton mais comment le rendre actif ??

Pouvez-vous aussi me mettre sur la macro les numéros de lignes et de colonnes à changer en fonction du tableau car malgré vos explications je ne comprends absolument rien . (Pas besoin de me renvoyer le fichier faite juste un copié collé de votre macro)

En vous remerciant beaucoup beaucoup.

Emma95

Bonjour,

Pour rendre votre bouton actif (que vous avez créé via le ruban Développeur), vous faites clic droit sur le bouton / Affecter une macro / AjouterTH. Je vous avais mis le bouton tout à gauche sur votre tableau.

Et voilà pour les numéros à changer en cas de changement de colonnes :

Sub AjouterTH()

'Définition du type de variables que nous allons utiliser, ici des Integer soit des nombres
Dim LigneRegPersonnel As Integer            'ligne de Registre Personnel sur laquelle nous allons travailler
Dim DerniereLigneRegPersonnel As Integer    'dernière ligne du tableau Registre Personnel
Dim LigneTH As Integer                      'ligne de Liste TH sur laquelle nous allons travailler
Dim DerniereLigneTH As Integer              'dernière ligne du tableau Liste TH

'Calcul de la dernière ligne de chaque tableau
DerniereLigneRegPersonnel = Sheets(1).Cells(Rows.Count, 3).End(xlUp).Row    'On cherche dans la colonne 3 ("nom") de l'onglet 1, soit Registre Personnel, la dernière ligne remplie /// 3 = Colonne C onglet "Registre" = "Nom"
DerniereLigneTH = Sheets(2).Cells(Rows.Count, 5).End(xlUp).Row              'On cherche dans la colonne 5 ("nom") de l'onglet 2, soit Liste TH, la dernière ligne remplie /// 5 = Colonne E onglet "Liste" = "Nom"

'Comparaison de chaque ligne de Registre Personnel avec toutes les lignes de Liste TH pour voir si elle est déjà présente
For LigneRegPersonnel = 6 To DerniereLigneRegPersonnel                                          'Le tableau Registre personnel commence à la ligne 6 et nous allons regarder chaque ligne individuellement jusqu'à la dernière
    If Sheets(1).Cells(LigneRegPersonnel, 14).Value = "TH" Then                                 'Pour chaque ligne, si la notion "TH" est inscrite on va faire la suite, sinon on sort de cette boucle IF (SI) /// 14 = Colonne N onglet "Registre" = "Qualif"
        NombreValeursIdentiquesACetteLigneDansTH = Application.CountIfs(Sheets(2).Columns(5), Sheets(1).Cells(LigneRegPersonnel, 3).Value, Sheets(2).Columns(6), Sheets(1).Cells(LigneRegPersonnel, 4).Value)   'On cherche dans le tableau du 2ème onglet, le nombre de lignes qui ont exactement le même nom et même prénom que la ligne que nous sommes en train d'étudier sur l'onglet 1 (ça équivaut à une fonction NB.SI.ENS) /// 3 = Colonne C onglet "Liste TH" = "Nom" - 4 = Colonne D onglet "Liste TH" = "Prénom" - 5 = Colonne E onglet "Registre" = "Nom" - 6 = Colonne F onglet "Registre" = "Prénom"
        If NombreValeursIdentiquesACetteLigneDansTH = 0 Then                                    'Si on ne trouve aucune ligne identique, on va copier les informations de l'onglet 1 vers l'onglet 2
            LigneTH = DerniereLigneTH + 1                                                       'La nouvelle ligne à remplir est celle qui suit la dernière ligne du tableau Liste TH
            Sheets(2).Cells(LigneTH, 1).Value = "TH"                                            'Valeur de la colonne 1 : TH /// 1 = Colonne A onglet "Liste" - "RQTH"
            Sheets(2).Cells(LigneTH, 4).Value = Sheets(1).Cells(LigneRegPersonnel, 11).Value    'Date de naissance : Valeur de la colonne 4 de l'onglet 2 = valeur de la colonne 11 de l'onglet 1 /// 4 = Colonne D onglet "Liste" = "Date de naissance" - 11 = Colonne K onglet "Registre" = "Date de naissance"
            Sheets(2).Cells(LigneTH, 5).Value = Sheets(1).Cells(LigneRegPersonnel, 3).Value     'Idem pour nom  /// 5 = Colonne E onglet "Liste" = "Nom" - 3 = Colonne C onglet "Registre" = "Nom"
            Sheets(2).Cells(LigneTH, 6).Value = Sheets(1).Cells(LigneRegPersonnel, 4).Value     'Idem pour prénom  /// 6 = Colonne F onglet "Liste" = "Prénom" - 4 = Colonne D onglet "Registre" = "Prénom"
            DateDébutRQTH = Left(Sheets(1).Cells(LigneRegPersonnel, 16).Value, 8)               'On récupère la date de début de RQTH en ne prenant que la partie gauche de Date Reconnaissance RQTH (8 caractères) dans l'onglet 1 /// 16 = Colonne P onglet "Registre" - "Date reconnaisance RQTH"
            Sheets(2).Cells(LigneTH, 7).Value = DateSerial(Right(DateDébutRQTH, 2), Mid(DateDébutRQTH, 4, 2), Left(DateDébutRQTH, 2))   'On reconstitue une date avec la chaine de caractères que l'on a extrait avant : dateserial(année,mois,jour) /// 7 = Colonne G onglet "Liste" - "Date début reconnaisance RQTH"
            DateFinRQTH = Right(Sheets(1).Cells(LigneRegPersonnel, 16).Value, 8)                'On récupère la date de fin de RQTH en ne prenant que la partie droite de Date Reconnaissance RQTH (8 caractères) dans l'onglet 1 /// 16 = Colonne P onglet "Registre" - "Date reconnaisance RQTH"
            Sheets(2).Cells(LigneTH, 8).Value = DateSerial(Right(DateFinRQTH, 2), Mid(DateFinRQTH, 4, 2), Left(DateFinRQTH, 2))         'On reconstitue une date avec la chaine de caractères que l'on a extrait avant : dateserial(année,mois,jour) /// 8 = Colonne H onglet "Liste" - "Date fin reconnaisance RQTH"

            DerniereLigneTH = DerniereLigneTH + 1                                               'Comme on a ajouté une ligne, la dernière ligne du tableau Liste TH est donc la suivante
        End If
    End If
Next                                                                                            'On recommence pour la ligne suivante du tableau Registre Personnel

End Sub

Cindy

Bonjour Cindy,

Tout d'abord merci encore beaucoup beaucoup.

Néanmoins j'ai encore un léger problème, j'ai bien copié votre macro mais cela ne fonctionne toujours pas. Cela me met un message d'erreur "propriété ou méthode non gérée par cet objet" je ne comprends pas j'ai pourtant tout bien recopier.

Je vous mets la macro si vous trouvez mon erreur cela m'aiderait encore beaucoup.

Sub AjouterTH()

Dim LigneRegPersonnel As Integer

Dim DerniereLigneRegPersonnel As Integer

Dim LigneTH As Integer

Dim DerniereLigneTH As Integer

DerniereLigneRegPersonnel = Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row

DerniereLigneTH = Sheets(2).Cells(Rows.Count, 5).End(xlUp).Row

For LigneRegPersonnel = 6 To DerniereLigneRegPersonnel

If Sheets(1).Cells(LigneRegPersonnel, 13).Value = "TH" Then

NombreValeursIdentiquesACetteLigneDansTH = Application.Countlfs(Sheets(2).Columns(2), Sheets(1).Cells(LigneRegPersonnel, 5).Value, Sheets(2).Columns(3), Sheets(1).Cells(LigneRegPersonnel, 6).Value)

If NombreValeursIdentiquesACetteLigneDansTH = 0 Then

LigneTH = DerniereLigneTH + 1

Sheets(2).Cells(LigneTH, 1).Value = "TH"

Sheets(2).Cells(LigneTH, 4).Value = Sheets(1).Cells(LigneRegPersonnel, 10).Value

Sheets(2).Cells(LigneTH, 5).Value = Sheets(1).Cells(LigneRegPersonnel, 2).Value

Sheets(2).Cells(LigneTH, 6).Value = Sheets(1).Cells(LigneRegPersonnel, 3).Value

DateDébutRQTH = Left(Sheets(1).Cells(LigneRegPersonnel, 15).Value, 8)

Sheets(2).Cells(LigneTH, 7).Value = DateSerial(Right(DateDébutRQTH, 2), Mid(DateDébutRQTH, 4, 2), Left(DateDébutRQTH, 2))

DateFinRQTH = Right(Sheets(1).Cells(LigneRegPersonnel, 15).Value, 8)

Sheets(2).Cells(LigneTH, 8).Value = DateSerial(Right(DateFinRQTH, 2), Mid(DateFinRQTH, 4, 2), Left(DateFinRQTH, 2))

DerniereLigneTH = DerniereLigneTH + 1

End If

End If

Next

End Sub

Merci beaucoup par avance

Bonjour,

Il vaut mieux que vous me renvoyiez votre fichier.

Cindy

Je ne peux pas vous renvoyer le fichier il contient des données confidentielles.

Rechercher des sujets similaires à "lie feuille classeur"