Transférer des macros

Bonjour,

Je souhaite transférer les macros que j'ai créee sur mon poste vers un autre poste.

Comment faire?

Merci

Bonjour chris95,

Dans l'éditeur visualbasic, fais un clic droit sur le ou les modules contenant les macros puis clique sur Exporter un fichier. Tu te retrouves avec un fichier de type "*.bas" si tu as exporté un module, ou un fichier de type "*.frm" si tu as exporté un userform.

Dans le fichier recevant les macros et dans l'éditeur VBA fais un clic droit sur le nom du fichier puis clique sur Importer un fichier. Dans la boîte de dialogue qui s'ouvre, tu vas chercher le fichier que tu as exporté précédemment.

Super, merci vba_new

...et pour exporter toutes les macros d'un coup, komankonfé ?

Merci.

Salut gloub,

Je ne sais pas si c'est possible sans macro alors en voici une qui t'exporte tous les userforms, modules, modules de classe contenus dans le classeur actif :

Sub ExportToutesMacros()
Dim i As Integer, repertoire As FileDialog, titre As String, rep_path As String
    Set repertoire = Application.FileDialog(msoFileDialogFolderPicker)
    With repertoire
        titre = .Title
        .Title = "Choisir le dossier de destination"
        .Show    ' sélectionner le dossier où se trouveront les modules, userforms et cie
        rep_path = .InitialFileName
    End With
    With ActiveWorkbook.VBProject
        For i = 1 To .VBComponents.Count
        With .VBComponents(i)
            If .Type <= 3 Then
                Select Case .Type
                    Case 1: .Export rep_path & .Name & ".bas"
                    Case 2: .Export rep_path & .Name & ".cls"
                    Case 3: .Export rep_path & .Name & ".frm"
                End Select
            End If
            End With
        Next
    End With
    repertoire.Title = titre
End Sub

Merci pour ta réponse.

J'ai lancé la macro, et j'obtiens un message d'erreur. Keskispass ?

msg

Bonjour Gloub

Merci de bien vouloir lire

https://forum.excel-pratique.com/excel/explications-et-regles-a-respecter-t13.html

et, en particulier, le point 4

Cordialement

Désolé. Je n'écris jamais en style SMS, j'ai horreur de ça. J'espère que mes messages sont intelligibles et dépourvus de fautes de français et d'orthographe. Ecrire "késkispass" à la fin du message, c'est juste l'équivalent d'un smiley.

Mais bon, si c'est mal, je le ferai plus.

Re,

Pour ton erreur je vois pas du tout. D'autant plus que tu ne dis pas à quel ligne ça coince. Si tu peux joindre ton fichier en gardant quelques macros, il serait plus facile de voir d'où vient le problème.

Merci pour ta réponse.

Voilà le fichier.

Ça coince au moment où Excel me demande l'emplacement du fichier à créer.

Une fois réimportés, est-ce que les modules seront réorganisés (actuellement, mon fichier PERSO.xls comporte plus de 100 modules, dont beaucoup sont vides. C'est la trace fossile de plein de macros créées il y a très longtemps, puis effacées, mais je n'ose pas les effacer) ?

12perso.zip (22.79 Ko)

Bonjour,

Je m'insère juste dans ce fil pour te dire que tu peux supprimer tous les modules vides. Ils ne servent à rien dans ton fichier.

Pour le reste je laisse VBA New continuer sur ce fil.

Amicalement

Dan

Salut dan, re gloub,

J'ai fait un test sur mon ordi et ça marche. J'en déduis donc que la macro ne marche pas sur tous les postes. Il me semble avoir vu que la propriété FileDialog ne marche pas partout. Voici une autre méthode qui te permettra de choisir ton dossier :

Sub ExportToutesMacros()
Dim i As Integer, rep_path As String
Dim objShell As Object, objFolder As Object
Dim BIF_RETURNONLYFSDIRS As Long

    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(0, "Choisir le dossier de destination", BIF_RETURNONLYFSDIRS)

    If Not objFolder Is Nothing Then
        rep_path = objFolder.Items.Item.Path & "\"
        With ActiveWorkbook.VBProject
            For i = 1 To .VBComponents.Count
                With .VBComponents(i)
                    If .Type <= 3 Then
                        Select Case .Type
                            Case 1: .Export rep_path & .Name & ".bas"
                            Case 2: .Export rep_path & .Name & ".cls"
                            Case 3: .Export rep_path & .Name & ".frm"
                        End Select
                    End If
                End With
            Next
        End With
    Else
        MsgBox "Aucune sélection effectuée !"
    End If

    Set objShell = Nothing
    Set objFolder = Nothing
End Sub
gloub a écrit :

Une fois réimportés, est-ce que les modules seront réorganisés

Qu'entends-tu par "réorganisés" ?

Si tu veux supprimer les modules vides de macros, voici un code de silkyroad :

Sub supprimerTousModulesVides()
    Dim vbComp As Object
    Dim i As Integer, j As Integer

    For Each vbComp In ActiveWorkbook.VBProject.VBComponents
        If vbComp.Type = 1 Then
        MsgBox vbComp.Name
            i = vbComp.CodeModule.CountOfDeclarationLines + 1
            j = vbComp.CodeModule.CountOfLines
            If j < i Then ActiveWorkbook.VBProject.VBComponents.Remove vbComp
        End If
    Next
End Sub

Merci pour ta réponse.

Pas de bol : sur mon poste les 2 macros plantent.

Dans les 2 cas, j'obtiens le message :

"Erreur d'exécution '1004'

La méthode 'VBProject de l'objet '_Workbook' a échoué"

Je crois que, comme c'est pas vital, je vais faire le boulot à la main...

Autre réponse :

Qu'entends-tu par "réorganisés" ?

Je me demandais si, après l'export des modules, une fois les macros réimportées dans un autre fichier, je me retrouverais avec des modules vides et d'autres qui contiennent 2 ou 3 macros.

On va essayer un truc.

Dans l'éditeur VBA, va dans Outils / Références et essaie en activant la référence : Microsoft Visual Basic for Applications Extensibility 5.3

gloub a écrit :

Je me demandais si, après l'export des modules, une fois les macros réimportées dans un autre fichier, je me retrouverais avec des modules vides et d'autres qui contiennent 2 ou 3 macros.

Pour faire le ménage, utilise la 2è macro (après avoir activé la référence ci-dessus)

Merci pour ta persévérance, mais ça ne marche toujours pas.

On laisse tomber ?

Une dernière

Essaie en lançant la macro ExportToutesMacros de ce fichier (c'est le tien mais avec la macro) :

Sinon :

Essaie dans Outils / Macros / Sécurité / Editeurs approuvés et coche la case faire confiance au projet visual basic

Si ça marche pas j'abandonne

Ça marche !!!

Merci pour ta persévérance !

Rechercher des sujets similaires à "transferer macros"