Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[Résolu] VBA bulle sur option.button contrôle activX

Spinzi

XLDnaute Impliqué
Bonjour à toutes et à tous

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 ?

vous trouverez mon fichier ci-joint.

Merci d'avance =)
 

Pièces jointes

  • InfoBulle controle activX.xlsm
    30.1 KB · Affichages: 36

Spinzi

XLDnaute Impliqué
Re : VBA bulle sur option.button contrôle activX

Après revue de ta solution, je n'ai plus les numéros qui apparaissent en A1 et B1 comme dans le fichier originel ! (je les ai mise en blanc sur fond blanc il me semble mais j'en ai besoin).

Merci d'avance
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA bulle sur option.button contrôle activX

Re,
Après revue de ta solution, je n'ai plus les numéros qui apparaissent en A1 et B1 comme dans le fichier originel ! (je les ai mise en blanc sur fond blanc il me semble mais j'en ai besoin).

Merci d'avance
........... ne sachant pas si A1 était encore utile, j'ai ôté les parties de code qui alimentaient cette cellule

un petit effort, tu vas réussir à rétablir cela

à+
Philippe
 

Spinzi

XLDnaute Impliqué
Re : VBA bulle sur option.button contrôle activX

Re,

j'ai essayé sur mon fichier, mais malgré tes pistes j'ai toujours des erreurs.

Dans le fichier joint, je souhaite que lorsque "Ligne à créer" est renseigné, alors les lignes 24 à 33 disparaissent. De même lorsque le type de modification renseigné est "Ouverture" (pas implémenté dans mon essai car bug déjà pour ligne à créer)

:s

Merci de ton retour !
 

Pièces jointes

  • Procédure Modification budgétaire Exemple à suivre test.xlsm
    33.7 KB · Affichages: 26

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA bulle sur option.button contrôle activX

Re,

déjà penser à remettre les Protect et UnProtect aux bons endroits

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("D7")) Is Nothing And Target.Count = 1 Then
    ActiveSheet.Unprotect Password:="toto"
    Target = "¤"
    [F7] = "¡": [H7] = "¡": [A1] = 1
    ActiveSheet.Protect Password:="toto"
End If
If Not Intersect(Target, Range("F7")) Is Nothing And Target.Count = 1 Then
    ActiveSheet.Unprotect Password:="toto"
    Target = "¤"
    [D7] = "¡": [H7] = "¡": [A1] = 2
    ActiveSheet.Protect Password:="toto"
End If
If Not Intersect(Target, Range("H7")) Is Nothing And Target.Count = 1 Then
    ActiveSheet.Unprotect Password:="toto"
    Target = "¤"
    [F7] = "¡": [D7] = "¡": [A1] = 3
    ActiveSheet.Protect Password:="toto"
End If
If Not Intersect(Target, Range("D9")) Is Nothing And Target.Count = 1 Then
    ActiveSheet.Unprotect Password:="toto"
    Target = "¤"
    [F9] = "¡": [B1] = 1
    Rows("24:33").EntireRow.Hidden = True
    ActiveSheet.Protect Password:="toto"
End If
If Not Intersect(Target, Range("F9")) Is Nothing And Target.Count = 1 Then
    ActiveSheet.Unprotect Password:="toto"
    Target = "¤"
    [D9] = "¡": [B1] = 2
    Rows("24:33").EntireRow.Hidden = True
    ActiveSheet.Protect Password:="toto"
End If
End Sub

à+
Philippe

Edit: je serai absent du forum pendant quelques jours, Papy s'occupe de ses petiots
 
Dernière édition:

Spinzi

XLDnaute Impliqué
Re : VBA bulle sur option.button contrôle activX

J'ai juste eu à modifier les valeurs pour cacher les ligne ou non (True/False)

Merci beaucoup pour toutes ces explications ! Mais le VBA n'est vraiment pas pour moi ^^
 

Spinzi

XLDnaute Impliqué
Re : VBA bulle sur option.button contrôle activX

Bonjour Philippe !

Je me suis un petit peu lancé dans le VBA ... mais du coup mon fichier est lent.

je voulais savoir si vous pouviez m'aider à remodéliser mon code de manière à ce qu'il soit plus rapide ?

Pour mieux comprendre : normalement j'ai une base Power Query qui vient mettre à jour automatiquement un onglet "Base" dans le fichier. D'après cette base, dans l'onglet "liste de validations", je me fais mes petits TCD pour alimenter des listes de validations et les mettre à jour automatiquement.
Ici j'ai du faire intervenir VBA car la coche "mise à jour à l'ouverture du fichier" dans les parametres du TCD ne fonctionnaient pas (peut être que les TCD se mettaient à jour alors que l'onglet sur lequel ils - les TCDs - se basaient n'était pas encore à jour => du coup pas de modification) de fait j'ai demandé à Excel de m'actualiser les TCD à chaque fois qu'on changeait de cellule.
C'est lourd mais ça fonctionne. Si il y a un code qui peut prioriser les mise à jour (d'abord mettre à jour Power Query et ensuite seulement les TCD).

Ensuite, suivant les différentes cases cochées, il faut faire apparaitre soit les lignes 25 à 32 quand on coche "Ligne existante" et 33 à 35 lorsque l'on coche "Ligne à créer".
La coche "Ouverture" doit cacher les lignes 9 à 10 et par défaut faire comme si la "Ligne Existante" était cochée.

Pour me simplifier la tache, j'ai essayé de remettre les parametres à 0 (Ligne à modifier) à chaque fois qu'un nouveau paramètre dans "Type de modification" était coché, car ma macro s'emmêlait les pinceaux mais si vous pouvez modéliser un code qui ne remet pas 0 les paramètres (qui garde la saisie dans les coches) ce serait top !

je souhaite garder les chiffres dans les cellules A1 et B1 car je base mes formules et mise en page dessus.

Ci joint un fichier exemple qui j'espère sera plus explicite que mon discours =)

Si besoin d'information est, je reste évidemment pas loin pour y repondre le plus promptement possible car je sais que vous êtes très réactif et je vous remercie d'ailleurs pour votre temps passé sur mon problème (et plus généralement à aider les néophytes dans mon genre).
 

Pièces jointes

  • Optimisation code.xlsm
    33.2 KB · Affichages: 15

Spinzi

XLDnaute Impliqué
Re : VBA bulle sur option.button contrôle activX

Bonjour Bonjour,

je me suis dépatouillé comme un grand !
Effectivement mes TCD s'actualisaient mal car il n'attendaient pas que ma requete Power Query soit actualisée : j'ai décoché l'actualisation des données power query en arrière plan et maintenant mes TCD se mettent bien à jour à l'ouverture du fichier.

Du coup j'ai pu alléger mon code qui n'est plus lent.

j'ai rajouté un bout de code pour enlever le message d'erreur à l'actualisation des TCD (comme quoi il y a des données à droite ou en dessous) :
Code:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    Application.DisplayAlerts = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Not Intersect(Target, Range("D7")) Is Nothing And Target.Count = 1 Then
     Target = "¤"
     [F7] = "¡": [H7] = "¡": [A1] = 1
     Rows("9:9").EntireRow.Hidden = False
     Rows("25:32").EntireRow.Hidden = False
     Rows("33:36").EntireRow.Hidden = True
 End If
 If Not Intersect(Target, Range("F7")) Is Nothing And Target.Count = 1 Then
     Target = "¤"
     [D7] = "¡": [H7] = "¡": [A1] = 2
     Rows("9:9").EntireRow.Hidden = False
     Rows("25:32").EntireRow.Hidden = False
     Rows("33:36").EntireRow.Hidden = True
 End If
 If Not Intersect(Target, Range("H7")) Is Nothing And Target.Count = 1 Then
     Target = "¤"
     [F7] = "¡": [D7] = "¡": [A1] = 3: [D9] = "¤": [F9] = "¡": [B1] = 1
     Rows("9:9").EntireRow.Hidden = True
     Rows("25:32").EntireRow.Hidden = True
     Rows("33:36").EntireRow.Hidden = False
 End If
 If Not Intersect(Target, Range("D9")) Is Nothing And Target.Count = 1 Then
     Target = "¤"
     [F9] = "¡": [B1] = 1
 End If
 If Not Intersect(Target, Range("F9")) Is Nothing And Target.Count = 1 Then
     Target = "¤"
     [D9] = "¡": [B1] = 2
 End If
 If [F7] = "¤" And [D9] = "¤" Then
    Rows("25:32").EntireRow.Hidden = False
    Rows("33:36").EntireRow.Hidden = True
    End If
If [F7] = "¤" And [F9] = "¤" Then
    Rows("25:32").EntireRow.Hidden = True
    Rows("33:36").EntireRow.Hidden = False
    End If
 
 End Sub

Si le code est toutefois optimisable, je suis preneur
 

Spinzi

XLDnaute Impliqué
Re : VBA bulle sur option.button contrôle activX

Bonjour Bonjour,

actuellement mon code fait tout ce que je désire, mais je pense qu'il est optimisable : pourriez vous m'aider ?

Le must serait que le commentaire sur la case H9 disparaisse quand la case disparait ...

Merci d'avance !
 

Pièces jointes

  • Optimisation macro.xlsm
    39.7 KB · Affichages: 16

Discussions similaires

Réponses
29
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…