XL 2013 Liste déroulante spécifique

  • Initiateur de la discussion Initiateur de la discussion mont25
  • 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 !

mont25

XLDnaute Nouveau
Bonjour,

J'aurais besoin d'aide pour une liste déroulante. Je vous explique, je voudrai une liste déroulante dont la valeur qui a été sélectionnée disparaît de la liste, en regardant avant de poster j'ai trouver une formule " SI +NBSI " qui fonctionne parfaitement, la valeur disparaît de la liste, mais cela me laisse des blancs par exemple "lundi, blanc, mardi, mercredi, blanc......). J'aimerai que les blancs disparaissent et également qu'une fois que tous les éléments ont été sélectionnés, que ma liste recommence au début. Il y a t'il une formule spécifique ? dans quelle mesure je peux l'intégrer à ma formule "SI+NBSI" !

Je remercie beaucoup ceux qui pourront m'aider. Si vous avez besoin de fichier, je vous le communiquerai avec plaisir.
dsl si ce type d'aide à déjà été posté
Cordialement.
 
Re,

Relisez ma remarque du post 8.
Il est probable que ce soit plus simple pour moi. Surtout le jour où vous vous retrouverez seul devant un plantage, ou une demande de modification.
Si vous désirez absolument utiliser l'exemple, avec les risques déjà évoqués, reprenez celui-ci, et changez les noms (Item1 par Bardoux...) en A1:A13.
 
Bonjour.
Euhhhh, oui, et en française ça donne quoi
La plage devant recevoir la formule doit être sélectionnée intégralement, et le curseur texte doit être positionné dans la barre de formule. Pendant que vous maintenez enfoncés simultanément les touches Ctrl et majuscule temporaire, appuyez sur la touche Entrée. Des accolades encadrant la formule signaleront dans la barre de formule que celle ci aura été validée de façon matricielle et non pas ordinaire.
 
Re,

Le problème c'est que j'essai de le transposer sur mon tableau et cela fonctionne 1fois sur 3. C'est pour ça, que j'aurais voulu comprendre les formules, au lieux de les appliquer bêtement.
Pour ce faire vous disposez d'un outil : volet "Formules", groupe "Vérification des formules", outil : "Evaluer la formule" qui vous permet, après avoir sélectionné la cellule contenant une formule, de voir le déroulement de ce calcul pas-à-pas.
 
Re
Ton tableau SI.... c'est exactement ce que je recherche, sauf que, les noms s'effacent en utilisant ton userform ?

C'est le cas d'une liste de validation. Les listes doivent être dans la feuille d'appel.

En voici une adaptation accompagnée d'une autre proposition (avec une liste ActveX).
 

Pièces jointes

Bonsoir à tous,

Un essai via macro. On exécute la macro chaque fois qu'on change de sélection dans le tableau où saisir les noms.

La macro gère les listes de validation par paquets de 12 cellules consécutives (lignes 3 à 14 puis lignes 15 à 26 et enfin lignes 27 à 31). Le 12 est le nombre de cellules de la liste de choix.

Le choix de procéder par paquet de douze cellules consécutives est peut-être une interprétation abusive de ma part. Si c'est le cas, m'en informer. Je modifierai le code en conséquence.

Le code de la macro se trouve dans le module de code de la feuille "Feuil1". Il y a deux constantes à initialiser:
  1. plageB qui est la plage de saisie (ici initialisée à "B3:B31")
  2. PlageListe qui est la plage de la liste de choix (ici initialisée à = "F3:F14")
Si pour un paquet de 12 cellules, il n'y a pas de liste de validation, c'est que les douze noms de la liste de choix ont été utilisés. Pour faire réapparaître une liste de validation, il suffit d'effacer une ou plusieurs cellules du paquet et permettre ainsi des modifications.


Le code :
VB:
Const plageB = "B3:B31"
Const PlageListe = "F3:F14"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim dico, xcell, ycell, n1&, n2&, i

If Intersect(Target, Range(plageB)) Is Nothing Then Exit Sub

n1 = Range(plageB).Row: n2 = n1 + Range(PlageListe).Count - 1
If n2 > Range(plageB).Row + Range(plageB).Rows.Count - 1 Then n2 = Range(plageB).Row + Range(plageB).Rows.Count - 1
Do
   Set dico = CreateObject("scripting.dictionary")
   For Each ycell In Range(PlageListe): dico(CStr(ycell.Value)) = "": Next ycell
   For i = n1 To n2
      If dico.exists(CStr(Cells(i, "b"))) Then dico.Remove (CStr(Cells(i, "b")))
   Next i
   For i = n1 To n2
      Cells(i, "b").Validation.Delete
      If dico.Count > 0 Then
         Cells(i, "b").Validation.Add Type:=xlValidateList, Formula1:=Join(dico.Keys, ",")
      End If
   Next i
   n1 = n1 + Range(PlageListe).Count: n2 = n2 + Range(PlageListe).Count
   If n1 > Range(plageB).Row + Range(plageB).Rows.Count - 1 Then Exit Do
   If n2 > Range(plageB).Row + Range(plageB).Rows.Count - 1 Then n2 = Range(plageB).Row + Range(plageB).Rows.Count - 1
Loop
End Sub
 

Pièces jointes

Dernière édition:
Re,
Le choix de procéder par paquet de douze cellules consécutives est peut-être une interprétation abusive de ma part. Si c'est le cas, m'en informer. Je modifierai le code en conséquence.

Je me réponds... Oui! C'est abusif.

Un essai qui abandonne la notion de paquet et prend en compte tout le tableau de saisie.
 

Pièces jointes

Bon_jour



D'accord avec l'observation de Victor 21 🙂*

Tout dépend de ton contexte. Si tu veux inscrire tous les noms (dans le désordre ou pas) avant de recommencer voici un exemple (VBA) .
Même si j'utilise l'outil Tableau, toute personne, un tant soit peu à l'aise avec le VBA, peut s comprendre et adapter ces 2 macros.

Je suis impressionné par cette macro ...
J'utilise la fonction rouge si en double dans les menu déroulant. Jamais j'aurais pus imaginer qu'il suffisais simplement de l'enlever de la liste pour ne pas à avoir à le re sélectionner.
Bravo et merci.
 
- 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

Discussions similaires

Réponses
1
Affichages
488
Réponses
2
Affichages
593
Retour