MAJ d'un fichier

Bonjour à tous,

alors je m'explique de façon plus détaillée. J'utilise Excel 2003 SP3, en windows XP SP3.

J'ai créer un classeur de travail "TRAVAIL" (protégé par un mot de passe VBA), avec pas mal de macros, dont le module "EffaceN".

Par ailleurs, j'ai prévu dans mon classeur "TRAVAIL" une possibilité de mise à jour, par le biais d'un bouton dans ma barre d'outils, avec ce code précis, qui me permet d'ouvrir un fichier précis (Maj.xls) :

Sub Maj()

If Dir("G:\BIBLIO\EXPERT\MAJ\Maj-R.xls", vbDirectory) <> "" Then

Workbooks.Open "G:\BIBLIO\EXPERT\MAJ\Maj.xls"

Else

MsgBox ("Pas de mise à jour disponible")

End If

End Sub

Alors, tout mon problème réside dans le fait que je souhaite modifier une partie de mon module "EffaceN" dans tous mes classeurs "TRAVAIL" éparpillés dans mon entreprise. Mais si je dois remplacer tout le module, ça me va aussi, pas de problème.

Donc, je me demande comment je peux, dans un fichier nommé "MAJ", faire supprimer le module "EffaceN" existant dans mon "TRAVAIL", et le substituer par un module "EffaceN" qui serait contenu dans mon fichier Maj.xls.

Merci de votre aide, car je sèche un peu.

Yann

tout dépend du nombre de "remplacement" que tu as a faire, une dizaine, fait le à la main. Une centaine, on pourrait regarder pour une solution.

Bonjour,

ben, il y a plus d'une centaine de fichiers en circulation dans mon entreprise, donc cela en fait pas mal tout de même....

Une solution par "mise à jour" sera sûrement le mieux.

merci de ton aide.

Yann

Le problème, c'est que ton code est protégé par mot de passe. Sans mot de passe tu aurais pu te servir de cette procedure:

Public Sub MajModule()
    'On Error GoTo Erreur
    Application.ScreenUpdating = False

    Dim Source As Workbook
    Set Source = ThisWorkbook

    Dim strModule As String
    With Source.VBProject.VBComponents("EffaceN").CodeModule
        strModule = .Lines(1, .CountOfLines)
    End With
    strModule = Replace(strModule, "Option Explicit", "")

    Dim NomClasseur As Variant
    NomClasseur = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls", , "Fichier à modifier")

    If Not NomClasseur = False Then
        Workbooks.Open NomClasseur
        Dim Destination As Workbook
        Set Destination = ActiveWorkbook
        Destination.Activate

        With Destination.VBProject.VBComponents("EffaceN").CodeModule
            .DeleteLines 1, .CountOfLines
            .AddFromString strModule
        End With

        MsgBox "Le classeur " & Destination.Name & " à été modifié avec succès"
        Destination.Close SaveChanges:=True
    End If

Erreur:
    Application.ScreenUpdating = True

End Sub

mais je n'ai pas trouvé de façon d'enlever le mot de passe en code. Une solution qui demande un peu de restructuration serait de créer un fichier xla ( macro complémentaire ) contenant les macros qu'ensuite tu distribue sur les postes de chacun. Une autre solution à tester, tu enregistre un classeur xls avec tes macros, tu le déposse à un emplacement défini sur le réseau, et tu modifie les classeurs pour qu'ils appellent les macros depuis ce classeur avec la function run:

Run "CheminEtNomDuClasseur.xls!NomDeLaMacro"
Rechercher des sujets similaires à "maj fichier"