Ajout de ligne en fonction d'une liste d'un autre tableau [Résolu]

tpbktpbk 5 Messages postés mardi 1 août 2017Date d'inscription 3 août 2017 Dernière intervention - 1 août 2017 à 13:18 - Dernière réponse :  tpbktpbk
- 7 août 2017 à 11:25
Bonjour à tous, mille excuses pour le titre peu évocateur.
J'explique :
Sur un onglet j'ai un tableau contenant une liste de nom avec différentes infos (nom, prénom, âge, date de naissance, etc)
Sur un deuxième onglet, j'ai copier ma liste (juste nom et prénom), et j'ai ajouté un calendrier. L'objectif est de marquer les présences de chaque personne en fonction des jours du calendrier.

Dans mon onglet 1, je voudrais afficher le pourcentage de présence de chaque personne.

Ce que je voudrais c'est que lorsque que j'ajoute une personne dans ma liste (dans l'onglet 1), une ligne s'ajoute dans le tableau de l'onglet 2 avec le nom et prénom associés à la personne.

J'ai d'abord créer un identifiant unique pour chaque personne. Ce qui me permet de récupérer des données relatifs à chaque personne.

Ensuite, j'ai essayé de synchroniser les listes de nom, avec une formule :
Dans l'onglet 2
Col A; Col B; Col C
=Liste[@Id]; Liste[@Nom]; Liste[@Prénom]

Le problème c'est que lorsque je complète la partie présence, si je change le mode de filtrage dans la colonne Id, Nom ou Prénom du tableau de l'onglet 1, la ligne ne présence correspondant à la personne ne bouge pas avec avec le nom dans l'onglet 2.

Donc sur le fichier actuel, j'ai simplement fait un copier coller.
Comment faire, pour que la liste de nom de l'onglet 2 corresponde avec la liste de l'onglet 1, en gardant en mémoire les infos relative à chaque personne ?

Je remercie par avance ceux qui pourront m'aider.
Je suis désolée, si je ne suis pas assez claire, vos questions sont les bienvenues !

TPBK

Lien vers le fichier : http://www.cjoint.com/c/GHblvckYlgV
Afficher la suite 

9 réponses

Répondre au sujet
via55 8800 Messages postés mercredi 16 janvier 2013Date d'inscription 15 décembre 2017 Dernière intervention - 1 août 2017 à 14:18
0
Utile
7
Bonjour

Ton fichier en retour :
http://www.cjoint.com/c/GHbmscY83hz

Le filtre fonctionne correctement

Cdlmnt
Via
tpbktpbk 5 Messages postés mardi 1 août 2017Date d'inscription 3 août 2017 Dernière intervention - 2 août 2017 à 11:01
Merci pour ta réponse.
Je suis pas hyper fortiche avec les macros.
Est-ce que ça nécessiste nécessairement l'utilisation d'un bouton ?
via55 8800 Messages postés mercredi 16 janvier 2013Date d'inscription 15 décembre 2017 Dernière intervention > tpbktpbk 5 Messages postés mardi 1 août 2017Date d'inscription 3 août 2017 Dernière intervention - 2 août 2017 à 19:01
Pas forcement la macro peut être déclenchée automatiquement soit à l'activation d'une feuille, soit au double-clic dans une cellule, soit par un raccourci-clavier ..
tpbktpbk 5 Messages postés mardi 1 août 2017Date d'inscription 3 août 2017 Dernière intervention - 3 août 2017 à 14:49
Bonjour Via !

Encore merci pour ta réponse !

Alors oui j'ai vu ça hier dans l'aprèm.
J'ai essayé de faire un truc :
Je voudrais que la macro se déclenche lorsque j'inscris un nouveau nom et prénom dans la dernière ligne. Je pense que j'ai réussi cette partie. J'ai testé avec un MsgBox.

Ensuite je voudrais, copier l'Id, le Nom et Prénom de la personne fraîchement inscrite, pour la coller dans la liste du calendrier, à la suite des autres.
Pour finir, je voudrais trier les 2 listes, d'abord par ordre alphabétique sur le Nom puis sur le Prénom.

Pour la 2ème partie j'ai utilisé l'enregistreur de macro, que j'essaie d'adapter pour qu'il me copie/colle les bonnes cellules.

Mais avec modifs, ça copie/colle pas du tout.


Voici le code de la macro :
Sub Macro1()
Dim NouvellePersonne As Range
Dim DerIdCalend As Range
'
' Macro1 Macro
'

'
Sheets("Liste").Select
Set NouvellePersonne = Union(Range("ListeNoms[#Headers,[Id]]").End(xlDown), Range("ListeNoms[#Headers,[Id]]").End(xlDown).Offset(0, 1), Range("ListeNoms[#Headers,[Id]]").End(xlDown).Offset(0, 2))
NouvellePersonne.Select
Selection.Copy
Sheets("Calendrier 2017").Select
Set DerIdCalend = Range("Calend2017[#Headers,[Id]]").End(xlDown).Offset(1)
DerIdCalend.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("Calend2017[#Headers,[Nom]]").Select
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Calendrier 2017").ListObjects("Calend2017").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Calendrier 2017").ListObjects("Calend2017").Sort. _
SortFields.Add Key:=Range("Calend2017[Nom]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Calendrier 2017").ListObjects("Calend2017").Sort. _
SortFields.Add Key:=Range("Calend2017[Prénom]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Calendrier 2017").ListObjects("Calend2017"). _
Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Liste").Select
Range("ListeNoms[#Headers,[Nom]]").Select
ActiveWorkbook.Worksheets("Liste").ListObjects("ListeNoms").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Liste").ListObjects("ListeNoms").Sort.SortFields. _
Add Key:=Range("ListeNoms[Nom]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Liste").ListObjects("ListeNoms").Sort.SortFields. _
Add Key:=Range("ListeNoms[Prénom]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Liste").ListObjects("ListeNoms").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With


Range("A1").Select

End Sub


Voilà... Si tu peux encore m'aider je t'en serai très reconnaissante !
via55 8800 Messages postés mercredi 16 janvier 2013Date d'inscription 15 décembre 2017 Dernière intervention > tpbktpbk 5 Messages postés mardi 1 août 2017Date d'inscription 3 août 2017 Dernière intervention - 3 août 2017 à 16:55
Re,

Voilà une macro qui se déclenche dès qu'un prénom est entré dans Liste : transfert dans Calendrier, tri alpha Liste et Calendrier
https://mon-partage.fr/f/9bovvd40/

En espérant que ça conviendra

Cdlmnt
Via
Bjr Via,

Merci c'est super, maintenant le copié/collé fonctionne !

Bien cordialement.
tpbk
Commenter la réponse de via55
tpbktpbk 5 Messages postés mardi 1 août 2017Date d'inscription 3 août 2017 Dernière intervention - 1 août 2017 à 14:41
0
Utile
Ok, en fait, fallait juste pas utiliser les "tableaux".
Merci beaucoup via55 !
Commenter la réponse de tpbktpbk