ComptaNat.fr
 
  Le site de la comptabilité nationale  
 
 
 

Visual Basic pour Excel : contrôles et formulaires

Formulaires et contrôles ActiveX

Pour dialoguer de manière plus approfondie avec l'utilisateur, Visual Basic utilise des formulaires et des contrôles. Les formulaires contiennent des contrôles qui permettent d'échanger des données avec Excel et de lancer des programmes. Ils sont particulièrement utiles dans un environnement partagé lorsque les utilisateurs ne sont pas des spécialistes.

Il existe deux types de contrôles : les contrôles de formulaire et les contrôles ActiveX. Nous présenterons ici uniquement les contrôles ActiveX car ce sont les plus récents et les plus performants. Les contrôles ActiveX peuvent être créés dans une feuille ou dans un formulaire, nous étudierons rapidement les contrôles inclus dans une feuille et nous consacrerons l'essentiel de l'exposé à la présentation des contrôles ActiveX contenus dans un formulaire.

Les contrôles inclus dans une feuille

Pour utiliser un contrôle ActiveX dans une feuille, il faut aller dans le menu Développeur et sélectionner Insérer. Douze contrôles ActiveX sont alors proposés. Nous nous contenterons de présenter les plus courants.

Le bouton de commande

Le premier contrôle ActiveX proposé est le bouton de commande, c'est aussi le plus simple car il se contente d'exécuter un programme lorsqu'on clique dessus. Quand on le sélectionne, une petite croix apparaît sur la feuille de calcul, elle permet de dessiner le bouton de commande à l'endroit de son choix en maintenant enfoncé le bouton gauche de la souris.

Il se présente, par exemple, sous la forme suivante :

Il est ensuite possible de le modifier si le Mode création est activé dans le menu Développeur. En cliquant sur le bouton de commande avec le bouton droit de la souris, on fait apparaître différentes possibilités.

Si l'on sélectionne Objet Bouton de Commande puis Edition, on peut modifier son titre. Par exemple, on peut remplacer CommandButton1 par Bonjour.

Si l'on sélectionne Propriétés on voit apparaître la liste des propriétés du bouton de commande. On voit que son nom est toujours CommandButton1 et que le texte "Bonjour" correspond à Caption. Toutes les propriétés peuvent être changées directement dans la boîte de dialogue ou par un programme. Par exemple, le programme suivant remplace le texte "Bonjour" par "Bonjour Laure".

Sub Bouton()
ThisWorkbook.Sheets(1).CommandButton1.Caption = "Bonjour Laure"
End Sub

On peut également modifier plusieurs propriétés à la fois, par exemple avec le programme suivant :

Sub Bouton()
With ThisWorkbook.Sheets(1).CommandButton1
     .Caption = "Bonjour Laure"
     .BackColor = &HFFFF&
     .Font.Name = "Arial"
     .Font.Bold = True
     .Font.Size = 16
     .ForeColor = &HFF&
End With
End Sub

Le bouton suivant apparaît :

Mais un bouton de commande n'a d'intérêt que parce qu'il permet de lancer un programme. Pour créer le programme, il faut d'abord activer le Mode Création du menu Développeur puis cliquer avec le bouton droit de la souris sur le bouton de commande. Si l'on sélectionne Visualiser le code, le programme suivant apparaît :

Private Sub CommandButton1_Click()
 
End Sub

La terminaison _Click indique que le programme sera lancé en cliquant sur le bouton.

On peut alors écrire son programme, par exemple :

Private Sub CommandButton1_Click()
MsgBox "Bonjour Laure"
End Sub

Pour exécuter ce programme, il faut d'abord désélectionner le mode création puis cliquer sur le bouton de commande. Le message "Bonjour Laure" apparaît alors.

La zone de liste (ListBox)

Un autre contrôle ActiveX important proposé par le menu Excel est la zone de liste. Elle permet de sélectionner dans une liste une valeur qui sera communiquée au programme. La sélection d'une valeur lancera également le programme associé à la zone de liste.

La zone de liste se crée de la même manière que le bouton de commande. Il faut ensuite lui associer au minimum une liste dans laquelle on pourra sélectionner un élément. On peut le faire par la boîte Propriétés ou par un programme. Par exemple, le programme suivant d'un module attribue la liste "A1:A4" à la zone de liste ListBox1 :

Sub Liste()
Set f = ThisWorkbook.Sheets(1)
f.ListBox1.ListFillRange = "A1:A4"
End Sub

On obtient :

On peut également créer une cellule liée qui affichera l'élément de la liste sélectionné. Il est également possible de faire apparaître le numéro dans la liste de l'élément sélectionné, le premier élément correspondant à zéro. Cela peut être fait avec le programme suivant :

Sub Liste()
Set f = ThisWorkbook.Sheets(1)
With f.ListBox1
  ,   .ListFillRange = "A1:A4"
  ,   .LinkedCell = "D1"
End With
f.Range("D3") = f.ListBox1.ListIndex
End Sub

Si l'on sélectionne Sardine dans la liste proposée, on obtient :

Notons que le numéro affiché dans la cellule D3 est 1 et non 2 car la numérotation de la liste commence à zéro.

On peut sélectionner un élément de la liste par le programme grâce à la propriété ListIndex. Par exemple :

f.ListBox1.ListIndex=2

sélectionne Pigeon.

Mais une zone de liste serait de peu d'intérêt si elle ne permettait pas de lancer un programme. Pour créer le programme, il faut d'abord activer le Mode Création du menu Développeur puis cliquer avec le bouton droit de la souris sur la zone de liste déroulante. Si l'on sélectionne Visualiser le code, le programme suivant apparaît :

Private Sub ListBox1_Click()

End Sub

La terminaison _Click signifie que le programme s'exécute lorsque l'on clique sur sélection.

On peut alors écrire un programme, par exemple :

Private Sub ListboBox1_Change()
Dim Reponse As Integer
Set f = ThisWorkbook.Sheets(1)
Reponse = f.ListBox1.ListIndex
If Reponse = 0 Then MsgBox "Le lapin est un mammifère"
If Reponse = 1 Then MsgBox "La sardine est un poisson"
If Reponse = 2 Then MsgBox "Le pigeon est un oiseau"
If Reponse = 3 Then MsgBox "La pomme est un fruit"
End Sub

Pour exécuter ce programme, il faut d'abord désélectionner le mode création puis sélectionner un élément dans la liste déroulante. Si l'on sélectionne le pigeon, le message "Le pigeon est un oiseau" apparaît alors.

Notons que si l'on sélectionne un élément de la liste, le programme est exécuté automatiquement. Par exemple, si l'on exécute le programme suivant qui modifie un élément de la liste, le programme associé à la liste déroulante s'exécute.

Sub Liste()
Set f = ThisWorkbook.Sheets(1)
f.Range("A4") = "Poire"
End Sub

Le message "Le pigeon est un oiseau" s'affiche alors.

Si l'on veut modifier les éléments de la liste déroulante sans relancer le programme associé, on peut supprimer la liste déroulante avant d'effectuer les modifications puis la rétablir ensuite. Par exemple, le programme suivant remplace "Pomme" par "Poire" sans relancer le programme associé à la liste déroulante.

Sub Liste()
Set f = ThisWorkbook.Sheets(1)
f.ListBox1.ListFillRange = ""
f.Range("A4") = "Poire"
f.ListBox1.ListFillRange = "A1:A4"
End Sub

La case à cocher

La case à cocher est le troisième contrôle ActiveX proposé par le menu d'Excel. Elle renvoie la valeur True si elle est cochée et False sinon. Pour la créer, il faut procéder comme pour les précédents contrôles. On peut la personnaliser par un programme. Par exemple :

Sub CaseAcocher()
With ThisWorkbook.Sheets(1).CheckBox1
     .Caption = "Vous avez été satisfait"
     .Font.Name = "Arial"
     .Font.Bold = True
     .Font.Size = 12
End With
End Sub

La case à cocher apparaîtra alors ainsi :

On peut également lui associer un programme, par exemple :

Private Sub CheckBox1_Click()
Set f = ThisWorkbook.Sheets(1)
If f.CheckBox1 Then MsgBox "J'en suis heureux !" Else MsgBox "J'en suis désolé !"
End Sub

Si l'on coche la case, le message "J'en suis heureux !" apparaît, si on la décoche, le message "J'en suis désolé !" apparaît.

Les autres contrôles ActiveX peuvent être traités de manière analogue.

Créer un formulaire

Pour créer un formulaire, il faut aller dans l'éditeur VBA et, dans le menu Insertion, sélectionner UserForm. L'écran suivant apparaît :

La taille du formulaire UserForm1 peut être ajustée manuellement ou par le menu Propriétés qui apparaît en cliquant avec le bouton droit sur le formulaire. La hauteur et la largeur peuvent être modifiés par les paramètres Height et Width. Il est également préférable de choisir au moins le nom (Name) et le titre du formulaire (Caption).

On peut également définir la couleur de fond (BackColor) et la position du formulaire dans la fenêtre Excel. Ainsi, Left désigne la distance exprimée en pixels du formulaire au côté gauche et Top sa distance au haut de la feuille.

Une fois le formulaire créé, il faut l'ouvrir. Pour cela, dans l'éditeur VBA, on peut se positionner sur le formulaire et cliquer sur l'icône Exécuter Sub. Bien entendu, en pratique, ce n'est pas la meilleure méthode, il faut pouvoir ouvrir le formulaire soit à partir d'un bouton de commande d'une feuille, soit d'une procédure automatique à l'ouverture du classeur. Dans les deux cas, on utilisera la méthode Show. Par exemple :

UserForm1.Show

Lorsqu'un formulaire est ouvert de cette manière, il bloque toute autre utilisation d'Excel tant qu'il n'est pas fermé. On dit qu'il est ouvert en mode Modal. Si l'on veut pouvoir continuer à utiliser une autre application Excel, il faut ouvrir le formulaire en mode Modeless. Pour comprendre la différence, nous pouvons comparer les deux programmes suivants :

Sub formulaire1()
UserForm1.Show
MsgBox "Bonjour"
End Sub

Sub formulaire2()
UserForm1.Show vbModeless
MsgBox "Bonjour"
End Sub

Dans le premier programme, le formulaire s'affiche seulement et toute utilisation d'Excel est bloquée, le message ne s'affiche qu'après fermeture du formulaire. Dans le second programme, le message s'affiche en même temps que le formulaire et il est possible d'utiliser Excel.

Pour fermer le formulaire on peut utiliser soit la méthode Hide qui le cache, soit la méthode Unload qui le décharge totalement et l'efface de la mémoire. Par exemple :

UserForm1.Hide
ou :
Unload UserForm1

Ajuster la taille du formulaire

Il est facile d'ajuster manuellement la taille d'un formulaire à celle de l'écran lorsque l'on travaille sur son propre ordinateur mais c'est plus difficile si d'autres utilisateurs vont devoir l'utiliser avec des écrans de taille et de définitions différentes. Le plus simple pour cela est définir la hauteur et la largeur par rapport à celles de la fenêtre ActiveWindow qui est la fenêtre assignée à Excel. Par exemple, si l'on veut que la fenêtre occupe tout l'espace de la fenêtre Excel on écrira :

UserForm1.Width=ActiveWindow.Width
UserForm1.Height=ActiveWindow.Height

Cependant, modifier la taille du formulaire ne change pas celle des éléments qu'il contient. Pour cela, on utilisera la propriété Zoom qui permet d'agrandir ou de rétrécir tous les éléments contenus dans le formulaire, le zoom initial étant égal à 100. Il est souvent préférable de modifier du même coefficient la taille du formulaire et le zoom. C'est ce que montre le programme suivant qui augmente de 20% les dimensions du formulaire et de ses éléments :

Sub Agrandir()
c = 1.2
LargIni = UserForm1.Width
HautIni = UserForm1.Height
UserForm1.Width = LargIni * c
UserForm1.Height = HautIni * c
UserForm1.Zoom = c * 100
UserForm1.Show
End Sub

Voici un programme qui fixe les dimensions du formulaire à 90% de la fenêtre Excel, le zoom étant calculé à partir de la largeur :

Sub Ajuster()
c = ActiveWindow.Width / UserForm1.Width
UserForm1.Zoom = c * 90
UserForm1.Width = ActiveWindow.Width * 0.9
UserForm1.Height = ActiveWindow.Height * 0.9
UserForm1.Show
End Sub


Les zones de liste dans un formulaire

Il faut d'abord ouvrir un formulaire. Pour cela, il faut aller dans l'éditeur VBA et, dans le menu Insertion sélectionner UserForm. L'écran suivant apparaît :

On peut insérer une zone de liste dans le formulaire grâce à la boîte à outils située habituellement sous le formulaire. La zone de liste correspond au cinquième icône de la première ligne de la boîte à outils. Par exemple, on définira la zone de liste ainsi :

Créer la liste

La zone de liste doit contenir une liste qu'il est possible de créer avec plusieurs méthodes, différentes de celles de la zone de liste attachée à une feuille. Nous devons tout d'abord distinguer le cas des zones de liste à une colonne de celui des zones de liste à plusieurs colonnes.

Zone de liste à une colonne

La première méthode pour définir une liste est d'utiliser la propriété RowSource de la fenêtre Propriétés. Elle définit la liste à partir d'une plage de cellules du classeur. En pratique, il est préférable de nommer la plage de cellules, surtout si le classeur comporte plusieurs feuilles.

Par exemple, si nous nommons Articles la plage A1:A4 utilisée précédemment, nous pouvons affecter cette plage à la propriété RowSource soit par la fenêtre Propriétés, soit par une instruction :

UserForm1.RowSource="Articles"

Remarquons que le nom de la plage doit impérativement être placé entre guillemets.

Une liste peut également être créée en utilisant la méthode AddItem suivie du nom de l'élément à ajouter ainsi que, éventuellement, d'un numéro désignant la position où insérer l'élément dans la liste. Si aucun numéro n'est indiqué l'élément ajouté vient se placer à la fin de la liste. Par exemple :

UserForm1.ListBox1.AddItem "Cerise"
UserForm1.ListBox1.AddItem "Poire"
UserForm1.ListBox1.AddItem "Pomme", 1

donne la liste Cerise, Pomme, Poire puisque la liste commençant au numéro zéro, le numéro 1 attribué à Pomme correspond à la deuxième position. Le numéro indiqué doit être inférieur au nombre d'éléments de la liste.

Enfin, la liste peut être définie par une matrice en utilisant la méthode List. Par exemple :

Dim li(2) As String
li(0) = "Cerise"
li(1) = "Pomme"
li(2) = "Poire"
UserForm1.ListBox1.List = li
UserForm1.Show

Ou encore :

Dim Fruits As Variant
Fruits = Array("Cerise", "Pomme", "Poire")
UserForm1.ListBox1.List = Fruits

Zone de liste à plusieurs colonnes

Pour créer une zone de liste à plusieurs colonnes, il faut tout d'abord fixer le nombre de colonnes grâce à la propriété ColumnCount. Cela pourra se faire dans la fenêtre Propriétés ou dans un programme, par exemple :

UserForm1.ListBox1.ColumnCount=2

Dans une zone de liste avec plusieurs colonnes la méthode AddItem crée une ligne et place l'élément indiqué au début de la ligne. Les autres éléments de la ligne doivent être ajoutés avec List(NumLigne, NumColonne ). Par exemple, si l'on ajoute une colonne comprenant le prix des fruits, la liste peut être créée par le programme suivant :

Sub colonnes()
Set lb = UserForm1.ListBox1
lb.ColumnCount = 2
lb.AddItem "Cerise"
lb.List(0, 1) = 5.4
lb.AddItem "Pomme"
lb.List(1, 1) = 4.3
lb.AddItem "Poire"
lb.List(2, 1) = 4.8
UserForm1.Show
End Sub

Si l'on veut ajouter de nouveaux éléments à la fin d'une liste dont on ne connaît pas le nombre d'éléments, on peut utiliser la propriété ListCount qui le renvoit. C'est que fait le programme suivant :

Sub colonnesCount()
Set lb = UserForm1.ListBox1
lb.ColumnCount = 2
lb.AddItem "Cerise"
lb.List(lb.ListCount - 1, 1) = 5.4
lb.AddItem "Pomme"
lb.List(lb.ListCount - 1, 1) = 4.3
lb.AddItem "Poire"
lb.List(lb.ListCount - 1, 1) = 4.8
UserForm1.Show
End Sub

Il faut déduire 1 de ListCount car la numérotation des lignes commence à zéro. On peut également créer la liste avec une matrice comprenant autant de dimensions que le nombre de colonnes grâce à la propriété List.

Initialiser les contrôles

Il est souvent intéressant d'initialiser les contrôles de telle sorte qu'ils apparaissent automatiquement avec certaines propriétés à leur ouverture. Pour cela, on utilisera la feuille de codes associée au formulaire. Pour y accéder, on peut cliquer sur le bouton droit sur le formulaire et sélectionner Code. La procédure suivante apparaît :

Private Sub UserForm_Click()
 
End Sub

Cette procédure s'exécute lorsque l'on clique sur le formulaire. Ce n'est généralement pas très intéressant. Dans le coin supérieur droit de la feuille de codes, un menu permet de sélectionner différentes options dont Initialize. Si on la sélectionne, on voit apparaître la procédure suivante :

Private Sub UserForm_Initialize()
 
End Sub

Les instructions incluses dans cette procédure seront exécutées à l'ouverture du formulaire. Par exemple, il est possible de créer une liste pour une zone de liste comme nous l'avons fait précédemment. Cependant, cette procédure d'initialisation ne s'exécute qu'à l'ouverture du formulaire et non lorsqu'on affiche le formulaire après l'avoir caché. La procédure Private Sub UserForm_Activate() s'exécutera quant à elle chaque fois que le formulaire s'affichera. Pour le comprendre, considérons la procédure suivante placée dans un module :

Public texte
Sub Initialiser()
texte = "Banane;Orange;Ananas"
UserForm1.Show vbModeless
UserForm1.Hide
texte = "Pommes;Cerises;Poires"
UserForm1.Show
End Sub

Supposons également que nous ayons dans la feuille de codes associée au formulaire la procédure suivante ;

Private Sub UserForm_Initialize() ListBox1.List = Split(texte, ";")
End Sub

Si nous exécutons la procédure Initialiser nous voyons apparaître dans la liste : Banane, Orange, Ananas.

Notons que nous avons utilisé la fonction Split pour transformer le texte en matrice, notons également que la variable texte doit être déclarée en Public dans le module pour pouvoir être utilisée par le formulaire.

Ajoutons maintenant dans la feuille de codes associée au formulaire la procédure suivante :

Private Sub UserForm_Activate()
ListBox1.List = Split(texte, ";")
End Sub

Si nous exécutons la procédure Initialiser nous voyons maintenant apparaître la liste : Pommes, Cerises, Poires.

En effet, dans le premier cas, la procédure d'initialisation ne s'est exécutée que lors de la première ouverture alors que, dans le second, la procédure d'activation a permis le changement de liste.

Lire la zone de liste

Une zone de liste serait de peu d'intérêt si la sélection de l'un de ses éléments ne générait pas une série d'actions. Pour cela, il est possible d'écrire dans la feuille de codes associée au formulaire des procédures qui vont s'exécuter avec la sélection d'un élément de la liste.

Pour récupérer l'élément sélectionné d'une zone de liste à une seule colonne, il suffit d'utiliser la propriété Value. Par exemple :

Private Sub ListBox1_Click()
element = ListBox1.Value
MsgBox element
End Sub

En cliquant sur un élément de la zone de liste, on fait apparaître le message avec cet élément.

Dans le cas d'une zone de liste à plusieurs colonnes, Value ne renvoie que le premier élément de la ligne. Pour récupérer l'ensemble des éléments, il faut utiliser les propriétés ListIndex et List(numLigne, numColonne). La propriété ListIndex donne le numéro de la ligne sélectionnée (la première étant à zéro), ce qui permet de récupérer l'ensemble des éléments avec List. Par exemple :

Private Sub ListBox1_Click()
Li = ListBox1.ListIndex
MsgBox "Le prix de " & ListBox1.List(Li, 0) & " est " & ListBox1.List(Li, 1) & " euros"
End Sub

Trier les éléments d'une liste

Une zone de liste est beaucoup plus facile à utiliser si ses éléments sont triés. Voici donc un programme de tri dans l'ordre croissant :

Sub trier()
Dim a(3)
a(0) = "Truite"
a(1) = "Poule"
a(2) = "Pigeon"
a(3) = "Lapin"
For i = 0 To 3
    For j = i + 1 To 3
       If a(i) > a(j) Then ' Cas où l'une des valeurs n'est pas dans le bon ordre
          temp = a(j) ' On met la petite valeur dans temp
          a(j) = a(i) ' On remplace la petite valeur par la plus grande
          a(i) = temp ' On remplace la grande valeur par la petite
       End If
    Next j
Next i
For i = 1 To 4
    ThisWorkbook.Sheets(1).Cells(i, 1) = a(i - 1)
Next i
End Sub

On obtient : Lapin, Pigeon, Poule, Truite

Si l'on veut trier une liste à deux colonnes par ordre croissant sur la première colonne, on peut prendre le programme suivant :

Sub trier2()
Dim a(3, 1)
a(0, 0) = "Truite"
a(0, 1) = 10
a(1, 0) = "Poule"
a(1, 1) = 12
a(2, 0) = "Pigeon"
a(2, 1) = 8
a(3, 0) = "Lapin"
a(3, 1) = 15
For i = 0 To 3
    For j = i + 1 To 3
       If a(i, 0) > a(j, 0) Then
          temp = a(j, 0)
          temp1 = a(j, 1)
          a(j, 0) = a(i, 0)
          a(j, 1) = a(i, 1)
          a(i, 0) = temp
          a(i, 1) = temp1
       End If
    Next j
Next i
For i = 1 To 4
    ThisWorkbook.Sheets(1).Cells(i, 1) = a(i - 1, 0)
    ThisWorkbook.Sheets(1).Cells(i, 2) = a(i - 1, 1)
Next i
End Sub

On obtient les deux colonnes triées par ordre croissant sur la première colonne.

Zones de texte et zones de liste modifiable

Zones de texte (TextBox)

Les zones de texte permettent d'entrer des données qui seront exploitées par des procédures. La donnée entrée peut être récupérée par les propriétés Text ou Value.

Zones de liste modifiable (ComboBox)

Une zone de liste modifiable combine une zone de texte et une zone de liste. La donnée peut être soit sélectionnée dans la zone de liste, soit entrée directement dans la zone de texte lorsqu'elle ne figure pas dans la liste.

La liste peut être créée de la même manière qu'avec une zone de liste. Par exemple :

UserForm1.ComboBox1.List = Split("Pomme;Poire;Cerise", ";")

Ce qui donne :


La liste ne s'affiche que lorsque l'on clique sur la zone de texte. Pour lire la donnée entrée ou sélectionnée, il faut utiliser la propriété Value.

Comme celle d'une zone de liste, la liste d'une zone de liste modifiable peut avoir plusieurs colonnes mais elle ne renvoie qu'une valeur. Par défaut, c'est la valeur de la première colonne mais il est possible de choisir celle d'une autre colonne avec la propriété BoundColumn.

Les boutons d'option (OptionButton)

Les boutons d'option permettent de choisir une option parmi plusieurs possibles. Ils sont le plus souvent utilisés en groupe, par exemple pour déterminer le fruit préféré :

Un seul bouton d'option peut être sélectionné, le fait d'en sélectionner un désélectionne les autres. Si l'on veut pouvoir choisir plusieurs options, il faut utiliser les cases à cocher présentées précédemment.

Il est possible de créer des blocs indépendants de boutons d'option en les plaçant dans des cadres. Par exemple :

Le texte d'un bouton d'option est défini par la propriété Caption et sa valeur par la propriété Value qui peut être True ou False. True peut être remplacé par -1 et False par 0.

Les contrôles multipage

Un contrôle multipage permet d'afficher un grand nombre d'informations et de contrôles dans un même formulaire en les répartissant dans plusieurs pages accessibles par des onglets. Par exemple, si le formulaire correspond à un questionnaire auprès des entreprises, une première page peut correspondre à des informations générales, une deuxième au bilan, une troisième au compte de résultat et une quatrième aux effectifs.

Un contrôle multipage est inclus dans un formulaire mais il est, lui aussi, un conteneur, c'est-à-dire qu'il est destiné à contenir des informations et des contrôles. Il se définit tout d'abord par ses pages. Dans l'éditeur VBA, il se présente à l'origine avec deux onglets permettant d'accéder à deux pages comme présenté ci-dessous :

Il est possible d'ajouter des pages en cliquant avec le bouton droit sur un onglet. Le nom des pages peut être modifié par la propriété Caption. Par exemple :

Private Sub UserForm_Initialize()
MultiPage1.Page1.Caption = "Première page"
MultiPage1.Page2.Caption = "Deuxième page"
End Sub

La méthode normale pour accéder à une page est d'utiliser les onglets mais il est également possible de le faire par un code, par exemple :

Private Sub CommandButton1_Click()
MultiPage1.Value = 1
End Sub

Le style des onglets peut être changé dans la fenêtre Propriétés à condition de sélectionner Multipage dans le menu déroulant situé en haut de la fenêtre. La propriété Style propose trois options :

0-fmTabStyleTabs qui est l'option par défaut ;
1-fmTabStyleButtons qui remplace les onglets par des boutons ;
2-fmTabStyleNone qui n'affiche ni onglets ni boutons.

Comme il n'est pas possible de modifier la présentation des onglets et des boutons, il est parfois préférable de choisir la dernière option et d'utiliser des boutons de commande avec la procédure présentée ci-dessus pour passer d'une page à l'autre.




Auteur : Francis Malherbe

 




 








Informatique
Comptabilité nationale
Économie
Comptabilité privée
 

  • Ce site n'utilise pas de cookies, ne collecte aucune information sur ses visiteurs et ne comprend pas de publicité