Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

transfer de macro dans autre fichier

7 réponses
Avatar
Pat
Bonsoir toutes et tous,
J'ai un formulaire excel plein de données avec des macros abimées et qui
"beuguent" par des mauvais plaisants
je voudrais remplacer le jeu de macros par l'original "non bricolé" par les
mauvais plaisant car j'ai un formulaire tout neuf avec les bonnes macros.
Comment faire ?
[Je ne peut pas resaisir toute les données il y en a trop avec pleins de
liens sur d'autres onglets]
Si c'est trop difficile à faire , laissez tomber ma demande
Merci

7 réponses

Avatar
michdenis
As-tu essayé de le faire par un copier-coller du code ?
C'est sûrement la manière la plus facile... cela peut
aussi se faire par macro mais si c'est seulement
pour une occurrence ... Il faut simplement que tu
t'assures de copier le code dans le module équivalent.



"Pat" a écrit dans le message de groupe de discussion :

Bonsoir toutes et tous,
J'ai un formulaire excel plein de données avec des macros abimées et qui
"beuguent" par des mauvais plaisants
je voudrais remplacer le jeu de macros par l'original "non bricolé" par les
mauvais plaisant car j'ai un formulaire tout neuf avec les bonnes macros.
Comment faire ?
[Je ne peut pas resaisir toute les données il y en a trop avec pleins de
liens sur d'autres onglets]
Si c'est trop difficile à faire , laissez tomber ma demande
Merci
Avatar
Pat
Oui c'est ce que je pensais : copier le code dans le module équivalent mais
il y en a beaucoup :((
Par contre si tu as une solution macro je suis preneur car de temps en temps
je reçois des documents que les gens ont bricolés et je pourrais ainsi tous
les remettre conforme d'un clic.
En fait je pense qu'ils utilisent une macro perso qui écrase du code dans
les miennes, sans le faire exprés.
Mais je n'ai jamais trouvé le sub responsable.
Je te précise que c'est un menu déroulant personnalisé qui reste grisé et
que je ne peux plus utiliser pour rajouter ou supprimer des colonnes (dans
mon cas).
C'est génant car répétitif et je suis obligé d'ouvrir les macros et
d'executer les sub correspondant à la main
C'est pour cela que je souhaiterais remettre les fonctions d'origine du menu
déroulant neutralisé. Je n'ai pas compris pourquoi le menu reste grisé.
Avatar
michdenis
Ce qui suit copie toutes les feuilles, le code des module standard, de classe,
les formulaires vers un nouveau classeur.

'---------------------------------------------
Sub Copie_Vers_Autre_Classeur()
Dim Wk As Workbook, Texte As String

'Copie toutes les feuilles vers un autre classeur vide
Sheets.Copy
Set Wk = ActiveWorkbook

For Each x In ThisWorkbook.VBProject.VBComponents
'Copie le code des feuilles et du ThisWorkbook
If x.Type = 100 Then
With x.CodeModule
Texte = .Lines(1, .CountOfLines)
End With
With Wk.VBProject.VBComponents(x.Name).CodeModule
.AddFromString Texte
End With
Texte = ""
'pour les modules standard et de classe et formulaire
'Exportation -> importation
ElseIf x.Type = 1 Or x.Type = 2 Or x.Type = 3 Then
'Chemin à adapter
ThisWorkbook.VBProject.VBComponents(x.Name).Export "c:UsersPowerUser" & x.Name
Wk.VBProject.VBComponents.Import "c:UsersPowerUser" & x.Name
Kill "c:UsersPowerUser" & x.Name
End If
Next
End Sub
'---------------------------------------------




"Pat" a écrit dans le message de groupe de discussion :

Oui c'est ce que je pensais : copier le code dans le module équivalent mais
il y en a beaucoup :((
Par contre si tu as une solution macro je suis preneur car de temps en temps
je reçois des documents que les gens ont bricolés et je pourrais ainsi tous
les remettre conforme d'un clic.
En fait je pense qu'ils utilisent une macro perso qui écrase du code dans
les miennes, sans le faire exprés.
Mais je n'ai jamais trouvé le sub responsable.
Je te précise que c'est un menu déroulant personnalisé qui reste grisé et
que je ne peux plus utiliser pour rajouter ou supprimer des colonnes (dans
mon cas).
C'est génant car répétitif et je suis obligé d'ouvrir les macros et
d'executer les sub correspondant à la main
C'est pour cela que je souhaiterais remettre les fonctions d'origine du menu
déroulant neutralisé. Je n'ai pas compris pourquoi le menu reste grisé.
Avatar
Pat
Merci, je vais adapter le sub à mon répertoire et tester.
Avatar
Pat
La macro ne fonctionne pas et génère l'erreur : la méthode à échouée au
niveau de la ligne "For Each x In ThisWorkbook.VBProject.VBComponents".
Je n'ai pas pu tester plus loin
Encore merci
Avatar
michdenis
| For Each x In ThisWorkbook.VBProject.VBComponents

Il n'y a aucune raison d'avoir une erreur ...
Sous excel 2003, barre des menus / outils / macros / sécurité /
éditeurs approuvés, Est-ce que les 2 cases à cocher dans le bas
de la fenêtre le sont ?

cependant, j'ai apporté une petite modification dans le cas
où un des modules feuilles serait vide

'---------------------------------------
Sub Copie_Vers_Autre_Classeur()
Dim Wk As Workbook, Texte As String
Dim x As Objects
'Copie toutes les feuilles vers un autre classeur vide
Sheets.Copy
Set Wk = ActiveWorkbook

On Error Resume Next
For Each x In ThisWorkbook.VBProject.VBComponents
'Copie le code des feuilles et du ThisWorkbook
If x.Type = 100 Then
With x.CodeModule
Texte = .Lines(1, .CountOfLines)
End With
If Err = 0 Then
With Wk.VBProject.VBComponents(x.Name).CodeModule
.AddFromString Texte
End With
Else
Err = 0
End If
Texte = ""
'pour les modules standard et de classe et formulaire
'Exportation -> importation
ElseIf x.Type = 1 Or x.Type = 2 Or x.Type = 3 Then
'Chemin à adapter
ThisWorkbook.VBProject.VBComponents(x.Name).Export "c:UsersPowerUser" & x.Name
Wk.VBProject.VBComponents.Import "c:UsersPowerUser" & x.Name
Kill "c:UsersPowerUser" & x.Name
End If
Next
End Sub
'---------------------------------------



"Pat" a écrit dans le message de groupe de discussion :
eZRvWp#
La macro ne fonctionne pas et génère l'erreur : la méthode à échouée au
niveau de la ligne "For Each x In ThisWorkbook.VBProject.VBComponents".
Je n'ai pas pu tester plus loin
Encore merci
Avatar
Pat
Non je n'avais que la première case cochée. Je coche donc les 2.
J'essaye demain avec ta modif. car en effet il y a 2 feuilles vides en fin
des classeurs
Encore merci