Liste déroulante conditionnelle évolutive
Fermé
princessemoutarde
Messages postés
7
Date d'inscription
jeudi 6 novembre 2014
Statut
Membre
Dernière intervention
31 mars 2015
-
6 nov. 2014 à 22:19
via55 Messages postés 14504 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 21 décembre 2024 - 7 nov. 2014 à 18:52
via55 Messages postés 14504 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 21 décembre 2024 - 7 nov. 2014 à 18:52
A voir également:
- Excel liste déroulante conditionnelle
- Liste déroulante excel - Guide
- Mise en forme conditionnelle excel - Guide
- Créer des listes déroulantes en cascade dans Excel - Guide
- Si et excel - Guide
- Google sheet liste déroulante - Accueil - Guide bureautique
6 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
6 nov. 2014 à 22:24
6 nov. 2014 à 22:24
Bonsoir PM, bonsoir le forum,
Où (onglet / adresse) sont situées les listes de validation, les données ?
Où (onglet / adresse) sont situées les listes de validation, les données ?
princessemoutarde
Messages postés
7
Date d'inscription
jeudi 6 novembre 2014
Statut
Membre
Dernière intervention
31 mars 2015
6 nov. 2014 à 22:29
6 nov. 2014 à 22:29
Bonsoir ThauTheme
Elles sont dans la même feuille de calcul que le tableau que j'ai créé
A+
PM
Elles sont dans la même feuille de calcul que le tableau que j'ai créé
A+
PM
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
6 nov. 2014 à 23:14
6 nov. 2014 à 23:14
Bonsoir PM, bonsoir le forum,
en pièce jointe un exemple pour t'inspirer. Les Listes sont dans l'onglet Listes. Les données dans l'onglet Feuil1. La colonne A de cet onglet contient une validation de données. Au changement dans la colonne A, une validation de données dans la cellule de la même ligne en colonne B est créée en tenant compte des places déjà attribuées...
le code :
Le fichier :
https://www.cjoint.com/?DKgxtTi2X0k
en pièce jointe un exemple pour t'inspirer. Les Listes sont dans l'onglet Listes. Les données dans l'onglet Feuil1. La colonne A de cet onglet contient une validation de données. Au changement dans la colonne A, une validation de données dans la cellule de la même ligne en colonne B est créée en tenant compte des places déjà attribuées...
le code :
Private Sub Worksheet_Change(ByVal Target As Range) Dim L As Object 'déclare la variable L (onglet Listes) Dim DL As Integer 'déclare la variable DL (Dernière Ligne) Dim COL As Byte 'déclare la variable COL (COLonne) Dim TCL As Variant 'déclare la variable TCL (Tableau de Cellules de l'onglet L) Dim LV As String 'déclare la variable LV (Liste de Validation) If Target.Cells.Count > 1 Then Exit Sub 'si plusieurs cellules sélectionnées, sort de la procédure If Application.Intersect(Target, Range("A2:A30")) Is Nothing Then Exit Sub 'limite l'action à la plage A2:A30 Set L = Sheets("Listes") 'définit l'onglet L COL = L.Rows(1).Find(Target.Value, , xlValues, xlWhole).Column 'définit la colonne COL TCL = L.Range(L.Cells(2, COL), L.Cells(Application.Rows.Count, COL).End(xlUp)) 'définit la tableau de cellules TCL For I = 1 To UBound(TCL, 1) 'boucle sur toues les lignes du tableau TCL 'définit la recherche R (recherche la valeur entière de TCL(I,1) dans la colonne 2 (=B) de cet onglet) Set R = Columns(2).Find(TCL(I, 1), , xlValues, xlWhole) 'si R n'existe pas, àjoute TCI(I,1) à la liste de validation LV If R Is Nothing Then LV = IIf(LV = "", TCL(I, 1), LV & "," & TCL(I, 1)) Next I 'prochaine ligne de la boucle With Target.Offset(0, 1).Validation 'prend en compte la validation de données de la cellue adjacente en colonne B .Delete 'supprime une éventuelle validation de données existante .Add xlValidateList, Formula1:=LV 'ajoute la liste LV comme validation de données End With 'fin de la prose en compte de la cellule adjacente en colonne B End Sub
Le fichier :
https://www.cjoint.com/?DKgxtTi2X0k
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
6 nov. 2014 à 23:50
6 nov. 2014 à 23:50
Bonsoir PM, boonsoir le forum,
Dans le fichier en pièce jointe de mon post précédent , remplace le code par celui ci-dessous où un message s'affiche quand toutes les places d'une salle sont attribuées. Je ne te renvoie pas un nouveau fichier en pièce jointe...
Le code :
Dans le fichier en pièce jointe de mon post précédent , remplace le code par celui ci-dessous où un message s'affiche quand toutes les places d'une salle sont attribuées. Je ne te renvoie pas un nouveau fichier en pièce jointe...
Le code :
Private Sub Worksheet_Change(ByVal Target As Range) Dim L As Object 'déclare la variable L (onglet Listes) Dim DL As Integer 'déclare la variable DL (Dernière Ligne) Dim COL As Byte 'déclare la variable COL (COLonne) Dim TCL As Variant 'déclare la variable TCL (Tableau de Cellules de l'onglet L) Dim LV As String 'déclare la variable LV (Liste de Validation) If Target.Cells.Count > 1 Then Exit Sub 'si plusieurs cellules sélectionnées, sort de la procédure If Application.Intersect(Target, Range("A2:A30")) Is Nothing Then Exit Sub 'limite l'action à la plage A2:A30 Set L = Sheets("Listes") 'définit l'onglet L COL = L.Rows(1).Find(Target.Value, , xlValues, xlWhole).Column 'définit la colonne COL TCL = L.Range(L.Cells(2, COL), L.Cells(Application.Rows.Count, COL).End(xlUp)) 'définit la tableau de cellules TCL For I = 1 To UBound(TCL, 1) 'boucle sur toues les lignes du tableau TCL 'définit la recherche R (recherche la valeur entière de TCL(I,1) dans la colonne 2 (=B) de cet onglet) Set R = Columns(2).Find(TCL(I, 1), , xlValues, xlWhole) 'si R n'existe pas, àjoute TCI(I,1) à la liste de validation LV If R Is Nothing Then LV = IIf(LV = "", TCL(I, 1), LV & "," & TCL(I, 1)) Next I 'prochaine ligne de la boucle 'si LV est vide, message, sort de la procédure If LV = "" Then MsgBox "Il n'y a plus de place disponibles pour la salle " & Target.Value & " !": Exit Sub With Target.Offset(0, 1).Validation 'prend en compte la validation de données de la cellue adjacente en colonne B .Delete 'supprime une éventuelle validation de données existante .Add xlValidateList, Formula1:=LV 'ajoute la liste LV comme validation de données End With 'fin de la prose en compte de la cellule adjacente en colonne B End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
princessemoutarde
Messages postés
7
Date d'inscription
jeudi 6 novembre 2014
Statut
Membre
Dernière intervention
31 mars 2015
7 nov. 2014 à 17:37
7 nov. 2014 à 17:37
Waouhhh merci ! Je vais essayer de faire ça ce week-end ! Merci beaucoup !!!
via55
Messages postés
14504
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
21 décembre 2024
2 738
7 nov. 2014 à 18:52
7 nov. 2014 à 18:52
Bonsoir
Une autre possibilité uniquement par formules sans macro
https://www.cjoint.com/?0Khs46MO6WX
Cdlmnt
Une autre possibilité uniquement par formules sans macro
https://www.cjoint.com/?0Khs46MO6WX
Cdlmnt