[vba] savoir la ligne du bouton activé

Résolu/Fermé
biomano - Modifié par biomano le 9/05/2011 à 10:57
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 10 mai 2011 à 11:06
Bonjour,

j'ai une macro qui m'affiche un certains nombre de bouton "connexion" en fonction du nombre de résultats de ma recherche. Mais j'aimerais connaitre la ligne du bouton sur lequel je clique. Est ce possible?

c'est pas un truc du genre ActiveButton.Row ?
j'ai testé mais sans résultat. je n'y arrive pas.

pourriez vous m'aider svp?

cordialement,

biomano

A voir également:

5 réponses

j'ai testé avec Activecell.Row sans succés.
il n'y a pas un équivalent pour un bouton selectionné?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
9 mai 2011 à 11:07
Bonjour,
tu dis : j'ai une macro qui m'affiche un certains nombre de bouton "connexion"
Peux t'on voir le code de cette macro afin de voir comment sont créés tes "boutons"?
0
j'ai testé ça:

[H12].Offset(, -7).Select


mais ne marche que pour des cellules.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
9 mai 2011 à 11:35
0
je sais que tu avais posté une réponse mais elle ne s'affichait pas et là non plus elle ne s'affiche pas. je ne sais pas d'ou vient le pb d'affichage
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
9 mai 2011 à 13:01
Je te demande simplement de mettre le code de ta macro, celle qui créé les boutons...
Tu copies ton code et viens ici le coller dans une réponse...
0
désolé, voici le code de la macro:
  
Dim k As Integer
k = Application.WorksheetFunction.CountA(Range("A2:A65536"))
For i = 2 To k + 1
  ActiveSheet.Buttons.Add(Cells(1, 8).Left, Cells(i, 1).Top, Cells(2, 1).Width, Cells(2, 1).Height).Select
    Selection.OnAction = "connexion"
    Selection.Characters.Text = "connexion"

Next
0
en fait, ça me compte le nbre de résultat et ça m'affiche un bouton connexion pour chaque résultat dans la colonne H.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 9/05/2011 à 14:20
La ligne correspondante à ton bouton est donc :
Selection.Top/Cells(2, 1).Height + 1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
9 mai 2011 à 14:41
Bonjour,
Salut pijaku .. tu a tester ?
1°) pourquoi employer une WorksheetFunction qui du reste risque de ne pas donner le bon résultat, vaut mieux faire..
    k = Range("A65536").end(Xlup).row

Ensuite, tes boutons sont issus des outils Formulaire et n'ont presque pas de possibilité, vaudrait mieux employer des boutons ActiveX.
un exemple pour créer ces boutons, si tu ne comprend pas le traitement par classe c'est pas obliger, y a une propriété qui permet de connaitre la ligne du bouton mais zut.. je reviens pas dessus.
A+
--
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
9 mai 2011 à 15:17
Salut Lermitte222
Oui j'ai testé, sur une petit fichier créé par mes soins. Cela fonctionne pas trop mal. Pourquoi? Qu'est ce qui te choque dans ce code?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
9 mai 2011 à 15:22
je ne sais pas comment tu à testé mais moi j'ai l'erreur "non gérer"
Pas oublier que 1°) la macros doit être dans un module général. 2°) connaitre la ligne dans la macro connexion
Explique !! :-)
A+
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
9 mai 2011 à 15:37
Dans un module :
Sub NumérosBoutons()
Dim Ctrl As Shape

    For Each Ctrl In ActiveSheet.Shapes
        MsgBox Ctrl.Top / Cells(2, 1).Height + 1
    Next Ctrl
End Sub

me donne bien les lignes correspondantes aux boutons? Ce qui réponds bien au sujet proposé.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
9 mai 2011 à 15:46
Excuses, sais pas comment j'ai fais mais je viens de retester et effectivement ça fonctionne.
Malgré tout, je ne trouve pas que ce soit une solution fiable, le moindre changement de hauteur de ligne perturbe le calcul.
Je persiste et signe.. préférable d'employer des boutons AvtiveX
A+
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
9 mai 2011 à 15:57
Malgré tout, je ne trouve pas que ce soit une solution fiable, le moindre changement de hauteur de ligne perturbe le calcul. Tout à fait d'accord. Je l'ai fait dans ce sens car on peut être sur (du moins au départ) que les hauteurs de ligne correspondent aux hauteurs de boutons. Le code fonctionnera bien jusqu'à effectivement une modif de hauteur...
Je persiste et signe.. préférable d'employer des boutons AvtiveX je persiste et signe volontiers avec toi!! Je hais les Shapes... On n'en vient à bout que trop difficilement...
0