Comment ajouter une liste de choix dans Excel par VBA

Transcription

Comment ajouter une liste de choix dans Excel par VBA
Comment ajouter une liste de choix dans Excel par VBA ?
Par : Abdel YEZZA, Ph.D.
1
Comment ajouter une liste de choix dans Excel
par VBA ?
Par : Abdel YEZZA, Ph.D.
Date : avril 2012
Classeur Exemple :
Feuille Microsoft
Excel 97-2003
(Fonctionne sous MS Excel 2007/2010)
1. Introduction
Microsoft Excel offre la possibilité d’associer une liste de choix et de validation des valeurs à des cellules. Néanmoins,
cette fonctionnalité souffre des inconvénients suivants :
1. La liste de validation est plutôt statique.
2. La liste n’offre aucune flexibilité ou contrôle supplémentaire.
3. Les éléments de la liste s’affichent sous format texte brut même si la source de la liste est formatée autrement.
Afin de remédier à ces inconvénients, une alternative consiste à utiliser à la place d’une liste de validation intégrée dans
Excel un objet de type ComboBox et un peu de code VBA pour le contrôle. Il s’agit précisément du sujet principal de cet
article qui s’adresse à un lecteur maîtrisant les fonctionnalités de base de Excel et les fondements du VBA.
L’utilisation concrète de cet article est multiple. Il peut être utilisé dans des documents purement technique et
notamment dans des documents de Reporting technique ou manageriel avec des indicateurs prédéfinis par l’entreprise.
Il appartient au lecteur d’effectuer les bons choix afin que l’exemple fourni puisse être adapté au contexte.
Comment ajouter une liste de choix dans Excel par VBA ?
Par : Abdel YEZZA, Ph.D.
2
2. Etapes à suivre
Etape 1 : Désigner la colonne (et optionnellement la plage) à contrôler
Les cellules de la colonne A dont l’entête est Numéro sont à valider et contrôler. A cette fin, fixer la police de l’ensemble
des cellules de la colonne à l’exception de la 1ère cellule à Wingdings. C’est cette police qui sera utilisée conjointement
entre les cellules de cette colonne et le contrôle (ComboBox) spécifié à l’étape suivante.
Etape 2 : Ajouter un objet de type ComboBox
Dans le ruban Développeur, barre d’outil Contrôles (ActiveX) insérer un objet de type ComboBox et le nommer
ComboBox1. Ci-dessous, une illustration de la colonne A et des propriétés de l’objet. Les principales propriétés de cet
objet sont :
1. L’objet possède une source de données la plage nommée : Numero (=Lists!A2:A12), voir propriété ListFillRange
qui peut être ajustée selon les besoins (règle l’inconvénient 1 ci-dessus)
2. Un code VBA (voir étape 3 ci-dessous) doit être ajouté afin de disposer d’un contrôle de position et de valeurs
(règle l’inconvénient 2 ci-dessus)
3. Les cellules à valider et le contrôle doivent avoir la même police en l’occurrence : Wingdings afin que l’affichage
soit le même (règle l’inconvénient 3 ci-dessus) lors de l’affichage de la liste et d’attribution de la valeur
sélectionnée.
Entête de la
colonne à contrôler
Contrôle de
type ComboBox
Comment ajouter une liste de choix dans Excel par VBA ?
Par : Abdel YEZZA, Ph.D.
3
Etape 3 : Ajouter un peu de code VBA pour le contrôle
Afin de contrôler la position de l’objet lors du changement de cellule ou de plage et de l’attribution de la valeur
sélectionnée, le code VBA suivant a été ajouté :
Public CurTarget1 As Range
Private Sub ComboBox1_Change()
If Not CurTarget1 Is Nothing Then
Cells(CurTarget1.Row, CurTarget1.Column) = ComboBox1.Text
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count = 1 And Target.Column = 1 And Target.Row > 1 Then
ComboBox1.Left = Target.Left
ComboBox1.Top = Target.Top
ComboBox1.Width = Target.Width
ComboBox1.Visible = True
Set CurTarget1 = Target
ComboBox1.Text = CurTarget1.Text
Else
Set CurTarget1 = Nothing
ComboBox1.Visible = False
End If
End Sub
Une 2ème liste de choix avec une mise en forme conditionnelle en bonus
En guise de complément, une deuxième liste de choix a été ajoutée à la colonne B dans le même exemple précédent.
Cette dernière indique 4 types d’indicateurs avec un code couleur comme suit :
Indicateur graphique




Le code VBA inclus dans le fichier accompagnant cet article comprend aussi le 2ème contrôle ComboBox ComboBox2
utilisé pour cette colonne. Je vous laisse le soin de consulter le fichier et le code VBA complet pour comprendre le
principe. La deuxième liste de choix offre non seulement la sélection de l’indicateur approprié, mais aussi la couleur
associée de l’indicateur en fonction de la mise en forme conditionnelle, d’où son importance.
Défi
Comment ajouter une liste de choix dans Excel ayant des images comme éléments ?

Documents pareils