OVH Cloud OVH Cloud

bouhhhhhhhh! que je tâtonne et m'emm.....

13 réponses
Avatar
sabatier
bonjour(c)
pourquoi, mes chers frères, cette proc ne veut pas marcher ; elle bogue sur
If C.OnAction.....propriété ou méthode non gérée par cet objet..alors que
j'ai souvenance qu'elle fonctionnait lorsque le père brossollette me m'avait
vendue, pas vraiment puisqu'il s'était contenté de me dire qu'il fallait que
je pense à ses bonnes oeuvres....
voici donc l'objet du délit et je vous avoue que "mihi placerit bene sortire
ex illo cacato"

Sub RecupererCheminsDesBoutons()
mauvais = "C:\Sauvegarde Automatique"
bon = "C:\Documents and Settings\jean-paul\Application
Data\Microsoft\Excel\XLSTART"
With Application.CommandBars(1)
For Each C In .Controls
If C.OnAction Like "*C:\Sauvegarde Automatique*" Then _
C.OnAction = Application.Substitute(C.OnAction, mauvais, bon)
Next
End With
End Sub

gratia pro Deo
jps

10 réponses

1 2
Avatar
Michel Gaboly
Bonsoir Jean-Paul,

Juste quelques remarques :

CommandBars(1) correspond à la barre de menus standards d'Excel,
ce que tu peux vérifier ainsi :

Sub TestCommandBars1()
With Application.CommandBars(1)
Debug.Print .Name
For Each c In .Controls
Debug.Print c.Caption
Next
End With
End Sub

Voici ce qui s'affiche dans la fenêtre Exécution :

Worksheet Menu Bar
&Fichier
&Edition
&Affichage
&Insertion
Forma&t
&Outils
&Données
Fe&nêtre
Aide

Tes boutons appartiennent donc très probablement à un autre objet
CommandBar.

Si tu as la possibilité d'en sélectionner un (je n'ai jamais utilisé, je
crois, de CommandBarButton), essaye quelque chose comme :


Sub Ascendant
MsgBox Selection.Parent.Name
End Sub

NB - Non testé


Par ailleurs, OnAction renvoie le nom de la macro associé à un bouton, un
article de menu, ...

Quand on clique sur le nom d'un menu comme Fichier ou Edition, on déroule
simplement le menu. Aucune macro particulière ne lui est attachée, donc
pas de "OnAction".


Enfin, OnAction renvoie sous forme de texte un nom de macro, et donc ne
devrait pas te permettre de récupérer un chemin d'accès, quel qu'il soit.


Bon courage tout de même ;-)))



bonjour(c)
pourquoi, mes chers frères, cette proc ne veut pas marcher ; elle bogue sur
If C.OnAction.....propriété ou méthode non gérée par cet objet..alors que
j'ai souvenance qu'elle fonctionnait lorsque le père brossollette me m'avait
vendue, pas vraiment puisqu'il s'était contenté de me dire qu'il fallait que
je pense à ses bonnes oeuvres....
voici donc l'objet du délit et je vous avoue que "mihi placerit bene sortire
ex illo cacato"

Sub RecupererCheminsDesBoutons()
mauvais = "C:Sauvegarde Automatique"
bon = "C:Documents and Settingsjean-paulApplication
DataMicrosoftExcelXLSTART"
With Application.CommandBars(1)
For Each C In .Controls
If C.OnAction Like "*C:Sauvegarde Automatique*" Then _
C.OnAction = Application.Substitute(C.OnAction, mauvais, bon)
Next
End With
End Sub

gratia pro Deo
jps


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
michdenis
Bonjour JPS,

Essaie ceci ,

Satisfaction garantie ou Argent remis !

Au fait, c'est quoi le tarif ici quand on n'est pas MVP ?

;-))


'Prudence lors de tes tests ....!
'--------------------------------------
Sub Mise_A_Jour_Mes_Boutons()

Dim Ancien As String, Nouveau As String
Dim A As Integer

Nouveau = "'" & ThisWorkbook.FullName & "'!"
For A = 1 To Application.CommandBars.Count
For Each Ctl In CommandBars(A).Controls
If Ctl.Type = 1 Then
Ancien = Left(Ctl.OnAction, InStrRev(Ctl.OnAction, "!"))
If Ancien <> "" Then
If Nouveau <> Ancien Then Stop
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, Nouveau)
End If
End If
Next
Next
End Sub
'--------------------------------------


Salutations!




"sabatier" a écrit dans le message de news:
bonjour(c)
pourquoi, mes chers frères, cette proc ne veut pas marcher ; elle bogue sur
If C.OnAction.....propriété ou méthode non gérée par cet objet..alors que
j'ai souvenance qu'elle fonctionnait lorsque le père brossollette me m'avait
vendue, pas vraiment puisqu'il s'était contenté de me dire qu'il fallait que
je pense à ses bonnes oeuvres....
voici donc l'objet du délit et je vous avoue que "mihi placerit bene sortire
ex illo cacato"

Sub RecupererCheminsDesBoutons()
mauvais = "C:Sauvegarde Automatique"
bon = "C:Documents and Settingsjean-paulApplication
DataMicrosoftExcelXLSTART"
With Application.CommandBars(1)
For Each C In .Controls
If C.OnAction Like "*C:Sauvegarde Automatique*" Then _
C.OnAction = Application.Substitute(C.OnAction, mauvais, bon)
Next
End With
End Sub

gratia pro Deo
jps
Avatar
michdenis
Bonjour JPS,

Essaie ceci ,

Satisfaction garantie ou Argent remis !

Au fait, c'est quoi le tarif ici quand on n'est pas MVP ?

;-))


'Prudence lors de tes tests ....!

'Rien d'autre à faire que de copier la procécure dans
' un module de ton classeur et de l'exécuter

'------------------------------------
Sub Mise_A_Jour_Mes_Boutons()

Dim Ancien As String, Nouveau As String
Dim A As Integer

Nouveau = "'" & ThisWorkbook.FullName & "'!"
For A = 1 To Application.CommandBars.Count
For Each Ctl In CommandBars(A).Controls
If Ctl.Type = 1 Then
Ancien = Left(Ctl.OnAction, InStrRev(Ctl.OnAction, "!"))
If Ancien <> "" Then
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, Nouveau)
End If
End If
Next
Next
End Sub
'------------------------------------


Salutations!



"sabatier" a écrit dans le message de news:
bonjour(c)
pourquoi, mes chers frères, cette proc ne veut pas marcher ; elle bogue sur
If C.OnAction.....propriété ou méthode non gérée par cet objet..alors que
j'ai souvenance qu'elle fonctionnait lorsque le père brossollette me m'avait
vendue, pas vraiment puisqu'il s'était contenté de me dire qu'il fallait que
je pense à ses bonnes oeuvres....
voici donc l'objet du délit et je vous avoue que "mihi placerit bene sortire
ex illo cacato"

Sub RecupererCheminsDesBoutons()
mauvais = "C:Sauvegarde Automatique"
bon = "C:Documents and Settingsjean-paulApplication
DataMicrosoftExcelXLSTART"
With Application.CommandBars(1)
For Each C In .Controls
If C.OnAction Like "*C:Sauvegarde Automatique*" Then _
C.OnAction = Application.Substitute(C.OnAction, mauvais, bon)
Next
End With
End Sub

gratia pro Deo
jps
Avatar
sabatier
bonjour denis et bon réveil
enfin, pas si bon que cela puisque je vais te demander de me rendre une
partie au moins de mon argent puisque ma satisfaction n'a pas été garantie
100 %....
je plaisante bien sûr puisque ta proc a marché du feu de Dieu pour tous les
boutons des BO sauf pour les suivants :

Application.CommandBars("Menu contextuel personnalisé 2831375").Controls.Add
_
Type:=msoControlButton, Id:)50, Before:=1

j'ai bien essayé de changer le "type = 1" (c'est quoi ce Type que je n'ai
retrouvé nulle part dans l'aide?) mais oualou de chez oualaou, zont pas
bronché d'un eta d'epsilon mes petits boutons que j'ai mis avec Nouveau Menu
puis déferlante de popups....dans la Worksheet Menu Bar....

question : que faut-il ajouter à ta proc pour qu'elle prenne en charge les
boutons de ce type?

tu me diras que je peux tous leur réaffecter la macro mais c'est là qu'ils
sont le plus nombreux, ces petits salopards...
merci pour ta nouvelle étude

merci aussi à toi, michel G pour ta réponse : ta proc avec Debug Print fait
bien apparaître, dans la fenêtre Exécution, les menus contextuels que j'ai
ajouté à la barre 1 et dont denis va se faire un plaisir à me changer le
chemin d'accès qui, suite à une mauvaise manip' est passé chez l'ennemi....

à +
jps



"michdenis" a écrit dans le message de
news:
Bonjour JPS,

Essaie ceci ,

Satisfaction garantie ou Argent remis !

Au fait, c'est quoi le tarif ici quand on n'est pas MVP ?

;-))


'Prudence lors de tes tests ....!

'Rien d'autre à faire que de copier la procécure dans
' un module de ton classeur et de l'exécuter

'------------------------------------
Sub Mise_A_Jour_Mes_Boutons()

Dim Ancien As String, Nouveau As String
Dim A As Integer

Nouveau = "'" & ThisWorkbook.FullName & "'!"
For A = 1 To Application.CommandBars.Count
For Each Ctl In CommandBars(A).Controls
If Ctl.Type = 1 Then
Ancien = Left(Ctl.OnAction, InStrRev(Ctl.OnAction, "!"))
If Ancien <> "" Then
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, Nouveau)
End If
End If
Next
Next
End Sub
'------------------------------------


Salutations!



"sabatier" a écrit dans le
message de news:

bonjour(c)
pourquoi, mes chers frères, cette proc ne veut pas marcher ; elle bogue
sur

If C.OnAction.....propriété ou méthode non gérée par cet objet..alors que
j'ai souvenance qu'elle fonctionnait lorsque le père brossollette me
m'avait

vendue, pas vraiment puisqu'il s'était contenté de me dire qu'il fallait
que

je pense à ses bonnes oeuvres....
voici donc l'objet du délit et je vous avoue que "mihi placerit bene
sortire

ex illo cacato"

Sub RecupererCheminsDesBoutons()
mauvais = "C:Sauvegarde Automatique"
bon = "C:Documents and Settingsjean-paulApplication
DataMicrosoftExcelXLSTART"
With Application.CommandBars(1)
For Each C In .Controls
If C.OnAction Like "*C:Sauvegarde Automatique*" Then _
C.OnAction = Application.Substitute(C.OnAction, mauvais, bon)
Next
End With
End Sub

gratia pro Deo
jps








Avatar
Michel Gaboly
De rien, Jean-paul ;-))

Dans l'explorateur d'objets, clique sur CommandBarButton dans la première
colonne, puis sur Type dans la seconde.

Clique ensuite sur le point d'interrogation (symbole de l'aide) situé DANS la
fenêtre de l'explorateur d'objets.

Tu as alors la liste des types, msoControlButton apparaissant en premier.

Retourne dans l'explorateur d'objet, et dans la fenêtre de recherche, entre
msoControlButton (éventuellement par Copier/Coller) et appuie sur Enter.

La valeur de la constante apparaît tout en bas de l'explorateur d'objets ;
elle est égale à 1.



bonjour denis et bon réveil
enfin, pas si bon que cela puisque je vais te demander de me rendre une
partie au moins de mon argent puisque ma satisfaction n'a pas été garantie
100 %....
je plaisante bien sûr puisque ta proc a marché du feu de Dieu pour tous les
boutons des BO sauf pour les suivants :

Application.CommandBars("Menu contextuel personnalisé 2831375").Controls.Add
_
Type:=msoControlButton, Id:)50, Before:=1

j'ai bien essayé de changer le "type = 1" (c'est quoi ce Type que je n'ai
retrouvé nulle part dans l'aide?) mais oualou de chez oualaou, zont pas
bronché d'un eta d'epsilon mes petits boutons que j'ai mis avec Nouveau Menu
puis déferlante de popups....dans la Worksheet Menu Bar....

question : que faut-il ajouter à ta proc pour qu'elle prenne en charge les
boutons de ce type?

tu me diras que je peux tous leur réaffecter la macro mais c'est là qu'ils
sont le plus nombreux, ces petits salopards...
merci pour ta nouvelle étude

merci aussi à toi, michel G pour ta réponse : ta proc avec Debug Print fait
bien apparaître, dans la fenêtre Exécution, les menus contextuels que j'ai
ajouté à la barre 1 et dont denis va se faire un plaisir à me changer le
chemin d'accès qui, suite à une mauvaise manip' est passé chez l'ennemi....

à +
jps

"michdenis" a écrit dans le message de
news:
Bonjour JPS,

Essaie ceci ,

Satisfaction garantie ou Argent remis !

Au fait, c'est quoi le tarif ici quand on n'est pas MVP ?

;-))


'Prudence lors de tes tests ....!

'Rien d'autre à faire que de copier la procécure dans
' un module de ton classeur et de l'exécuter

'------------------------------------
Sub Mise_A_Jour_Mes_Boutons()

Dim Ancien As String, Nouveau As String
Dim A As Integer

Nouveau = "'" & ThisWorkbook.FullName & "'!"
For A = 1 To Application.CommandBars.Count
For Each Ctl In CommandBars(A).Controls
If Ctl.Type = 1 Then
Ancien = Left(Ctl.OnAction, InStrRev(Ctl.OnAction, "!"))
If Ancien <> "" Then
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, Nouveau)
End If
End If
Next
Next
End Sub
'------------------------------------


Salutations!



"sabatier" a écrit dans le
message de news:

bonjour(c)
pourquoi, mes chers frères, cette proc ne veut pas marcher ; elle bogue
sur

If C.OnAction.....propriété ou méthode non gérée par cet objet..alors que
j'ai souvenance qu'elle fonctionnait lorsque le père brossollette me
m'avait

vendue, pas vraiment puisqu'il s'était contenté de me dire qu'il fallait
que

je pense à ses bonnes oeuvres....
voici donc l'objet du délit et je vous avoue que "mihi placerit bene
sortire

ex illo cacato"

Sub RecupererCheminsDesBoutons()
mauvais = "C:Sauvegarde Automatique"
bon = "C:Documents and Settingsjean-paulApplication
DataMicrosoftExcelXLSTART"
With Application.CommandBars(1)
For Each C In .Controls
If C.OnAction Like "*C:Sauvegarde Automatique*" Then _
C.OnAction = Application.Substitute(C.OnAction, mauvais, bon)
Next
End With
End Sub

gratia pro Deo
jps









--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
jps
bonjour michel
je crois bien que c'est; grâce à toi, la première fois que je vais faire un
tour dans cet explorateur d'objets et le questionne de la sorte : hyper
enrichissant, ce truc...
et si j'ai tout bien compris, je pense qu'il faille que je remplace le Type
1 par le Type 12, même si je ne suis pas très certain que les boutons que
l'on peut ajouter sous Nouveau Menu soient des msoControlButtonPopup...
n'étant plus sur le même ordi, je ne peux pas faire l'essai right now...
à suivre donc et encore merci
jps

"Michel Gaboly" a écrit dans le message de
news:
De rien, Jean-paul ;-))

Dans l'explorateur d'objets, clique sur CommandBarButton dans la première
colonne, puis sur Type dans la seconde.

Clique ensuite sur le point d'interrogation (symbole de l'aide) situé DANS
la

fenêtre de l'explorateur d'objets.

Tu as alors la liste des types, msoControlButton apparaissant en premier.

Retourne dans l'explorateur d'objet, et dans la fenêtre de recherche,
entre

msoControlButton (éventuellement par Copier/Coller) et appuie sur Enter.

La valeur de la constante apparaît tout en bas de l'explorateur d'objets ;
elle est égale à 1.



bonjour denis et bon réveil
enfin, pas si bon que cela puisque je vais te demander de me rendre une
partie au moins de mon argent puisque ma satisfaction n'a pas été
garantie


100 %....
je plaisante bien sûr puisque ta proc a marché du feu de Dieu pour tous
les


boutons des BO sauf pour les suivants :

Application.CommandBars("Menu contextuel personnalisé
2831375").Controls.Add


_
Type:=msoControlButton, Id:)50, Before:=1

j'ai bien essayé de changer le "type = 1" (c'est quoi ce Type que je
n'ai


retrouvé nulle part dans l'aide?) mais oualou de chez oualaou, zont pas
bronché d'un eta d'epsilon mes petits boutons que j'ai mis avec Nouveau
Menu


puis déferlante de popups....dans la Worksheet Menu Bar....

question : que faut-il ajouter à ta proc pour qu'elle prenne en charge
les


boutons de ce type?

tu me diras que je peux tous leur réaffecter la macro mais c'est là
qu'ils


sont le plus nombreux, ces petits salopards...
merci pour ta nouvelle étude

merci aussi à toi, michel G pour ta réponse : ta proc avec Debug Print
fait


bien apparaître, dans la fenêtre Exécution, les menus contextuels que
j'ai


ajouté à la barre 1 et dont denis va se faire un plaisir à me changer le
chemin d'accès qui, suite à une mauvaise manip' est passé chez
l'ennemi....



à +
jps

"michdenis" a écrit dans le message de
news:
Bonjour JPS,

Essaie ceci ,

Satisfaction garantie ou Argent remis !

Au fait, c'est quoi le tarif ici quand on n'est pas MVP ?

;-))


'Prudence lors de tes tests ....!

'Rien d'autre à faire que de copier la procécure dans
' un module de ton classeur et de l'exécuter

'------------------------------------
Sub Mise_A_Jour_Mes_Boutons()

Dim Ancien As String, Nouveau As String
Dim A As Integer

Nouveau = "'" & ThisWorkbook.FullName & "'!"
For A = 1 To Application.CommandBars.Count
For Each Ctl In CommandBars(A).Controls
If Ctl.Type = 1 Then
Ancien = Left(Ctl.OnAction, InStrRev(Ctl.OnAction, "!"))
If Ancien <> "" Then
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, Nouveau)
End If
End If
Next
Next
End Sub
'------------------------------------


Salutations!



"sabatier" a écrit dans le
message de news:

bonjour(c)
pourquoi, mes chers frères, cette proc ne veut pas marcher ; elle
bogue



sur
If C.OnAction.....propriété ou méthode non gérée par cet objet..alors
que



j'ai souvenance qu'elle fonctionnait lorsque le père brossollette me
m'avait

vendue, pas vraiment puisqu'il s'était contenté de me dire qu'il
fallait



que
je pense à ses bonnes oeuvres....
voici donc l'objet du délit et je vous avoue que "mihi placerit bene
sortire

ex illo cacato"

Sub RecupererCheminsDesBoutons()
mauvais = "C:Sauvegarde Automatique"
bon = "C:Documents and Settingsjean-paulApplication
DataMicrosoftExcelXLSTART"
With Application.CommandBars(1)
For Each C In .Controls
If C.OnAction Like "*C:Sauvegarde Automatique*" Then _
C.OnAction = Application.Substitute(C.OnAction, mauvais, bon)
Next
End With
End Sub

gratia pro Deo
jps









--
Cordialement,

Michel Gaboly
http://www.gaboly.com






Avatar
Michel Gaboly
De rien Jean-Paul ;-))

C'est vrai qu'on a souvent tendance à trop le négliger, ce pauvre
explorateur ;-)))


bonjour michel
je crois bien que c'est; grâce à toi, la première fois que je vais faire un
tour dans cet explorateur d'objets et le questionne de la sorte : hyper
enrichissant, ce truc...
et si j'ai tout bien compris, je pense qu'il faille que je remplace le Type
1 par le Type 12, même si je ne suis pas très certain que les boutons que
l'on peut ajouter sous Nouveau Menu soient des msoControlButtonPopup...
n'étant plus sur le même ordi, je ne peux pas faire l'essai right now...
à suivre donc et encore merci
jps

"Michel Gaboly" a écrit dans le message de
news:
De rien, Jean-paul ;-))

Dans l'explorateur d'objets, clique sur CommandBarButton dans la première
colonne, puis sur Type dans la seconde.

Clique ensuite sur le point d'interrogation (symbole de l'aide) situé DANS
la

fenêtre de l'explorateur d'objets.

Tu as alors la liste des types, msoControlButton apparaissant en premier.

Retourne dans l'explorateur d'objet, et dans la fenêtre de recherche,
entre

msoControlButton (éventuellement par Copier/Coller) et appuie sur Enter.

La valeur de la constante apparaît tout en bas de l'explorateur d'objets ;
elle est égale à 1.



bonjour denis et bon réveil
enfin, pas si bon que cela puisque je vais te demander de me rendre une
partie au moins de mon argent puisque ma satisfaction n'a pas été
garantie


100 %....
je plaisante bien sûr puisque ta proc a marché du feu de Dieu pour tous
les


boutons des BO sauf pour les suivants :

Application.CommandBars("Menu contextuel personnalisé
2831375").Controls.Add


_
Type:=msoControlButton, Id:)50, Before:=1

j'ai bien essayé de changer le "type = 1" (c'est quoi ce Type que je
n'ai


retrouvé nulle part dans l'aide?) mais oualou de chez oualaou, zont pas
bronché d'un eta d'epsilon mes petits boutons que j'ai mis avec Nouveau
Menu


puis déferlante de popups....dans la Worksheet Menu Bar....

question : que faut-il ajouter à ta proc pour qu'elle prenne en charge
les


boutons de ce type?

tu me diras que je peux tous leur réaffecter la macro mais c'est là
qu'ils


sont le plus nombreux, ces petits salopards...
merci pour ta nouvelle étude

merci aussi à toi, michel G pour ta réponse : ta proc avec Debug Print
fait


bien apparaître, dans la fenêtre Exécution, les menus contextuels que
j'ai


ajouté à la barre 1 et dont denis va se faire un plaisir à me changer le
chemin d'accès qui, suite à une mauvaise manip' est passé chez
l'ennemi....



à +
jps

"michdenis" a écrit dans le message de
news:
Bonjour JPS,

Essaie ceci ,

Satisfaction garantie ou Argent remis !

Au fait, c'est quoi le tarif ici quand on n'est pas MVP ?

;-))


'Prudence lors de tes tests ....!

'Rien d'autre à faire que de copier la procécure dans
' un module de ton classeur et de l'exécuter

'------------------------------------
Sub Mise_A_Jour_Mes_Boutons()

Dim Ancien As String, Nouveau As String
Dim A As Integer

Nouveau = "'" & ThisWorkbook.FullName & "'!"
For A = 1 To Application.CommandBars.Count
For Each Ctl In CommandBars(A).Controls
If Ctl.Type = 1 Then
Ancien = Left(Ctl.OnAction, InStrRev(Ctl.OnAction, "!"))
If Ancien <> "" Then
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, Nouveau)
End If
End If
Next
Next
End Sub
'------------------------------------


Salutations!



"sabatier" a écrit dans le
message de news:

bonjour(c)
pourquoi, mes chers frères, cette proc ne veut pas marcher ; elle
bogue



sur
If C.OnAction.....propriété ou méthode non gérée par cet objet..alors
que



j'ai souvenance qu'elle fonctionnait lorsque le père brossollette me
m'avait

vendue, pas vraiment puisqu'il s'était contenté de me dire qu'il
fallait



que
je pense à ses bonnes oeuvres....
voici donc l'objet du délit et je vous avoue que "mihi placerit bene
sortire

ex illo cacato"

Sub RecupererCheminsDesBoutons()
mauvais = "C:Sauvegarde Automatique"
bon = "C:Documents and Settingsjean-paulApplication
DataMicrosoftExcelXLSTART"
With Application.CommandBars(1)
For Each C In .Controls
If C.OnAction Like "*C:Sauvegarde Automatique*" Then _
C.OnAction = Application.Substitute(C.OnAction, mauvais, bon)
Next
End With
End Sub

gratia pro Deo
jps









--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com




Avatar
michdenis
Bonjour JPS,

" Application.CommandBars("Menu contextuel personnalisé 2831375").Controls.Add ... "

Est-ce que cette barre d'outils est issue du même classeur ou provient de ton fichier "Perso.xls".

Je te propose une macro qui devrait traiter tous les contrôles de toutes les barres d'outils sauf si certaines sont issues
d'un fichier .xla . Évidemment, je n'ai pas testé la macro... j'ai un cobaye professionnel sur les BO... je ne vais pas m'en
priver ...!

Les précautions d'usage s'applique !!!

'--------------------------------------------
Sub Mise_A_Jour_Mes_Boutons()

Dim Ancien As String, Nouveau As String
Dim A As Integer, MonPerso As String
Dim Ctl As Object

With Application.FileSearch
.NewSearch
.LookIn = "c:"
.SearchSubFolders = True
.Filename = "Perso.xls"
If .Execute > 0 Then
MonPerso = "'" & .FoundFiles(1) & "'!"
End If
End With

On Error Resume Next
Nouveau = "'" & ThisWorkbook.FullName & "'!"
For A = 1 To Application.CommandBars.Count
For Each Ctl In CommandBars(A).Controls
Ancien = Left(Ctl.OnAction, InStrRev(Ctl.OnAction, "!"))
If Err = 0 Then
If Ctl.Caption = "&Bouton personnalisé" Then Stop
If Ancien <> "" Then
If InStr(1, Ancien, "Perso.xls", vbTextCompare) > 0 Then
If MonPerso = "" Then
MsgBox "Le fichier Perso.xls est manquant." & vbCrLf & _
"Impossible de réaffecter les commandes de cette." & _
"barre d'outils : " & CommandBars(A).Name
Else
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, MonPerso)
End If
ElseIf InStr(1, Ancien, "xla", vbTextCompare) = 0 Then
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, Nouveau)
End If
End If
Else
Err = 0
End If
Next
Next
End Sub
'--------------------------------------------


Salutations!



"sabatier" a écrit dans le message de
news:%23%
bonjour denis et bon réveil
enfin, pas si bon que cela puisque je vais te demander de me rendre une
partie au moins de mon argent puisque ma satisfaction n'a pas été garantie
100 %....
je plaisante bien sûr puisque ta proc a marché du feu de Dieu pour tous les
boutons des BO sauf pour les suivants :

Application.CommandBars("Menu contextuel personnalisé 2831375").Controls.Add
_
Type:=msoControlButton, Id:)50, Before:=1

j'ai bien essayé de changer le "type = 1" (c'est quoi ce Type que je n'ai
retrouvé nulle part dans l'aide?) mais oualou de chez oualaou, zont pas
bronché d'un eta d'epsilon mes petits boutons que j'ai mis avec Nouveau Menu
puis déferlante de popups....dans la Worksheet Menu Bar....

question : que faut-il ajouter à ta proc pour qu'elle prenne en charge les
boutons de ce type?

tu me diras que je peux tous leur réaffecter la macro mais c'est là qu'ils
sont le plus nombreux, ces petits salopards...
merci pour ta nouvelle étude

merci aussi à toi, michel G pour ta réponse : ta proc avec Debug Print fait
bien apparaître, dans la fenêtre Exécution, les menus contextuels que j'ai
ajouté à la barre 1 et dont denis va se faire un plaisir à me changer le
chemin d'accès qui, suite à une mauvaise manip' est passé chez l'ennemi....

à +
jps



"michdenis" a écrit dans le message de
news:
Bonjour JPS,

Essaie ceci ,

Satisfaction garantie ou Argent remis !

Au fait, c'est quoi le tarif ici quand on n'est pas MVP ?

;-))


'Prudence lors de tes tests ....!

'Rien d'autre à faire que de copier la procécure dans
' un module de ton classeur et de l'exécuter

'------------------------------------
Sub Mise_A_Jour_Mes_Boutons()

Dim Ancien As String, Nouveau As String
Dim A As Integer

Nouveau = "'" & ThisWorkbook.FullName & "'!"
For A = 1 To Application.CommandBars.Count
For Each Ctl In CommandBars(A).Controls
If Ctl.Type = 1 Then
Ancien = Left(Ctl.OnAction, InStrRev(Ctl.OnAction, "!"))
If Ancien <> "" Then
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, Nouveau)
End If
End If
Next
Next
End Sub
'------------------------------------


Salutations!



"sabatier" a écrit dans le
message de news:

bonjour(c)
pourquoi, mes chers frères, cette proc ne veut pas marcher ; elle bogue
sur

If C.OnAction.....propriété ou méthode non gérée par cet objet..alors que
j'ai souvenance qu'elle fonctionnait lorsque le père brossollette me
m'avait

vendue, pas vraiment puisqu'il s'était contenté de me dire qu'il fallait
que

je pense à ses bonnes oeuvres....
voici donc l'objet du délit et je vous avoue que "mihi placerit bene
sortire

ex illo cacato"

Sub RecupererCheminsDesBoutons()
mauvais = "C:Sauvegarde Automatique"
bon = "C:Documents and Settingsjean-paulApplication
DataMicrosoftExcelXLSTART"
With Application.CommandBars(1)
For Each C In .Controls
If C.OnAction Like "*C:Sauvegarde Automatique*" Then _
C.OnAction = Application.Substitute(C.OnAction, mauvais, bon)
Next
End With
End Sub

gratia pro Deo
jps








Avatar
michdenis
Attention, il faut enlever à la procédure soumise dans le message précédent la ligne de code suivante :

If Ctl.Caption = "&Bouton personnalisé" Then Stop

Elle n'était là que pour un petit test perso. J'ai omis de l'enlever ...elle n'a plus aucune utilité !!!
Sa présence arrêtera l'exécution de la macro le cas échéant et ce n'est sûrement pas désirable.


Salutations!



"michdenis" a écrit dans le message de news:
Bonjour JPS,

" Application.CommandBars("Menu contextuel personnalisé 2831375").Controls.Add ... "

Est-ce que cette barre d'outils est issue du même classeur ou provient de ton fichier "Perso.xls".

Je te propose une macro qui devrait traiter tous les contrôles de toutes les barres d'outils sauf si certaines sont issues
d'un fichier .xla . Évidemment, je n'ai pas testé la macro... j'ai un cobaye professionnel sur les BO... je ne vais pas m'en
priver ...!

Les précautions d'usage s'applique !!!

'--------------------------------------------
Sub Mise_A_Jour_Mes_Boutons()

Dim Ancien As String, Nouveau As String
Dim A As Integer, MonPerso As String
Dim Ctl As Object

With Application.FileSearch
.NewSearch
.LookIn = "c:"
.SearchSubFolders = True
.Filename = "Perso.xls"
If .Execute > 0 Then
MonPerso = "'" & .FoundFiles(1) & "'!"
End If
End With

On Error Resume Next
Nouveau = "'" & ThisWorkbook.FullName & "'!"
For A = 1 To Application.CommandBars.Count
For Each Ctl In CommandBars(A).Controls
Ancien = Left(Ctl.OnAction, InStrRev(Ctl.OnAction, "!"))
If Err = 0 Then
If Ctl.Caption = "&Bouton personnalisé" Then Stop
If Ancien <> "" Then
If InStr(1, Ancien, "Perso.xls", vbTextCompare) > 0 Then
If MonPerso = "" Then
MsgBox "Le fichier Perso.xls est manquant." & vbCrLf & _
"Impossible de réaffecter les commandes de cette." & _
"barre d'outils : " & CommandBars(A).Name
Else
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, MonPerso)
End If
ElseIf InStr(1, Ancien, "xla", vbTextCompare) = 0 Then
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, Nouveau)
End If
End If
Else
Err = 0
End If
Next
Next
End Sub
'--------------------------------------------


Salutations!



"sabatier" a écrit dans le message de
news:%23%
bonjour denis et bon réveil
enfin, pas si bon que cela puisque je vais te demander de me rendre une
partie au moins de mon argent puisque ma satisfaction n'a pas été garantie
100 %....
je plaisante bien sûr puisque ta proc a marché du feu de Dieu pour tous les
boutons des BO sauf pour les suivants :

Application.CommandBars("Menu contextuel personnalisé 2831375").Controls.Add
_
Type:=msoControlButton, Id:)50, Before:=1

j'ai bien essayé de changer le "type = 1" (c'est quoi ce Type que je n'ai
retrouvé nulle part dans l'aide?) mais oualou de chez oualaou, zont pas
bronché d'un eta d'epsilon mes petits boutons que j'ai mis avec Nouveau Menu
puis déferlante de popups....dans la Worksheet Menu Bar....

question : que faut-il ajouter à ta proc pour qu'elle prenne en charge les
boutons de ce type?

tu me diras que je peux tous leur réaffecter la macro mais c'est là qu'ils
sont le plus nombreux, ces petits salopards...
merci pour ta nouvelle étude

merci aussi à toi, michel G pour ta réponse : ta proc avec Debug Print fait
bien apparaître, dans la fenêtre Exécution, les menus contextuels que j'ai
ajouté à la barre 1 et dont denis va se faire un plaisir à me changer le
chemin d'accès qui, suite à une mauvaise manip' est passé chez l'ennemi....

à +
jps



"michdenis" a écrit dans le message de
news:
Bonjour JPS,

Essaie ceci ,

Satisfaction garantie ou Argent remis !

Au fait, c'est quoi le tarif ici quand on n'est pas MVP ?

;-))


'Prudence lors de tes tests ....!

'Rien d'autre à faire que de copier la procécure dans
' un module de ton classeur et de l'exécuter

'------------------------------------
Sub Mise_A_Jour_Mes_Boutons()

Dim Ancien As String, Nouveau As String
Dim A As Integer

Nouveau = "'" & ThisWorkbook.FullName & "'!"
For A = 1 To Application.CommandBars.Count
For Each Ctl In CommandBars(A).Controls
If Ctl.Type = 1 Then
Ancien = Left(Ctl.OnAction, InStrRev(Ctl.OnAction, "!"))
If Ancien <> "" Then
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, Nouveau)
End If
End If
Next
Next
End Sub
'------------------------------------


Salutations!



"sabatier" a écrit dans le
message de news:

bonjour(c)
pourquoi, mes chers frères, cette proc ne veut pas marcher ; elle bogue
sur

If C.OnAction.....propriété ou méthode non gérée par cet objet..alors que
j'ai souvenance qu'elle fonctionnait lorsque le père brossollette me
m'avait

vendue, pas vraiment puisqu'il s'était contenté de me dire qu'il fallait
que

je pense à ses bonnes oeuvres....
voici donc l'objet du délit et je vous avoue que "mihi placerit bene
sortire

ex illo cacato"

Sub RecupererCheminsDesBoutons()
mauvais = "C:Sauvegarde Automatique"
bon = "C:Documents and Settingsjean-paulApplication
DataMicrosoftExcelXLSTART"
With Application.CommandBars(1)
For Each C In .Controls
If C.OnAction Like "*C:Sauvegarde Automatique*" Then _
C.OnAction = Application.Substitute(C.OnAction, mauvais, bon)
Next
End With
End Sub

gratia pro Deo
jps








Avatar
sabatier
aie aie aie, denis....
j'ai testé moi et me suis retrouvé avec tous mes chemins de bouton "ancienne
vague" alors quavec ta première proc, je les avais bien remis dans le bon
sens de l'histoire....
et puis, j'ai dû stopper la proc car elle ne semblait plus vouloir finir
mais elle avait déjà causé les quelques petits malheurs ci-dessus...
tu sais, denis, ce que je souhaiterais c'est que, dans le style très fluide
de ta première proc, on puisse traiter aussi ces boutons que tu crées en
montant en un premier temps dans la Worksheet Menu Bar le bouton Nouveau
Menu de la boîte Outils/Personnaliser puis en installant dans le menu
contextuel qui se déroule sous Nouveau Menu (comme se déroule Nouveau,
Ouvrir, Fermer etc... sous Fichier) les mêmes boutons que ceux qu'on
installe directement dans une BO ; je suppose que dans le cas du menu
contextuel, ces boutons ne s'appellent pas comme les autres....
m'as-tu compris? j'espère car tu m'as trop fait peur avec ta proc qui
pourtant avait fière allure : on aurait dit la petite japonaise sur le
tatami de sa médaille d'or....
allez, retravaille un peu denis, tu me sembles un peu décontract' sur ce
coup!!!!
jps

"michdenis" a écrit dans le message de
news:eZZ%
Attention, il faut enlever à la procédure soumise dans le message
précédent la ligne de code suivante :


If Ctl.Caption = "&Bouton personnalisé" Then Stop

Elle n'était là que pour un petit test perso. J'ai omis de l'enlever
...elle n'a plus aucune utilité !!!

Sa présence arrêtera l'exécution de la macro le cas échéant et ce n'est
sûrement pas désirable.



Salutations!



"michdenis" a écrit dans le message de
news:

Bonjour JPS,

" Application.CommandBars("Menu contextuel personnalisé
2831375").Controls.Add ... "


Est-ce que cette barre d'outils est issue du même classeur ou provient de
ton fichier "Perso.xls".


Je te propose une macro qui devrait traiter tous les contrôles de toutes
les barres d'outils sauf si certaines sont issues

d'un fichier .xla . Évidemment, je n'ai pas testé la macro... j'ai un
cobaye professionnel sur les BO... je ne vais pas m'en

priver ...!

Les précautions d'usage s'applique !!!

'--------------------------------------------
Sub Mise_A_Jour_Mes_Boutons()

Dim Ancien As String, Nouveau As String
Dim A As Integer, MonPerso As String
Dim Ctl As Object

With Application.FileSearch
.NewSearch
.LookIn = "c:"
.SearchSubFolders = True
.Filename = "Perso.xls"
If .Execute > 0 Then
MonPerso = "'" & .FoundFiles(1) & "'!"
End If
End With

On Error Resume Next
Nouveau = "'" & ThisWorkbook.FullName & "'!"
For A = 1 To Application.CommandBars.Count
For Each Ctl In CommandBars(A).Controls
Ancien = Left(Ctl.OnAction, InStrRev(Ctl.OnAction, "!"))
If Err = 0 Then
If Ctl.Caption = "&Bouton personnalisé" Then Stop
If Ancien <> "" Then
If InStr(1, Ancien, "Perso.xls", vbTextCompare) > 0 Then
If MonPerso = "" Then
MsgBox "Le fichier Perso.xls est manquant." &
vbCrLf & _

"Impossible de réaffecter les commandes de
cette." & _

"barre d'outils : " & CommandBars(A).Name
Else
Ctl.OnAction = Replace(Ctl.OnAction, Ancien,
MonPerso)

End If
ElseIf InStr(1, Ancien, "xla", vbTextCompare) = 0 Then
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, Nouveau)
End If
End If
Else
Err = 0
End If
Next
Next
End Sub
'--------------------------------------------


Salutations!



"sabatier" a écrit dans le
message de

news:%23%
bonjour denis et bon réveil
enfin, pas si bon que cela puisque je vais te demander de me rendre une
partie au moins de mon argent puisque ma satisfaction n'a pas été garantie
100 %....
je plaisante bien sûr puisque ta proc a marché du feu de Dieu pour tous
les

boutons des BO sauf pour les suivants :

Application.CommandBars("Menu contextuel personnalisé
2831375").Controls.Add

_
Type:=msoControlButton, Id:)50, Before:=1

j'ai bien essayé de changer le "type = 1" (c'est quoi ce Type que je n'ai
retrouvé nulle part dans l'aide?) mais oualou de chez oualaou, zont pas
bronché d'un eta d'epsilon mes petits boutons que j'ai mis avec Nouveau
Menu

puis déferlante de popups....dans la Worksheet Menu Bar....

question : que faut-il ajouter à ta proc pour qu'elle prenne en charge les
boutons de ce type?

tu me diras que je peux tous leur réaffecter la macro mais c'est là qu'ils
sont le plus nombreux, ces petits salopards...
merci pour ta nouvelle étude

merci aussi à toi, michel G pour ta réponse : ta proc avec Debug Print
fait

bien apparaître, dans la fenêtre Exécution, les menus contextuels que j'ai
ajouté à la barre 1 et dont denis va se faire un plaisir à me changer le
chemin d'accès qui, suite à une mauvaise manip' est passé chez
l'ennemi....


à +
jps



"michdenis" a écrit dans le message de
news:
Bonjour JPS,

Essaie ceci ,

Satisfaction garantie ou Argent remis !

Au fait, c'est quoi le tarif ici quand on n'est pas MVP ?

;-))


'Prudence lors de tes tests ....!

'Rien d'autre à faire que de copier la procécure dans
' un module de ton classeur et de l'exécuter

'------------------------------------
Sub Mise_A_Jour_Mes_Boutons()

Dim Ancien As String, Nouveau As String
Dim A As Integer

Nouveau = "'" & ThisWorkbook.FullName & "'!"
For A = 1 To Application.CommandBars.Count
For Each Ctl In CommandBars(A).Controls
If Ctl.Type = 1 Then
Ancien = Left(Ctl.OnAction, InStrRev(Ctl.OnAction, "!"))
If Ancien <> "" Then
Ctl.OnAction = Replace(Ctl.OnAction, Ancien, Nouveau)
End If
End If
Next
Next
End Sub
'------------------------------------


Salutations!



"sabatier" a écrit dans le
message de news:

bonjour(c)
pourquoi, mes chers frères, cette proc ne veut pas marcher ; elle bogue
sur

If C.OnAction.....propriété ou méthode non gérée par cet objet..alors
que


j'ai souvenance qu'elle fonctionnait lorsque le père brossollette me
m'avait

vendue, pas vraiment puisqu'il s'était contenté de me dire qu'il fallait
que

je pense à ses bonnes oeuvres....
voici donc l'objet du délit et je vous avoue que "mihi placerit bene
sortire

ex illo cacato"

Sub RecupererCheminsDesBoutons()
mauvais = "C:Sauvegarde Automatique"
bon = "C:Documents and Settingsjean-paulApplication
DataMicrosoftExcelXLSTART"
With Application.CommandBars(1)
For Each C In .Controls
If C.OnAction Like "*C:Sauvegarde Automatique*" Then _
C.OnAction = Application.Substitute(C.OnAction, mauvais, bon)
Next
End With
End Sub

gratia pro Deo
jps














1 2