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 ?