Première fois que j'essaie, tout seul, d'utiliser le VBA.
J'ai créé, via la barre d'outil "contrôle formulaire" des cases d'option.
Suivant ce qui est coché (une seule coche possible), ca me renvoie les valeurs de chaque case (3 au total) dans des cellules fixes.
j'aurai aimé ajouté, via VBA, un commentaire directement sur cette case d'option.
En passant par un commentaire de cellule, ce dernier est caché par la case, et donc ne s'affiche pas.
j'ai essayé de developper qqchose mais j'ai un message d'erreur :
"Erreur d'exécution '424' : Objet requis"
et voici le code que j'ai essayé de mettre en place (piqué sur un autre fichier trouvé sur la toile) :
Code:
Private Sub OptionButton1_Click()
OptionButton1.Font.Size = 16
End Sub
Private Sub OptionButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Label.Visible = False Then Label1.Visible = True
End Sub
Private Sub Label2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Label.Visible = False
End Sub
Si l'un d'entre vous avait les compétences pour corriger mon code et/ou, si ce n'est pas faisable, me proposer une autre solution ?
la solution est convenable.
je vais attendre le retour de plus de personnes pour voir si qqun peut répondre de manière précise à mon besoin.
Le cas échéant j'utiliserai votre solution.
pour l'OptionButton ActiveX une solution possible:
Code:
Private Sub OptionButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If (X > 5 And X < OptionButton1.Width - 5) And (Y > 5 And Y < OptionButton1.Height - 5) Then
Label1.Visible = True
Else
Label1.Visible = False
End If
End Sub
où Label1 est un Label(étiquette) ActiveX dont la propriété Visible est mise à False
plutot qu'un label on pourrait mettre sur le même principe, par exemple, une forme automatique.
j'ai essayé de mettre en place ta solution Paf, mais j'ai une erreur d'execution '424' :
Private Sub OptionButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If (X > 5 And X < OptionButton1.Width - 5) And (Y > 5 And Y < OptionButton1.Height - 5) Then
Label1.Visible = True
Else Label1.Visible = False
End If
End Sub
Et en paramétrant par défaut mon contrôle avec visible "Fasle", ce dernier disparait quand je quitte le mode création !
Je crois que je n'ai pas bien implémenté ta solution. Mais c'est evidemment une piste : afficher un commentaire de cellule à travers le contrôle activX.
une autre solution qui à l'avantage de faire apparaître un message qu'on peut facilement personnaliser au point de vue présentation, nombre de lignes, choix des caractères ( fonte, taille, couleur, .......... )
parfait ces 2 dernières solutions !
Si tu me dis que la dernière solution est plus flexible, je suis preneur : comment modifier le texte ? La forme de la zone de texte ?
- positionner la souris sur l'OptionButton pour faire apparaître le message
- glisser (très rapidement) la souris en dehors de l'OptionButton, le message devrait rester visible sur la feuille
- .............. il ne reste plus qu'à cliquer sur la forme qui contient le message et ensuite le modifier
comment modifier le texte ? La forme de la zone de texte ?
il vaut mieux supprimer la forme et la remplacer par une autre (ATTENTION, le nom de la nouvelle forme venant d'être créée doit apparaître dans la macro)
je me permets de revenir sur ce sujet :
après avoir mis en place mes 3 boutons et zones de texte, je remarque des lenteurs quand je veux afficher les bulles. Si je passe trop vite d'un bouton à un autre, les bulles ne disparaissent pas et s'empilent.
Est-ce que vous pensez que le code est améliorable pour palier ce problème ?
En revenant à votre premiere solution (case à cocher jaune), peut on optimiser la solution en ne pouvant cocher qu'une seule case à la fois et en ayant des coches rondes plutôt que le "☑" ?
ps : ci joint mon fichier. Si vous faites la navette entre les différents boutons, vous verrez de quoi il en retourne.
c'est normal, car les procédures employées réagissent comme si on avait tracé un rectangle virtuel centré sur l'OptionButton
lors du passage de la souris sur ce rectangle la procédure affiche la forme (message à faire passer)
lors de la sortie de la souris à l'extérieur de ce rectangle (central et virtuel) la procédure de masquage du message se déclenche mais le problème c'est que cette zone est très étroite (5 pixels) et si la sortie de la souris se fait trop rapidement, le message reste affiché
Est-ce que vous pensez que le code est améliorable pour palier ce problème ?
le code, NON
mais peut-être en agrandissant l'OptionButton et en redéfinissant la zone qui déclenchera telle ou telle procédure (affichage / masquage )
En revenant à votre premiere solution (case à cocher jaune), peut on optimiser la solution en ne pouvant cocher qu'une seule case à la fois et en ayant des coches rondes plutôt que le "☑" ?
je reviens à la charge avec une nouvelle demande :
il faudrait que quand je coche disons la dernière coche à droite, que cela me masque les lignes 12 à 21.
Quand je coche une autre case (une des 2 premieres) il faudrait que les lignes réapparaissent.
n'étant pas expert en VBA, je n'arrive pas à implanter le code donné par l'enregistreuse de macro.
Pourriez vous m'aider à trouver une solution ?
Merci d'avance
PS : le fichier sera protégé et comme cela affecte la structure je ne sais pas si je peux avoir un blocage à ce niveau là, mais ce n'est pas le plus important.