ScrollbarIndicateur

Retour vers Excel

Créer un indicateur de vitesse

But : obtenir un ersatz de tachymètre sous forme graphique. On devrait plutôt dire sous forme d'images car c'est bien avec des images que nous allons travailler. Les solutions sur feuille de travail et sur formulaire seront étudiées

Sur la feuille :
Nous installons les objets

  • Une image nommée Spectre.jpg qui reprend un dégradé de couleurs. Menu Insertion - Images - Insertion à partir d'un fichier.
  • Une forme que nous renommons "Fleche"...

    PS: On a aussi renommé l'image Spectre de cette manière
  • Enfin, un SpinButton. Nous changeons sa propriété MAX et la réglons sur 200

Nous n'avons plus qu'à définir le comportement de ces objets sur l'événement change du SpinButton avec le code suivant :

Private Sub SpinButton1_Change()
Dim forme As Object
For Each forme In ActiveSheet.Shapes
  If forme.Name = "Fleche" Thenforme.Left = 60 + SpinButton1.Value
    '60 est la position de départ de la flèche,
    ' elle se trouve à 60 Twips du bord gauche de la feuille
  End If
Next forme
End Sub

Avec le formulaire, c'est la même manière, excepté que j'ai utilisé une étiquette (contrôle label) donc la couleur du fond est noire en lieu et place de la flèche. L'image Spectre doit être placée dans un dossier sur le disque dur car le formulaire la recharge à chaque initialisation. J'ai également utilisé un contrôle label pour afficher la valeur atteinte par l'index et un bouton pour décharger le formulaire de la mémoire.
Le code pour faire fonctionner tout cela

Private Sub UserForm_Initialize()
   UserForm1.Image1.Picture = LoadPicture("c:\temp\spectre.jpg")
End Sub

Private Sub ScrollBar1_Change()
  Label2 = Round(ScrollBar1.Value / 2)
  Label1.Left = 18 + ScrollBar1.Value
End Sub

Private Sub CommandButton1_Click()
  Unload UserForm1
End Sub

Dans un module

Sub Bouton11_Clic()
  UserForm1.Show
End Sub

NB : Plutôt que d'utiliser des contrôles comme le SpinButton ou la ScrollBar, on peut aussi récupérer les valeurs dans les cellules et provoquer le déplacement des "index" sur l'événement Worksheet_Change. En effet, on pourrait très bien avoir une ligne de commande qui nous dirait Label1.Left = 18 + Range("C5") à condition que C5 contienne un chiffre compris entre 0 et 200. Si cette échelle ne convenait pas, à vous de trouver une formule mathématique qui convienne à votre spectre (quel beau mot !) de données

Cliquez ici pour télécharger le fichier exemple ScrollbarsIndicateur

FIN