FAQ Excel
FAQ ExcelConsultez toutes les FAQ
Nombre d'auteurs : 46, nombre de questions : 845, dernière mise à jour : 30 mars 2022
- C'est quoi une liste de validation ?
- Comment faire pour ne pas visualiser les cellules vides dans une liste de validation ?
- Comment créer une dépendance entre deux listes ?
- Comment créer des listes de validation conditionnelles et sans doublon ?
- Comment créer une liste de validation à partir de données contenues dans une autre feuille ?
- Comment afficher une info-bulle sur une cellule ?
- Comment vérifier si une liste de validation existe dans une cellule ?
Une liste de validation est une liste déroulante qui s'affiche dans une cellule, et dont le choix est limité par des données préalablement définies.
Une liste déroulante:
* Facilite la saisie des données (évite d'écrire de longues descriptions).
* Evite des erreurs de saisie ou d'orthographe (assure la correction).
* Garantit que les valeurs saisies sont valides (limite le choix aux données prédéfinies).
Lorsqu'une vous sélectionnez une cellule qui contient une liste de validation, celle-ci affiche une flèche sur son bord droit. Cliquez sur la flèche pour visualiser le menu déroulant, puis sélectionnez l'entrée voulue.
Vous pouvez créer une liste déroulante depuis le menu Données/Validation.
Dans Excel 2007, utilisez le bouton "Validation de données" dans le groupe "Outils de données", de l'onglet "Données".
Lorsque la boîte de dialogue est affichée :
Sélectionnez l'onglet "Options".
Choisissez "Liste" dans le menu déroulant "Autoriser:".
Le champ "Source" contient les données qui vont s'afficher dans la liste déroulante sous forme :
* D'une plage de cellules de référence =$B$1
:$B$6
* Des données directement saisies dans le champ, séparées par des point
virgules Riri;Fifi;Loulou
Cliquez sur le bouton OK pour valider.
L'évènement Change, du module objet Worksheet (feuille de calcul), fonctionne lorsque vous sélectionnez un nouvel élément dans la liste, à partir de la version 2000 d'Excel :
Private
Sub
Worksheet_Change
(
ByVal
Target As
Range)
MsgBox
Target
End
Sub
Par exemple, la feuille nommée "Feuil1" contient vos données sources (Dans la plage A1:A50) pour remplir la liste de validation,
cellules vides comprises.
Dans la cellule B1 de la Feuil1, saisissez cette formule (qui permetta d'identifier les cellules non vides) :
=SI
(A1
=""
;""
;SOMMEPROD
((A$1
:A$50
<=A1
)-(ESTVIDE
(A$1
:A$50
))))
Et utilisez les poignées de recopie vers le bas, jusqu'en B50.
Dans la colonne C1 de la même feuille, saisissez :
=SI
(ESTNA
(EQUIV
(MIN
(B$1
:B$50
)+LIGNE
()-LIGNE
(C$1
);B$1
:B$50
;0
));""
;INDEX
(A$1
:A$50
;EQUIV
(MIN
(B$1
:B$50
)+LIGNE
()-LIGNE
(C$1
);B$1
:B$50
;0
)))
Puis étirez la formule vers le bas, jusqu'en C50.
Cette opération permet de regrouper, en tête, les cellules non vides.
Vous pouvez maintenant nommer la plage de cellules dans la feuille source "Feuil1":
Menu Insertion/Nom/Définir
Dans le champ "Nom dans le classeur :", indiquez par exemple: PlageCible
Dans le champ "Fait référence à", indiquez =Feuil1
!$C$1
:$C$50
.
Cliquez sur le bouton Ajouter.
Cliquez sur le bouton OK pour valider.
Sélectionnez la feuille qui va contenir la liste de validation (par exemple la Feuil2).
Sélectionnez une cellule.
Utilisez le menu Données/Validation
Onglet "Options"
Autoriser ="liste"
Cochez "ignorer si vide" et "liste déroulante dans cellule".
Dans le champ "source :" saisissez :
=DECALER
(PlageCible;0
;0
;NBVAL
(PlageCible)-NB.SI
(PlageCible;""
))
Désormais, s'il y a des cellules vides dans la plage source Feuil1!A1:A50, elles n'apparaissent plus dans la liste de validation.
Dans cet exemple, la sélection d'un élément de ma première liste affichera une deuxième liste déroulante différente dans la
colonne à coté.
Vous allez constituez votre première liste.
Ensuite, constituez vos sous-listes que vous nommerez du même nom que l'item correspondant dans la liste principale.
Suivez la procédure suivante :
Valeur en A1 : filles
Valeur en A2 : gars
Valeurs de B1 à B5 :
Marie
Claire
Sophie
Julie
Nathalie
Nommez la plage B1:B5, filles (même orthographe que dans la liste principale) en sélectionnant la plage puis en cliquant dans le menu Insertion/nom/définir.
Valeurs de C1 à C5 :
Marc
Dominique
Paul
François
Jacques
Nommez la plage C1:C5, garçons.
En D1, déclarez votre première liste (Données:Validation/ Liste $A$1:$A$2).
en E1, allez dans le menu Données/Validation.
Saisissez dans la zone source :
=INDIRECT
($D$2
)
Dès lors, vos listes sont liées.
Lorsque vous sélectionnez la valeur filles en D1, la liste déroulante de E1 proposera les
prénoms des filles ...
Pour utiliser les cellules d'une autre feuille, il faut nommer la plage de données qui va être utilisée pour la liste de validation :
Sélectionnez la plage de cellules dans la première feuille.
Ensuite utilisez le menu Insertion/Nom/Définir.
Nommez la plage (par exemple NomListe).
Cliquez sur le bouton Ajouter, puis sur le bouton OK pour valider.
Placez vous sur la deuxième feuille qui va recevoir la liste de validation.
Utilisez le menu Données/Validation.
Sélectionnez l'onglet "Options".
Choisissez "Liste" dans le champ "Autoriser".
Dans le champ "Source", vous indiquez le nom que vous avez donné à la plage de cellules dans la première feuille,
précédé du signe égal (=NomListe).
Cliquez sur le bouton OK pour valider.
Il est possible d'utiliser les options de l'objet Validation afin d'afficher une info-bulle sur la cellule sélectionnée.
Cet exemple affiche des info-bulles différentes si la couleur de fond de la cellule est rouge ou jaune.
(Procédure évènementielle à placer dans le
module objet de la feuille devant recevoir les info-bulles)
Private
Sub
Worksheet_SelectionChange
(
ByVal
Target As
Range)
Dim
Cible As
String
'Supprime la validation existante
Target.Validation.Delete
'Vérifie la couleur de fond de la cellule sélectionnée
Select
Case
Target.Interior.ColorIndex
'si couleur de cellule Jaune
Case
6
: Cible =
"dossier réglé"
'si couleur de cellule rougee
Case
3
: Cible =
"dossier en retard"
'autres
Case
Else
: Cible =
"Hors zone"
End
Select
'création validation et info-bulle
With
Target.Validation
.Add
Type
:=
xlValidateInputOnly, AlertStyle:=
xlValidAlertStop, Operator:=
xlBetween
.IgnoreBlank
=
True
.InCellDropdown
=
True
.InputMessage
=
Cible
.ShowInput
=
True
.ShowError
=
True
End
With
End
Sub
La vérification est effectuée sur la feuille active :
Sub
Test
(
)
'Vérifie si la cellule A1 contient une liste de validation.
MsgBox
ValidationExiste
(
Range
(
"B1"
))
End
Sub
Function
ValidationExiste
(
Cell As
Range) As
Boolean
Dim
Cible As
Range
On
Error
Resume
Next
'Définit toutes les cellules contenant une liste de validation dans la feuille active.
Set
Cible =
ActiveSheet.Cells.SpecialCells
(
xlCellTypeAllValidation)
On
Error
GoTo
0
If
Not
Cible Is
Nothing
Then
If
Not
Intersect
(
Cible, Cell) Is
Nothing
Then
ValidationExiste =
True
Else
ValidationExiste =
False
End
If
Else
ValidationExiste =
False
End
If
End
Function