OVH Cloud OVH Cloud

classeur actif dans macro

2 réponses
Avatar
Monnerie
Bonjour,

j'ai une petite question :

tous les ans je change le nom d'un classeur en focntion de l'année scolaire.
J'ai affecté des macros à des boutons personnalisés. Suite au changement de
nom, les macros affectées aux boutons se bloquent et demandent l'ancien
classeur. Il faut que je réaffecte les macros à chaque bouton. Comment
éviter cela (par exemple en déclarant la macro au classeur actif mais je ne
sais pas comment le mettre dans chaque macro en visual basic

Merci d'avance

2 réponses

Avatar
michdenis
Bonjour Monnerie,

Tu copies ce qui suit et tu exécutes la macro "ReaffactationDesMacrosAuBouton()" une fois par année !
Elle va passer en revue chacun des boutons de commande issu de ta barre d'outils formulaire pour toutes les feuilles de
ton classeur.

Chanceux !

'---------------------------
Sub ReaffactationDesMacrosAuBouton()
AttributionNomMacro ThisWorkbook
End sub
'---------------------------
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!





"Monnerie" <francoismonnerie(supprimerceci)@hotmail.com> a écrit dans le message de
news:
Bonjour,

j'ai une petite question :

tous les ans je change le nom d'un classeur en focntion de l'année scolaire.
J'ai affecté des macros à des boutons personnalisés. Suite au changement de
nom, les macros affectées aux boutons se bloquent et demandent l'ancien
classeur. Il faut que je réaffecte les macros à chaque bouton. Comment
éviter cela (par exemple en déclarant la macro au classeur actif mais je ne
sais pas comment le mettre dans chaque macro en visual basic

Merci d'avance
Avatar
Monnerie
Merci beaucoup

"michdenis" a écrit dans le message de
news:%23e2tZ$

Bonjour Monnerie,

Tu copies ce qui suit et tu exécutes la macro
"ReaffactationDesMacrosAuBouton()" une fois par année !

Elle va passer en revue chacun des boutons de commande issu de ta barre
d'outils formulaire pour toutes les feuilles de

ton classeur.

Chanceux !

'---------------------------
Sub ReaffactationDesMacrosAuBouton()
AttributionNomMacro ThisWorkbook
End sub
'---------------------------
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!





"Monnerie" <francoismonnerie(supprimerceci)@hotmail.com> a écrit dans le
message de

news:
Bonjour,

j'ai une petite question :

tous les ans je change le nom d'un classeur en focntion de l'année
scolaire.

J'ai affecté des macros à des boutons personnalisés. Suite au changement
de

nom, les macros affectées aux boutons se bloquent et demandent l'ancien
classeur. Il faut que je réaffecte les macros à chaque bouton. Comment
éviter cela (par exemple en déclarant la macro au classeur actif mais je
ne

sais pas comment le mettre dans chaque macro en visual basic

Merci d'avance