Domaines
RH
Juridique
Compta
Administratif/Moyens Généraux
Communication
Bureautique
Conseils aux débutants
Word
Excel
PowerPoint
Outlook
Access
Publisher

PagePlus (PAO)

Windows/système
PhotoImpact
Conception web : les bases
Applications pas à pas
Tests logiciels
Macros VBA
Leçons
Macros Word
Astuces
Orthographe
Rédaction
Organisation
Produits/services malins
Outils
Ouvrages
Modèles
Macros
Liens
Anglais
Grammaire avec AnglaisFacile
Leçon gratuite avec AnglaisFacile
Carrière
Gestion de carrière
Fiches métier
Témoignages / vécu
Offres d'emploi

Evénements métier
Echos de presse, comptes-rendus

Echanger

Forums
Chater en direct

© Nadège Guilbert
Le contenu de ce site
est régulièrement déposé auprès de la SGDL
Reproduction interdite
sans le consentement
écrit de l'auteur



Imprimer la page

Macros / VBA > Index

04-Mai-2005

 

 

Préambule
Proposer du texte par défaut
Récupérer le nom de l'utilisateur
Récupérer la date système et la formater
Créer une liste déroulante
Définir l'ordre de remplissage de la boîte de dialogue

 

Télécharger fichier exemple

Suggérer des réponses à l'utilisateur

Créer une liste déroulante

Nous allons à présent créer une liste déroulante que nous allons placer sur notre Userform juste avant le nom de notre contact et qui contiendra les formules de civilité.

Le VBA dispose de deux contrôles de listes :

zone de liste modifiable

permet à l'utilisateur de saisir un texte non prévu dans la liste

zone de liste

limite le choix de l'utilisateur au contenu de la liste

Le choix de l'un ou l'autre de ces contrôles dépend donc de la liberté que vous souhaite accorder à l'utilisateur.
Le code lié à ces deux contrôles est identique et nous allons, dans notre excercice, utiliser la zone de liste modifiable.

Pour ce faire :

  • Activez la UserForm en cliquant sur l'icône

  • Cliquez sur l'icône zone de liste modifiable et dessinez sur votre Userform un contrôle que vous nommerez "salutation" (je vous rappelle que pour nommer un contrôle, il convient d'utiliser la propriété "Name").

  • Réduisez et déplacez si nécessaire la zone de texte "contact".

Notre zone de liste est créée... mais il reste à la remplir. Là encore, nous allons utiliser la procédure UserForm_Initialize().

Pour remplir une liste, rien de plus simple : il suffit d'indiquer son nom et y accoler la méthode .addItem et le texte à ajouter entre guillemet.

Notre code devient donc :

Private Sub UserForm_Initialize()
datel=format(Date,"dd/mm/yy")
signataire=application.username
salutation.AddItem "Monsieur"
salutation.AddItem "Madame"
salutation.AddItem "Mademoiselle"
salutation.AddItem "Messieurs"

ville = "Paris"
End Sub

Cliquez sur puis sur la touche F5 ou l'icône pour tester votre macro. Que constatez-vous ? Votre zone de liste apparaît bien à l'écran mais sans contenu par défaut. Pour visualiser ce contenu, il faut dérouler la liste.

Cliquez sur le bouton "Annuler" pour refermer la boîte de dialogue.

Nous allons à présent remédier à ce petit défaut grâce à l'instruction .ListIndex + n° d'ordre.

En informatique, on commence à numéroter les listes à partir de 0 (eh, oui, aussi étrange que cela paraisse, c'est comme ça !). "Monsieur" correspond donc au numéro (on parle d'index) "0", Madame à l'index 1 et ainsi de suite. Pour que la liste déroulante affiche par défaut "Monsieur", il faut donc modifier notre code comme suit :

Private Sub UserForm_Initialize()
datel=format(Date,"dd/mm/yy")
signataire=application.username
salutation.AddItem "Monsieur"
salutation.AddItem "Madame"
salutation.AddItem "Mademoiselle"
salutation.AddItem "Messieurs"
salutation.ListIndex =0
ville = "Paris"
End Sub

Haut

Niveau

Pré-requis :

  • Avoir suivi la leçon 3

UserForm_Initialize() :
placez dans cette procédure
tout le code
relatif au pré-remplissage
de votre UserForm

Application.UserName :
permet de récupérer la valeur de la zone "Nom" du menu "Outils", "Options", onglet "Utilisateur"

Date :
permet de récupérer la date du jour (date système)

Format(date,"d/mm/yy")
permet de formater la date système
d = jour
m = mois
y = année

nom_de_liste.AddItem "texte"
permet d'ajouter un élément à une liste

nom_de_liste.ListIndex X
où X est un nombre
Permet d'afficher par défaut un élément de la zone de liste


Voir l'animation - 351 ko