• Initiateur de la discussion Initiateur de la discussion Bruno87
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Bruno87

Guest
Bonjour à tous!

J'aurais voulu savoir s'il était possible de récupérer les éléments d'une liste non utilisée.

Je m'explique. Dans une feuille, j'ai créer une liste avec plusieurs éléments.
Cette liste est utilisée dans un autre feuille du même classeur dans une validation de données.
Je remplis cette feuille à l'aide de cette liste.

Le but de la manipulation est de connaitre les éléments de la liste qui n'ont pas été utilisé à l'aide d'une macro qui afficherai le nombre d'éléments non utilisés et leurs dénominations

Merci
 
Re : Liste et macro

Je pense que je me suis mal exprimé. Je joins un fichier pour plus de cohérence.

Dans l'onglet personnel, on trouve une liste du personnel. Chaque liste a le nom suivant:
liste_chef
liste_compagnon
liste_interimaire

Ces différentes listes permettent de remplir l'onglet intitulé planning. Le but de la manoeuvre est de voir s'afficher une fenetre lorsque l'on clique sur le bouton personnel manquant. Dans cette fenetre, on trouverait le nombre d'éléments de la liste qui n'ont pas été attribué et leurs dénominations.
 

Pièces jointes

Re : Liste et macro

Si on se débrouillais pour ne proposer dans les listes de validation que les élément qui n'ont pas déjà été attribués le même jour, ça conviendrait ? (je ne sais pas encore tout à fait comment on va faire)
À +
 
Re : Liste et macro

Nouveau module que j'ai appelé "MListeNonPrésents":
VB:
Option Explicit
'

Function Inutilisés(ByVal Liste As Range, ByVal Dans As Range) As Variant()
Dim Te() As Variant, Ts() As Variant, Le As Long, Ls As Long
Te = Liste.Value
ReDim Ts(1 To UBound(Te)) As Variant
Ls = 0
For Le = 1 To UBound(Te)
   If IsEmpty(Te(Le, 1)) Then Exit For
   If Dans.Find(Te(Le, 1), Dans.Item(1, 1), xlValues, xlWhole, xlByRows, xlNext, False, False) _
      Is Nothing Then Ls = Ls + 1: Ts(Ls) = Te(Le, 1)
   Next Le
ReDim Preserve Ts(1 To Ls) As Variant
Inutilisés = WorksheetFunction.Transpose(Ts)
End Function
Il va certainement être utile. Maintenant je vais regarder comment faire dépendre cette liste de la plage sélectionnée
À +
 
Re : Liste et macro

Restons concentré sur l'idée en cours, voulez vous ?
J'ai eu beaucoup de mal à limiter une liste de validation aux éléments inutilisés.
J'ai modifié la fonction pour qu'elle rende en premier le nombre d'éléments inutilisés.
Ce nombre est ensuite utilisé pour définir un nom de plage dynamique propre utilisé effectivement dans la liste de validation.
Je note la colonne sélectionnée dans une plage nommée ColSel au moyen d'une Worksheet_SelectionChange
Le mieux c'est que je joigne ce que j'ai fait.
À +
 

Pièces jointes

Re : Liste et macro

Merci pour votre réponse,

Je vais essayer d'adapter cette méthode aux autres listes. Mais il serait intéressant de voir comment l'on peut afficher les éléments manquants dans un message.
 
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
16
Affichages
453
Réponses
40
Affichages
2 K
Retour