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