OVH Cloud OVH Cloud

Problème de boutonS

4 réponses
Avatar
gh
Bonjour,

j'ai créé une macro qui rajoute des lignes si nécessaire
dans ces lignes rajoutées, elle colle un bouton qui est identique sur chaque
nouvelle ligne
ce bouton est destiné à lancer une macro en fonction des données de la
ligne.
Mon problème est que je n'arrive pas à differencier les boutons...
En gros je n'arrive pas à savoir quelle ligne a été cliquée.

si quelqu'un à une idée
merci

4 réponses

Avatar
anonymousA
bonjour,

2 questions au moins se posent à moi quand je lis ta demande:

1-Par quel mode crées-tu la macro qui est appelée par le ou les boutons.?
Car 2 possibilités seulement existent pour créer des boutons, soit ceux
crées par la barre d'outils Forumulaires ou ceux crées par la barre
d'outils controles. Dans les 2 cas,cependant, la création par macro
d'une macro evenementielle attachée ne peut se faire qu'en utilisant des
propriétés et méthodes de VBIDE.

2-tes boutons occupent-ils une seule ligne ou débordent t-ils ?
On peut en effet utiliser la propriété topletfcell et bottomrightcell
d'un objet shape (car tes boutons quels que soient leur provenance sont
aussi des objets de la collection shapes) pour repérer sur quelle
cellule se situent les boutons .

A+


Bonjour,

j'ai créé une macro qui rajoute des lignes si nécessaire
dans ces lignes rajoutées, elle colle un bouton qui est identique sur chaque
nouvelle ligne
ce bouton est destiné à lancer une macro en fonction des données de la
ligne.
Mon problème est que je n'arrive pas à differencier les boutons...
En gros je n'arrive pas à savoir quelle ligne a été cliquée.

si quelqu'un à une idée
merci




Avatar
gh
merci pour ta réponse,

voici quelques précisions:

1- la première macro copie-colle un bouton à l'interieur d'une case
(sans dépasser) d'une ligne rajoutée.

voici le code pour copier le bouton que j'utilise:
'---------------------------------copie bouton colonne
c---------------------------------
ActiveSheet.Shapes("Button 4").Select
Selection.Copy
Range("C" & vide).Select '<---- vide = n° de 1ere ligne
vide
ActiveSheet.PasteSpecial Format:="Objet dessiné MS Office",
Link:úlse, _
DisplayAsIcon:úlse
'---------------------------------------------------------------------------
--------------
j'ai eu du mal à trouver quelque chose qui fonctionne, mais ca marche
super jusque là.
Tous ces boutons font appel à la macro du bouton copié (je demande pas
mieux), sauf que j'ai besoin de la valeur de la colonne "A" de la ligne où
se situe le bouton collé pour lancer une deuxième macro et là... rien à
faire.
Le fait de cliquer sur un bouton dans une cellule n'active pas la
cellule, impossible de localiser le bouton qui a été activé et comme ils ont
tous la même macro qui dépend de la première colonne de la ligne où ils se
trouvent...
je ne vois pas comment faire.

merci en tous cas

"anonymousA" a écrit dans le message de
news:42728964$0$26070$
bonjour,

2 questions au moins se posent à moi quand je lis ta demande:

1-Par quel mode crées-tu la macro qui est appelée par le ou les boutons.?
Car 2 possibilités seulement existent pour créer des boutons, soit ceux
crées par la barre d'outils Forumulaires ou ceux crées par la barre
d'outils controles. Dans les 2 cas,cependant, la création par macro
d'une macro evenementielle attachée ne peut se faire qu'en utilisant des
propriétés et méthodes de VBIDE.

2-tes boutons occupent-ils une seule ligne ou débordent t-ils ?
On peut en effet utiliser la propriété topletfcell et bottomrightcell
d'un objet shape (car tes boutons quels que soient leur provenance sont
aussi des objets de la collection shapes) pour repérer sur quelle
cellule se situent les boutons .

A+


Bonjour,

j'ai créé une macro qui rajoute des lignes si nécessaire
dans ces lignes rajoutées, elle colle un bouton qui est identique sur
chaque


nouvelle ligne
ce bouton est destiné à lancer une macro en fonction des données de la
ligne.
Mon problème est que je n'arrive pas à differencier les boutons...
En gros je n'arrive pas à savoir quelle ligne a été cliquée.

si quelqu'un à une idée
merci






Avatar
anonymousA
re,


pour détecter p.e la valeur de la cellule de la colonne A qui correspond
à la ligne sur laquelle est situé ton bouton (j'ai supposé compte tenu
des élements que tu m'as communiqués que les boutons sont des boutons de
la barre d'outils formulaires).
Cette instruction est à placer dans en tête de la macro appelée par tous
les boutons.
dans l'instruction suivante, on fait appel à 4 notions successives:

1-Application.caller renvoie le nom de l'objet qui génère la macro
2-Shapes(Application.Caller)identifie la forme correspondant au nom
renvoyé par Application.Caller
3-.Topletfcell.address renvoie l'adresse de la cellule la plus en haut à
gauche sur laquelle se situe l'objet shape
4-range(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address) est
un objet de type range. On peut donc utiliser ensuite la propriété
décalage traduite par .offset. Le déclalage étant de 2 colonnes et de 0
lignes puisque tes boutons se situent en colonne C et que tu veux
récupérer la valeur de la cellule située colonne A, on écrit .offset(0,-2)


msgbox
Range(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address).Offset(0,
-2).Value

te renverra une boite de message contenant la valeur de la cellule
située colonne A pour un bouton situé en colonne C.A toi de faire
ensuite ce que tu veux dans ta macro par rapport à la valeur de la
cellule en question.

A+


merci pour ta réponse,

voici quelques précisions:

1- la première macro copie-colle un bouton à l'interieur d'une case
(sans dépasser) d'une ligne rajoutée.

voici le code pour copier le bouton que j'utilise:
'---------------------------------copie bouton colonne
c---------------------------------
ActiveSheet.Shapes("Button 4").Select
Selection.Copy
Range("C" & vide).Select '<---- vide = n° de 1ere ligne
vide
ActiveSheet.PasteSpecial Format:="Objet dessiné MS Office",
Link:úlse, _
DisplayAsIcon:úlse
'---------------------------------------------------------------------------
--------------
j'ai eu du mal à trouver quelque chose qui fonctionne, mais ca marche
super jusque là.
Tous ces boutons font appel à la macro du bouton copié (je demande pas
mieux), sauf que j'ai besoin de la valeur de la colonne "A" de la ligne où
se situe le bouton collé pour lancer une deuxième macro et là... rien à
faire.
Le fait de cliquer sur un bouton dans une cellule n'active pas la
cellule, impossible de localiser le bouton qui a été activé et comme ils ont
tous la même macro qui dépend de la première colonne de la ligne où ils se
trouvent...
je ne vois pas comment faire.

merci en tous cas

"anonymousA" a écrit dans le message de
news:42728964$0$26070$

bonjour,

2 questions au moins se posent à moi quand je lis ta demande:

1-Par quel mode crées-tu la macro qui est appelée par le ou les boutons.?
Car 2 possibilités seulement existent pour créer des boutons, soit ceux
crées par la barre d'outils Forumulaires ou ceux crées par la barre
d'outils controles. Dans les 2 cas,cependant, la création par macro
d'une macro evenementielle attachée ne peut se faire qu'en utilisant des
propriétés et méthodes de VBIDE.

2-tes boutons occupent-ils une seule ligne ou débordent t-ils ?
On peut en effet utiliser la propriété topletfcell et bottomrightcell
d'un objet shape (car tes boutons quels que soient leur provenance sont
aussi des objets de la collection shapes) pour repérer sur quelle
cellule se situent les boutons .

A+



Bonjour,

j'ai créé une macro qui rajoute des lignes si nécessaire
dans ces lignes rajoutées, elle colle un bouton qui est identique sur



chaque

nouvelle ligne
ce bouton est destiné à lancer une macro en fonction des données de la
ligne.
Mon problème est que je n'arrive pas à differencier les boutons...
En gros je n'arrive pas à savoir quelle ligne a été cliquée.

si quelqu'un à une idée
merci











Avatar
gh
Merci , merci et encore une fois merci cela fonctionne.

j'ai essayé des centaines de possibilités en 3 jours et je n'avais pas vu
cette fonction "caller".
comme quoi j'étais encore à cent lieues de trouver.

merci pour ta précieuse aide.


"anonymousA" a écrit dans le message de
news:42734ef3$0$26072$
re,


pour détecter p.e la valeur de la cellule de la colonne A qui correspond
à la ligne sur laquelle est situé ton bouton (j'ai supposé compte tenu
des élements que tu m'as communiqués que les boutons sont des boutons de
la barre d'outils formulaires).
Cette instruction est à placer dans en tête de la macro appelée par tous
les boutons.
dans l'instruction suivante, on fait appel à 4 notions successives:

1-Application.caller renvoie le nom de l'objet qui génère la macro
2-Shapes(Application.Caller)identifie la forme correspondant au nom
renvoyé par Application.Caller
3-.Topletfcell.address renvoie l'adresse de la cellule la plus en haut à
gauche sur laquelle se situe l'objet shape
4-range(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address) est
un objet de type range. On peut donc utiliser ensuite la propriété
décalage traduite par .offset. Le déclalage étant de 2 colonnes et de 0
lignes puisque tes boutons se situent en colonne C et que tu veux
récupérer la valeur de la cellule située colonne A, on écrit .offset(0,-2)


msgbox

Range(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address).Offset(0,

-2).Value

te renverra une boite de message contenant la valeur de la cellule
située colonne A pour un bouton situé en colonne C.A toi de faire
ensuite ce que tu veux dans ta macro par rapport à la valeur de la
cellule en question.

A+


merci pour ta réponse,

voici quelques précisions:

1- la première macro copie-colle un bouton à l'interieur d'une case
(sans dépasser) d'une ligne rajoutée.

voici le code pour copier le bouton que j'utilise:
'---------------------------------copie bouton colonne
c---------------------------------
ActiveSheet.Shapes("Button 4").Select
Selection.Copy
Range("C" & vide).Select '<---- vide = n° de 1ere
ligne


vide
ActiveSheet.PasteSpecial Format:="Objet dessiné MS Office",
Link:úlse, _
DisplayAsIcon:úlse

'---------------------------------------------------------------------------


--------------
j'ai eu du mal à trouver quelque chose qui fonctionne, mais ca
marche


super jusque là.
Tous ces boutons font appel à la macro du bouton copié (je demande
pas


mieux), sauf que j'ai besoin de la valeur de la colonne "A" de la ligne



se situe le bouton collé pour lancer une deuxième macro et là... rien à
faire.
Le fait de cliquer sur un bouton dans une cellule n'active pas la
cellule, impossible de localiser le bouton qui a été activé et comme ils
ont


tous la même macro qui dépend de la première colonne de la ligne où ils
se


trouvent...
je ne vois pas comment faire.

merci en tous cas

"anonymousA" a écrit dans le message de
news:42728964$0$26070$

bonjour,

2 questions au moins se posent à moi quand je lis ta demande:

1-Par quel mode crées-tu la macro qui est appelée par le ou les
boutons.?



Car 2 possibilités seulement existent pour créer des boutons, soit ceux
crées par la barre d'outils Forumulaires ou ceux crées par la barre
d'outils controles. Dans les 2 cas,cependant, la création par macro
d'une macro evenementielle attachée ne peut se faire qu'en utilisant des
propriétés et méthodes de VBIDE.

2-tes boutons occupent-ils une seule ligne ou débordent t-ils ?
On peut en effet utiliser la propriété topletfcell et bottomrightcell
d'un objet shape (car tes boutons quels que soient leur provenance sont
aussi des objets de la collection shapes) pour repérer sur quelle
cellule se situent les boutons .

A+



Bonjour,

j'ai créé une macro qui rajoute des lignes si nécessaire
dans ces lignes rajoutées, elle colle un bouton qui est identique sur



chaque

nouvelle ligne
ce bouton est destiné à lancer une macro en fonction des données de la
ligne.
Mon problème est que je n'arrive pas à differencier les boutons...
En gros je n'arrive pas à savoir quelle ligne a été cliquée.

si quelqu'un à une idée
merci