OVH Cloud OVH Cloud

Macro qui se déplace

6 réponses
Avatar
falafala
Bonjour

J'ai un pb avec les macros et je ne trouve pas la=20
solution.

J'ai cr=E9=E9 un fichier type A en lecture seule, auquel est=20
attach=E9 une macro.
J'ai cr=E9=E9 un bouton sous excel attach=E9 =E0 cette macro.

Ce fichier type me permet de cr=E9er d'autres fichiers de=20
donn=E9es.
Si je cr=E9e un fichier B =E0 partir de A, la macro suit le=20
fichier B et le bouton fait appel =E0 la macro attach=E9e =E0=20
B. Jusque l=E0 tout va bien.

Idem si je repart du fichier A pour cr=E9er un fichier C.=20
Mais une fois C cr=E9=E9, lorsque je veux modifier B et que=20
j'utilise le bouton affect=E9 =E0 la macro, le bouton est=20
d=E9sormais reli=E9 =E0 la macro du fichier C, et donc lorsque=20
je clique sur le bouton, ca ouvre le fichier C. Ce qui=20
est assez ennervant parce qu on ne comprend plus ce qu on=20
modifie.....

J'esp=E8re avoir =E9t=E9 clair. Ce que j'aimerais c'est que le=20
bouton Excel soit fix=E9 =E0 une macro et que cela ne bouge=20
plus.

Merci d'avance

6 réponses

Avatar
boblebob
slt,

si tu nous donnais ton code pour tes macros cela nous aiderait.

--
A+

Bob
----

"falafala" a écrit dans le message de
news:1ffc401c458f8$3816ab80$
Bonjour

J'ai un pb avec les macros et je ne trouve pas la
solution.

J'ai créé un fichier type A en lecture seule, auquel est
attaché une macro.
J'ai créé un bouton sous excel attaché à cette macro.

Ce fichier type me permet de créer d'autres fichiers de
données.
Si je crée un fichier B à partir de A, la macro suit le
fichier B et le bouton fait appel à la macro attachée à
B. Jusque là tout va bien.

Idem si je repart du fichier A pour créer un fichier C.
Mais une fois C créé, lorsque je veux modifier B et que
j'utilise le bouton affecté à la macro, le bouton est
désormais relié à la macro du fichier C, et donc lorsque
je clique sur le bouton, ca ouvre le fichier C. Ce qui
est assez ennervant parce qu on ne comprend plus ce qu on
modifie.....

J'espère avoir été clair. Ce que j'aimerais c'est que le
bouton Excel soit fixé à une macro et que cela ne bouge
plus.

Merci d'avance
Avatar
falafala
Y a rien d'original dans la macro : elle va sur trois
onglets pour y mettre les infos à jour.


-----Message d'origine-----
slt,

si tu nous donnais ton code pour tes macros cela nous
aiderait.


--
A+

Bob
----

"falafala" a écrit dans le message de
news:1ffc401c458f8$3816ab80$
Bonjour

J'ai un pb avec les macros et je ne trouve pas la
solution.

J'ai créé un fichier type A en lecture seule, auquel est
attaché une macro.
J'ai créé un bouton sous excel attaché à cette macro.

Ce fichier type me permet de créer d'autres fichiers de
données.
Si je crée un fichier B à partir de A, la macro suit le
fichier B et le bouton fait appel à la macro attachée à
B. Jusque là tout va bien.

Idem si je repart du fichier A pour créer un fichier C.
Mais une fois C créé, lorsque je veux modifier B et que
j'utilise le bouton affecté à la macro, le bouton est
désormais relié à la macro du fichier C, et donc lorsque
je clique sur le bouton, ca ouvre le fichier C. Ce qui
est assez ennervant parce qu on ne comprend plus ce qu on
modifie.....

J'espère avoir été clair. Ce que j'aimerais c'est que le
bouton Excel soit fixé à une macro et que cela ne bouge
plus.

Merci d'avance



.



Avatar
sabatier
à tout hasard, tu as tenté un Private Sub dans ton classeur A...
jps (qui meuble un peu)

falafala a écrit:
Y a rien d'original dans la macro : elle va sur trois
onglets pour y mettre les infos à jour.



-----Message d'origine-----
slt,

si tu nous donnais ton code pour tes macros cela nous


aiderait.

--
A+

Bob
----

"falafala" a écrit dans le message de
news:1ffc401c458f8$3816ab80$
Bonjour

J'ai un pb avec les macros et je ne trouve pas la
solution.

J'ai créé un fichier type A en lecture seule, auquel est
attaché une macro.
J'ai créé un bouton sous excel attaché à cette macro.

Ce fichier type me permet de créer d'autres fichiers de
données.
Si je crée un fichier B à partir de A, la macro suit le
fichier B et le bouton fait appel à la macro attachée à
B. Jusque là tout va bien.

Idem si je repart du fichier A pour créer un fichier C.
Mais une fois C créé, lorsque je veux modifier B et que
j'utilise le bouton affecté à la macro, le bouton est
désormais relié à la macro du fichier C, et donc lorsque
je clique sur le bouton, ca ouvre le fichier C. Ce qui
est assez ennervant parce qu on ne comprend plus ce qu on
modifie.....

J'espère avoir été clair. Ce que j'aimerais c'est que le
bouton Excel soit fixé à une macro et que cela ne bouge
plus.

Merci d'avance



.






Avatar
michdenis
Bonjour falafala,

La façon dont tu crées tes fichiers n'est pas explicite dans ta question.

Exemple : Si tu crées un nouveau classeur en copiant une feuille

Worksheets(1).Copy
Cela crée un nouveau classeur avec seulement une feuille à l'intérieur ... celle copiée.

Si tu veux que tes boutons de commande issus de la boîte à outils "formulaire" fassent référence à la macro de leur
classeur respectif, tu auras 2 alternatives :

A ) Refaire à la main, l'association entre la macro et le bouton par un clic sur le bouton et menu contextuel "Affecter
une macro"

B ) Utiliser une macro qui va faire le travail à ta place. Cependant, si tes macros dans le classeur original sont dans
un module Standard, le fait de créer un classeuur comme dans mon exemple, ne fera pas suivre ce module standard dans le
nouveau classeur... en conséquence, tes macros dans le nouveau classeur n'existeront pas à moins que tu mettes dans ton
classeur originale tes macros se rapportant à une feuille particulière dans la feuille module associée à la feuille où
l'action se déroule. En copiant cette feuille, les macros vont suivre la feuille et tu pourras utiliser le type de macro
proposée.

Supposons que dans une procédure quelconque, tu crées un nouveau classeur de la façon définie précédemment, ajoute une
ligne de code pour modifier le lien entre les boutons et les macros


Worksheets(1).Copy
AttributionNomMacro ActiveWorkbook

'-------------------------------
Sub AttributionNomMacro(wk As Workbook)

Dim B As Object, NomMacro As String
For Each sh In Worksheets
For Each B In sh.Shapes
If TypeName(B.OLEFormat.Object) = "Button" Then
NomMacro = B.OLEFormat.Object.OnAction
If NomMacro <> "" Then
NomMacro = Mid(NomMacro, InStrRev(NomMacro, "!") + 1)
NomMacro = wk.Name & "!" & NomMacro
B.OLEFormat.Object.OnAction = NomMacro
End If
End If
Next
Next

End Sub
'-------------------------------



Salutations!




"falafala" a écrit dans le message de news:1ffc401c458f8$3816ab80$
Bonjour

J'ai un pb avec les macros et je ne trouve pas la
solution.

J'ai créé un fichier type A en lecture seule, auquel est
attaché une macro.
J'ai créé un bouton sous excel attaché à cette macro.

Ce fichier type me permet de créer d'autres fichiers de
données.
Si je crée un fichier B à partir de A, la macro suit le
fichier B et le bouton fait appel à la macro attachée à
B. Jusque là tout va bien.

Idem si je repart du fichier A pour créer un fichier C.
Mais une fois C créé, lorsque je veux modifier B et que
j'utilise le bouton affecté à la macro, le bouton est
désormais relié à la macro du fichier C, et donc lorsque
je clique sur le bouton, ca ouvre le fichier C. Ce qui
est assez ennervant parce qu on ne comprend plus ce qu on
modifie.....

J'espère avoir été clair. Ce que j'aimerais c'est que le
bouton Excel soit fixé à une macro et que cela ne bouge
plus.

Merci d'avance
Avatar
falafala
J'ai pas compris grend chose à ta réponse mais je peux
t'apporter des éclaircissements:
J'ai un fichier type en lecture seule. Pour créer un
nouveau fichier, j'ouvre le fichier type, je fais mes
modifications puis je fais un "enregistrer sous..."


-----Message d'origine-----
Bonjour falafala,

La façon dont tu crées tes fichiers n'est pas explicite
dans ta question.


Exemple : Si tu crées un nouveau classeur en copiant une
feuille


Worksheets(1).Copy
Cela crée un nouveau classeur avec seulement une feuille
à l'intérieur ... celle copiée.


Si tu veux que tes boutons de commande issus de la boîte
à outils "formulaire" fassent référence à la macro de leur

classeur respectif, tu auras 2 alternatives :

A ) Refaire à la main, l'association entre la macro et
le bouton par un clic sur le bouton et menu

contextuel "Affecter
une macro"

B ) Utiliser une macro qui va faire le travail à ta
place. Cependant, si tes macros dans le classeur original

sont dans
un module Standard, le fait de créer un classeuur comme
dans mon exemple, ne fera pas suivre ce module standard

dans le
nouveau classeur... en conséquence, tes macros dans le
nouveau classeur n'existeront pas à moins que tu mettes

dans ton
classeur originale tes macros se rapportant à une
feuille particulière dans la feuille module associée à la

feuille où
l'action se déroule. En copiant cette feuille, les
macros vont suivre la feuille et tu pourras utiliser le

type de macro
proposée.

Supposons que dans une procédure quelconque, tu crées un
nouveau classeur de la façon définie précédemment, ajoute

une
ligne de code pour modifier le lien entre les boutons et
les macros



Worksheets(1).Copy
AttributionNomMacro ActiveWorkbook

'-------------------------------
Sub AttributionNomMacro(wk As Workbook)

Dim B As Object, NomMacro As String
For Each sh In Worksheets
For Each B In sh.Shapes
If TypeName(B.OLEFormat.Object) = "Button" Then
NomMacro = B.OLEFormat.Object.OnAction
If NomMacro <> "" Then
NomMacro = Mid(NomMacro, InStrRev
(NomMacro, "!") + 1)

NomMacro = wk.Name & "!" & NomMacro
B.OLEFormat.Object.OnAction = NomMacro
End If
End If
Next
Next

End Sub
'-------------------------------



Salutations!




"falafala" a écrit dans le message
de news:1ffc401c458f8$3816ab80$

Bonjour

J'ai un pb avec les macros et je ne trouve pas la
solution.

J'ai créé un fichier type A en lecture seule, auquel est
attaché une macro.
J'ai créé un bouton sous excel attaché à cette macro.

Ce fichier type me permet de créer d'autres fichiers de
données.
Si je crée un fichier B à partir de A, la macro suit le
fichier B et le bouton fait appel à la macro attachée à
B. Jusque là tout va bien.

Idem si je repart du fichier A pour créer un fichier C.
Mais une fois C créé, lorsque je veux modifier B et que
j'utilise le bouton affecté à la macro, le bouton est
désormais relié à la macro du fichier C, et donc lorsque
je clique sur le bouton, ca ouvre le fichier C. Ce qui
est assez ennervant parce qu on ne comprend plus ce qu on
modifie.....

J'espère avoir été clair. Ce que j'aimerais c'est que le
bouton Excel soit fixé à une macro et que cela ne bouge
plus.

Merci d'avance



.



Avatar
michdenis
Bonjour falafala,

Je ne comprends pas trop le sens de ta question, parce que si tu procèdes comme tu le décris, Le bon bouton de la macro
devrait être attaché à la bonne macro. Je ne vois pas comment Excel irait chercher la macro d'un autre classeur...
(testé Excel 2002) ou il y a quelque chose qui m'échappe.

La procédure suivante ne fait que refaire automatique l'attribution de la macro aux boutons des feuilles du nouveau
classeur si besoin, il y a.

Pour ce faire tu n'as qu'à appeler dans une procédure la macro comme ceci :

AttributionNomMacro activeworkbook


'---------------------------
Sub AttributionNomMacro(wk As Workbook)

Dim B As Object, NomMacro As String
For Each sh In Worksheets
For Each B In sh.Shapes
If TypeName(B.OLEFormat.Object) = "Button" Then
NomMacro = B.OLEFormat.Object.OnAction
If NomMacro <> "" Then
NomMacro = Mid(NomMacro, InStrRev(NomMacro, "!") + 1)
NomMacro = wk.Name & "!" & NomMacro
B.OLEFormat.Object.OnAction = NomMacro
End If
End If
Next
Next

End Sub
'---------------------------


Salutations!



"falafala" a écrit dans le message de news:20aeb01c45932$75b59d90$

J'ai pas compris grend chose à ta réponse mais je peux
t'apporter des éclaircissements:
J'ai un fichier type en lecture seule. Pour créer un
nouveau fichier, j'ouvre le fichier type, je fais mes
modifications puis je fais un "enregistrer sous..."


-----Message d'origine-----
Bonjour falafala,

La façon dont tu crées tes fichiers n'est pas explicite
dans ta question.


Exemple : Si tu crées un nouveau classeur en copiant une
feuille


Worksheets(1).Copy
Cela crée un nouveau classeur avec seulement une feuille
à l'intérieur ... celle copiée.


Si tu veux que tes boutons de commande issus de la boîte
à outils "formulaire" fassent référence à la macro de leur

classeur respectif, tu auras 2 alternatives :

A ) Refaire à la main, l'association entre la macro et
le bouton par un clic sur le bouton et menu

contextuel "Affecter
une macro"

B ) Utiliser une macro qui va faire le travail à ta
place. Cependant, si tes macros dans le classeur original

sont dans
un module Standard, le fait de créer un classeuur comme
dans mon exemple, ne fera pas suivre ce module standard

dans le
nouveau classeur... en conséquence, tes macros dans le
nouveau classeur n'existeront pas à moins que tu mettes

dans ton
classeur originale tes macros se rapportant à une
feuille particulière dans la feuille module associée à la

feuille où
l'action se déroule. En copiant cette feuille, les
macros vont suivre la feuille et tu pourras utiliser le

type de macro
proposée.

Supposons que dans une procédure quelconque, tu crées un
nouveau classeur de la façon définie précédemment, ajoute

une
ligne de code pour modifier le lien entre les boutons et
les macros



Worksheets(1).Copy
AttributionNomMacro ActiveWorkbook

'-------------------------------
Sub AttributionNomMacro(wk As Workbook)

Dim B As Object, NomMacro As String
For Each sh In Worksheets
For Each B In sh.Shapes
If TypeName(B.OLEFormat.Object) = "Button" Then
NomMacro = B.OLEFormat.Object.OnAction
If NomMacro <> "" Then
NomMacro = Mid(NomMacro, InStrRev
(NomMacro, "!") + 1)

NomMacro = wk.Name & "!" & NomMacro
B.OLEFormat.Object.OnAction = NomMacro
End If
End If
Next
Next

End Sub
'-------------------------------



Salutations!




"falafala" a écrit dans le message
de news:1ffc401c458f8$3816ab80$

Bonjour

J'ai un pb avec les macros et je ne trouve pas la
solution.

J'ai créé un fichier type A en lecture seule, auquel est
attaché une macro.
J'ai créé un bouton sous excel attaché à cette macro.

Ce fichier type me permet de créer d'autres fichiers de
données.
Si je crée un fichier B à partir de A, la macro suit le
fichier B et le bouton fait appel à la macro attachée à
B. Jusque là tout va bien.

Idem si je repart du fichier A pour créer un fichier C.
Mais une fois C créé, lorsque je veux modifier B et que
j'utilise le bouton affecté à la macro, le bouton est
désormais relié à la macro du fichier C, et donc lorsque
je clique sur le bouton, ca ouvre le fichier C. Ce qui
est assez ennervant parce qu on ne comprend plus ce qu on
modifie.....

J'espère avoir été clair. Ce que j'aimerais c'est que le
bouton Excel soit fixé à une macro et que cela ne bouge
plus.

Merci d'avance



.