Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


C'est quoi une liste de validation ?
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

Comment faire pour ne pas visualiser les cellules vides dans une liste de validation ?
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.



Comment créer une liste de validation à partir de données contenues dans une autre feuille ?
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.



Comment afficher une info-bulle sur une cellule ?
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
    
    '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

Comment vérifier si une liste de validation existe dans une cellule ?
auteur : SilkyRoad
La vérification est effectuée sur la feuille active:

Vba

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

precedent    sommaire    suivant   

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.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com