[RESOLU] Excel 2011 - Liste déroulante - enlever de la liste si choisi

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

lrachell

XLDnaute Nouveau
Bonjour,

Cela fait plusieurs jours que je suis sur ce problème :

un élève à un choix d'activités (Latin, Educ. environnement, At. Ecriture, Informatique et Act. artistique) pour lequel il peut donner une priorité (1er choix ... 5ème choix).

Je souhaiterai que s'il prend latin en 1er choix, latin ne se trouve plus dans la liste déroulante dans la colonne 2ème choix.

Pour ce faire, j'ai utilisé cette formule :

=SI(LIGNES($4:$4)<=NBVAL(Tous)-NBVAL(choisis1);
INDEX(Tous;PETITE.VALEUR(SI((NB.SI(choisis1;Tous)=0);LIGNE(INDIRECT("1:"&LIGNES(Tous))));LIGNES($4:$4)));"")

Mais je n'en comprend pas le début ...

Pouvez-vous m'aider svp ?
 

Pièces jointes

Dernière édition:
Re : Excel 2011 - Liste déroulante - enlever de la liste si choisi

Merci beaucoup pour vos réponses, j'y vois plus clair peu à peu ...

J'attaque mon 2ème userform qui est identique que le 1er. J'ai recopié les fonctions en changeant les noms de variable mais cela ne fonctionne pas ? Ai-je oublié qqch ? Ou est-il possible d'utiliser une fonction pour 2 userform ?

D'avance merci
 

Pièces jointes

Dernière édition:
Re : Excel 2011 - Liste déroulante - enlever de la liste si choisi

Bonjour,

Form2 programmé avec Dictionary. On peut effacer des choix (choix1 à choix5) sans tout réinitialiser. Ils redeviennent disponibles immédiatement

Code:
Private Sub UserForm_Initialize()
    For i = 1 To 5
      Me("combobox" & i).List = [liste2].Value
    Next i
End Sub

Sub maj()
    Set d2 = CreateObject("Scripting.Dictionary")
    For Each c In [liste2]: d2(c.Value) = "": Next c
    For i = 1 To 5
       tmp = Me("combobox" & i): If d2.exists(tmp) Then d2.Remove tmp
    Next i
    For i = 1 To 5
      Me("combobox" & i).List = d2.keys
    Next i
End Sub

DVcréaModifForm.xls permet de créer et de modifier

PS: la solution du post#13 est bien + simple

http://boisgontierjacques.free.fr/fichiers/DonneesValidation/DVActivites.xls

JB
 

Pièces jointes

Dernière édition:
Re : Excel 2011 - Liste déroulante - enlever de la liste si choisi

Merci M. Boisgonthier pour toutes ces réponses.

C'est vrai que la solution du poste #13 est plus simple. Seulement, je dois essayer d'automatiser un maximum pour verrouiller les feuilles afin que mes collègues ne fasse pas "péter" le tableau.

Je vais tester lundi ta dernière solution même si je dois que je ne connais pas du tout dictionnary 🙂

Je vais parcourir le forum et décortiquer cela : un grand merci.
 
Re : Excel 2011 - Liste déroulante - enlever de la liste si choisi

Bonjour,

Dictionary n'existe pas sur MAC

http://boisgontierjacques.free.fr/fichiers/DonneesValidation/DVDiffCreaModifFormMAC.xls

Code:
Private Sub UserForm_Initialize()
    For i = 1 To 5
      Me("combobox" & i).List = [liste2].Value
    Next i
    init
End Sub

Sub maj()
    ligne = 0
    Dim b(): ReDim b(1 To 5)
    For i = 1 To 5
       témoin = False
       For j = 1 To 5
         tmp = Me("combobox" & j): If tmp = Range("liste2")(i) Then témoin = True
       Next j
       If Not témoin Then ligne = ligne + 1: b(ligne) = Range("liste2")(i)
    Next i
    If ligne > 0 Then ReDim Preserve b(1 To ligne) Else ReDim Preserve b(1 To 1)
    For i = 1 To 5
      Me("combobox" & i).List = b
    Next i
End Sub


JB
 

Pièces jointes

Dernière édition:
- 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

Retour