Nom de macro qui change en fonction du répertoire ?

Bonjour à tous,
J’ai affecté une macro à plusieurs fichiers. Mes macros se trouvent dans un autre fichier , j’ai voulu changer de répertoire mes fichiers (copier/coller )mais j’ai remarqué l’impossibilité de lancer les macros, car elles font références à l’emplacement d’origine c’est à dire ( chemin du fichier + nom fichier et macro). Alors que dans mon fichier d’origine il y a juste le nom du fichier et le nom de la macro),donc je ne comprends pas lorsque je fais un copier coller le chemin du fichier de l’emplacement d’origine se met…
Avez-vous vous une idée pour pallier à ce problème ?
Merci d’avance et désolé si ce n’est pas très compréhensible !

bonjour,

peux-tu mettre le fichier contenant les macros et un des fichiers à traiter ? et expliquer ce qui ne fonctionne pas par une série d'actions que l'on peut reproduire ?

Bonjour,

Oui je ferai cela demain.

Bonne soirée !

Re-Bonjour,

J'ai mis en pièces jointes un screen du problème. En fait le fichier ci-dessous est un fichier qui utilise une macro du fichier "Recherches des fiches" sauf lorsque que je change de répertoire tout mon dossier le nom de la macro est précédée du chemin du fichier d'origine ....Je ne sais pas si tu comprends mieux le problème

Merci d'avance

capture

bonjour,

je ne suis pas sûr d'avoir compris le problème.

En fait j'ai fichier qu'il s'appelle Recherches des fiches qui a toutes les macros, en suite j'ai des fichiers comme celui de la capture d'écran qui reprennent les macros du fichier Recherches de fiches. Tout le dossier de basse est sur mon bureau quand je fais copier de mon dossier vers un répertoire le nom de la macro prends en plus le chemin du fichier "C:/.....", et donc je ne peux plus exécuter la macro.

Désolé pour l'incompréhension

re-bonjour,

peux-tu expliquer ce que tu fais exactement ? car j'ai essayé de reproduire ton problème et je n'y suis pas arrivé (-> pas parvenu à obtenir le problème que tu mentionnes).

bonjour,

c'est le problème du bouton, no ?

Vous copiez votre fichier complète et dans ce nouveau fichier les boutons utilisent encore l'ancien macro avec chemin et tout. Pourtant le nouveau fichier contient aussi les macros, c'est ca ?

Bonjour BsAlv,

Oui c'est cela .

Re H2so4,

Est-ce que tu peux expliquer toi ce que tu as fait cela sera peut-être plus simple?

Merci d'avance

alors ce sont des forms que vous utilisez, ce ne sont pas des activeX.

Je ne sais pas ce qu'il y a encore comme formes dans votre feuille (graphiques, ....) autrement il faut pour chaque form changer la macro

Vous pouvez aussi le faire avec cette macro, mais sauvegarder votre fichier et faitez le avec ce copy, parce qu'il changera le bouton, mais je ne suis pas sûr de reste.

Sub Boutons()
     On Error Resume Next
     For Each shp In ActiveSheet.Shapes
          sp = Split(shp.OnAction, "!")
          shp.OnAction = sp(UBound(sp))
     Next
End Sub

Ca fonctionne ?

re Zifox

Re H2so4,

Est-ce que tu peux expliquer toi ce que tu as fait cela sera peut-être plus simple?

Merci d'avance

j'avais pas capté qu'il s'agissait d'un problème de bouton. Auquel cas, le problème que tu rencontres me paraît tout-à-fait normal. tu devras faire une correction, soit manuellement soit via une macro (cfr proposition de BsAlv), Excel ne peux pas déterminer à ta place où tu as déplacé le fichier qui contient les macros.

Merciii BsAlv!

Je test cela demain et je te redis!

Et merci H2so4!

Je vous tiens au courant demain !

Bonne soirée

une amélioration (seulement les shapes du type 1=autoshape seront traité)

voir https://docs.microsoft.com/en-us/office/vba/api/office.msoshapetype (les différents types de shapes)

Sub Boutons()
     On Error Resume Next
     For Each shp In ActiveSheet.Shapes
          MsgBox "topleft : " & shp.TopLeftCell.Address & vbLf & "nom : " & shp.Name & vbLf & "type : " & shp.Type
          If shp.Type = 1 Then     'seulement les autoshapes
               sp = Split(shp.OnAction, "!")
               shp.OnAction = sp(UBound(sp))
          End If
     Next
End Sub

Merci beaucoup pour ton aide BsAlv je testerai cela demain !👍

Bonne soirée !

Bonjour BsAlv,

J’ai testé et cela fonctionne !

Sauf que j’aurais besoin de garder le nom du classeur devant le nom de la macro, est-ce possible ?

Merci beaucoup pour votre aide!!!

re, bizarre, je l'avais testé une fois hier, alors il faut ajouter Thisworkbook.name et un point d'exclamation , je suppose ?

Sub Boutons()
     On Error Resume Next
     For Each shp In ActiveSheet.Shapes
          MsgBox "topleft : " & shp.TopLeftCell.Address & vbLf & "nom : " & shp.Name & vbLf & "type : " & shp.Type
          If shp.Type = 1 Then     'seulement les autoshapes
               sp = Split(shp.OnAction, "!")
               shp.OnAction = ThisWorkbook.Name & "!" & sp(UBound(sp)) ' >>>>> nouvelle ligne
          End If
     Next
End Sub
Rechercher des sujets similaires à "nom macro qui change fonction repertoire"