[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

Bonjour, moi non plus je ne coomprends pas bien
mais déjà il faut valider votre formule en, matriciel (ctrl+ maj+ enter)

Pas le temps de creuser maintenant mais peut être en fin d'am
 
Re : Excel 2011 - Liste déroulante - enlever de la liste si choisi

Merci d'avoir pris le temps de me répondre.

Je viens de tester ctrl+maj+enter, et en effet, c'est déjà mieux ... mais il y a encore un petit bug.

J'avance, j'avance ...
 
Dernière édition:
Re : Excel 2011 - Liste déroulante - enlever de la liste si choisi

Re,
Réponse au post #7
Dans ce cas il vaut mieux travailler en lignes pour avoir une zone reste sur chaque ligne et définir une liste de validation sans les $ pour le N° de ligne. On est donc obligés de supprimer la zone nommées choisi1 pour utiliser la plage $F4:$J4. L'utilisation éclairée des $ permet de recopier sur toutes les lignes.
Attention cependant au temps de calculs après chaque saisie qui pourrait augmenter si votre feuille voit son nombre de lignes augmenter.
Cordialement
 

Pièces jointes

Re : Excel 2011 - Liste déroulante - enlever de la liste si choisi

Je vous remercie vraiment beaucoup de votre aide.

Si je puis vous aider avec mes petits moyens n'hésitez pas !

J'ai lu votre explication : je crois qu'il faut que je "m'amuse" un peu avec les différentes fonctions qui compose la formule.

Bonne après-midi
 
Re : Excel 2011 - Liste déroulante - enlever de la liste si choisi

Bonjour,

Je progresse peu à peu ...

Je me suis mise à créer un UserForm pour encoder mes inscriptions dans mon tableau.

Toujours au niveau des choix d'activités, je souhaiterai que mes combobox s'adaptent en fonction de chaque choix.

Dans ma première combo, je choisis le 1.

Dans ma deuxième combo, reste 2-3-4-5, je choisis le 5.

Dans ma troisième restera, 2-3-4 ...

J'ai fait ceci :

Public VarChoix1 As Variant


Private Sub UserForm_Initialize()
Choix1.AddItem "Latin"
Choix1.AddItem "Educ. Environnement"
Choix1.AddItem "At. Ecriture"
Choix1.AddItem "Informatique"
Choix1.AddItem "Act. Artistique"

Choix2.AddItem "Latin"
Choix2.AddItem "Educ. Environnement"
Choix2.AddItem "At. Ecriture"
Choix2.AddItem "Informatique"
Choix2.AddItem "Act. Artistique"

Choix3.AddItem "Latin"
Choix3.AddItem "Educ. Environnement"
Choix3.AddItem "At. Ecriture"
Choix3.AddItem "Informatique"
Choix3.AddItem "Act. Artistique"

Choix4.AddItem "Latin"
Choix4.AddItem "Educ. Environnement"
Choix4.AddItem "At. Ecriture"
Choix4.AddItem "Informatique"
Choix4.AddItem "Act. Artistique"

Choix5.AddItem "Latin"
Choix5.AddItem "Educ. Environnement"
Choix5.AddItem "At. Ecriture"
Choix5.AddItem "Informatique"
Choix5.AddItem "Act. Artistique"

End Sub

Private Sub Choix1_Click()
VarChoix1 = Choix1.Text
MsgBox VarChoix1

End Sub

Private Sub Choix2_Change()
If VarChoix1.Value = "Latin" Then
Choix2.AddItem "Educ. Environnement"
Choix2.AddItem "At. Ecriture"
Choix2.AddItem "Informatique"
Choix2.AddItem "Act. Artistique"
End If
End Sub

Pouvez-vous me dire ce que je ne fais pas bien ?

D'avance merci
 
Re : Excel 2011 - Liste déroulante - enlever de la liste si choisi

Bonjour,

Essayez plutôt avec un code de ce style
Code:
Dim myColl As New Collection

Private Sub UserForm_Initialize()
With myColl
  .Add "Latin", "Latin"
  .Add "Educ. Environnement", "Educ. Environnement"
  .Add "At. Ecriture", "At. Ecriture"
  .Add "Informatique", "Informatique"
  .Add "Act. Artistique", "Act. Artistique"
End With
End Sub

Private Sub ComboBox1_Enter()
Call AddCollection(ComboBox1)
End Sub

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
myColl.Remove ComboBox1
End Sub

Private Sub ComboBox2_Enter()
Call AddCollection(ComboBox2)
End Sub

Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
myColl.Remove ComboBox2
End Sub
Private Sub ComboBox3_Enter()
Call AddCollection(ComboBox3)
End Sub

Private Sub ComboBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
myColl.Remove ComboBox3
End Sub

Private Sub ComboBox4_Enter()
Call AddCollection(ComboBox4)
End Sub

Private Sub ComboBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
myColl.Remove ComboBox4
End Sub

Private Sub ComboBox5_Enter()
Call AddCollection(ComboBox5)
End Sub

Private Sub ComboBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
myColl.Remove ComboBox5
End Sub

Private Sub AddCollection(CB As ComboBox)
Dim i&
CB.Clear
For i& = 1 To myColl.Count
  CB.AddItem myColl(i&)
Next i&
End Sub
 

Pièces jointes

Re : Excel 2011 - Liste déroulante - enlever de la liste si choisi

Bonjour,

Agrandir le champ Planning

Filtre.jpg

version Données/validation

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

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Not Intersect([planning], Target) Is Nothing Then
  [M4:M8].ClearContents
  For Each c In [ListeActivites]
    If IsError(Application.Match(c, Range(Cells(Target.Row, "f"), Cells(Target.Row, "j")), 0)) Then
      [M65000].End(xlUp).Offset(1, 0) = c
    End If
  Next c
 End If
End Sub

version formulaire

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

cf autres exemples
Liste différence

Choix de plusieurs activités

JB
 

Pièces jointes

  • Activites.xls
    Activites.xls
    48 KB · Affichages: 46
  • Filtre.jpg
    Filtre.jpg
    27.1 KB · Affichages: 53
  • Filtre.jpg
    Filtre.jpg
    27.1 KB · Affichages: 57
Dernière édition:
Re : Excel 2011 - Liste déroulante - enlever de la liste si choisi

Bonjour,
J'ai finalement appliqué cette méthode car c'est celle qui correspondait le plus à mon "cas" 🙂

Je crois avoir compris :

On créée un objet qui reprend tout les éléments de la combo;
Lorsqu'on ouvre la combo, on fait appel à cet objet ;

Je suppose que ce qui suit enlève l'élément choisi mais je n'ai pas compris comment ?
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
myColl.Remove ComboBox1
End Sub


J'ai bien vu qu'ici on fait une boucle de i au nbre d'élèment de l'objet mais je ne comprend pas pourquoi ?
Private Sub AddCollection(CB As ComboBox)
Dim i&
CB.Clear
For i& = 1 To myColl.Count
CB.AddItem myColl(i&)
Next i&
End Sub


Finalement, est-il possible de revenir au premier choix (si par exemple, on s'est trompé) et de refaire la manip ?

Merci,
Rachel
 
- 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