
| auteur : SilkyRoad |
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 Excel2007, 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:
Vba |
Private Sub Worksheet_Change (ByVal Target As Range)
MsgBox Target
End Sub
|
|
| auteur : SilkyRoad |
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.
|
| auteur : SilkyRoad |
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.
|
| auteur : SilkyRoad |
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)
Vba |
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim Cible As String
Target. Validation . Delete
Select Case Target. Interior . ColorIndex
Case 6 : Cible = " dossier réglé "
Case 3 : Cible = " dossier en retard "
Case Else : Cible = " Hors zone "
End Select
With Target. Validation
. Add Type:= xlValidateInputOnly, AlertStyle:= xlValidAlertStop, Operator:= xlBetween
. IgnoreBlank = True
. InCellDropdown = True
. InputMessage = Cible
. ShowInput = True
. ShowError = True
End With
End Sub
|
|
| auteur : SilkyRoad |
La vérification est effectuée sur la feuille active:
Vba |
Sub Test ()
MsgBox ValidationExiste (Range (" B1 " ))
End Sub
Function ValidationExiste (Cell As Range) As Boolean
Dim Cible As Range
On Error Resume Next
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
|
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2008
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|