Sauvegarder un module VBA lors de son lancement (Play).

  • Initiateur de la discussion Initiateur de la discussion beegees
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

beegees

XLDnaute Occasionnel
Bonjour tout le monde,

J'utilise un module VBA qui possède pas mal de lignes.

J'aimerais savoir il est possible, à chaque lancement de ce module (je le lance avec le bouton play ou avec F8) si il serait possible de l'enregistrer (save) ?

Je vous explique la rasion de ce message :

Je transforme régulièrement ce module, je l'améliore.

C'est un module VBA qui communique avec Access et Excel.

Si j'appuie sur play et que j'ai par exemple oublié de fermer une table en mode création, plantage, et je perds toutes les modifications.

C'est pour cela que j'aimerais sauvegarder ce module VBA au démarrage de celui-ci.

Merci d'avance pour votre aide.

beegees
 
Re : Sauvegarder un module VBA lors de son lancement (Play).

Bonsoir,

Appelle cette procédure au début de chaque procédure du module concerné.

Code:
Sub SaveModule(ModuleName As String)
    Dim SaveAsName As String, SaveAsPath As String

    SaveAsName = ModuleName & _
        Format(Now, "ddmmyy") & Format(Time, "hhmm") & ".bas"

    SaveAsPath = "C:\Documents and Settings\......\"

    Application.VBE.ActiveVBProject _
        .VBComponents(ModuleName).Export SaveAsPath & SaveAsName
End Sub

Les fonctions de date et d'heure permettent de ne pas ecraser les fichiers précedents (sous réserve d'un intervalle d'une minute entre chaque execution).

Il est également possible d'exporter au format texte ".txt".

Testé avec Excel mais je suppose que ca fonctionne avec Access.

Cordialement,

Tirex28/
 
Re : Sauvegarder un module VBA lors de son lancement (Play).

Bonjour tirex28,

Merci beaucoup pour ton aide.

j'ai fait ce que tu as dit, j'appelle la procudure au début du code mais j'obtiens ce message d'erreur :

"Erreur de compilation : Argument non facultatif"

Voici le début de mon code :

Public Function nom_Function()
Dim ValSQL As String
Dim bds As DAO.Database, rst As DAO.Recordset
Dim appexcel As Excel.Application
Dim wbexcel As Excel.Workbook
Dim Errormsgbox As String
Dim statrow As Long
Dim X

SaveModule

Merci encore pour tout.

beegeees
 
Re : Sauvegarder un module VBA lors de son lancement (Play).

Bonjour,

Il faut préciser le nom du module quand tu appelle la procédure.

Code:
Public Function nom_Function()
Dim ValSQL As String
Dim bds As DAO.Database, rst As DAO.Recordset
Dim appexcel As Excel.Application
Dim wbexcel As Excel.Workbook
Dim Errormsgbox As String
Dim statrow As Long
Dim X
SaveModule "NomDuModule" 'adapter le nom du module

Cordialement,

Tirex28/
 
Re : Sauvegarder un module VBA lors de son lancement (Play).

Bonjour,

Merci pour ta réponse.

J'ai suivi tes conseils et le problème maintenant est qu'il sauvegarde le module de saveModule et non mon moduleVBA.

saveModule "sauvegardeModuleVBA"

Il va chercher le module nommé sauvegardeModuleVBA.

La valeur de ModuleName est sauvegardeModuleVBA, ça devrait être le nom de mon module ?

Merci encore pour ton aide.

beegees
 
Re : Sauvegarder un module VBA lors de son lancement (Play).

Bonjour,

>saveModule "sauvegardeModuleVBA"
>Il va chercher le module nommé sauvegardeModuleVBA.
Normal

>La valeur de ModuleName est sauvegardeModuleVBA, ça devrait être le nom de mon module ?
Oui

Si tu veux sauvegarder le module nomme "Toto" il te faut insérer dans chaque procédure du module "Toto" la ligne:

SaveModule "Toto"

Ton module "Toto" se presente comme suit:

Code:
Sub MaSub1()
SaveModule "ModuleToto"
.....
End Sub

Sub MaSub2()
SaveModule "ModuleToto"
.....
End Sub

Function MaFunction1()
SaveModule "ModuleToto"
.....
End Function

La procedure SaveModule quant à elle peut prendre place dans n'importe quel module.

Bon dimanche,

Tirex28/
 
Re : Sauvegarder un module VBA lors de son lancement (Play).

Bonjour,

Merci pour ton dévouement et ta patience, surtout un Dimanche.

Sache que l'aide que tu m'apportes va m'être extrêmement importante pour la suite de mon utilisation de VBA.

ça fonctionne déjà un peu mieux, seule hic, il me donne un message d'erreur maintenant.

J'ai donc créé un nouveau module VBA nommé saveModule.

Il est appelé via un autre module et quand il arrive à cette ligne :

Application.VBE.ActiveVBProject _
.VBComponents(ModuleName).Export SaveAsPath & SaveAsName

il me donne ce message d'erreur :

"L'indice n'appartient pas à la sélection".

Autrement, en faisant un debug, tout est nikel, il prend le bon nom du module...

Merci encore pour ton aide et bon Dimanche à toi aussi.

beegees
 
Re : Sauvegarder un module VBA lors de son lancement (Play).

Re-bonjour,

>"L'indice n'appartient pas à la sélection".

Cela signifie que le projet ne contient pas de module portant ce nom.

Je viens de faire un test avec Access(2003) et ca fonctionne correctement.

Pour résumer, la procédure SaveModule tu la met ou tu veux. Tu l'appelle dans chaque procédure du module que tu veux sauvegarder, en t'assurant que le paramètre NomModule correspond bien au nom du module en question.

A part ca évite de donner le même nom à un module et à une procédure, ca peut porter à confusion.

Cordialement,

Tirex28/
 
[RESOLU] Re : Sauvegarder un module VBA lors de son lancement (Play).

Rebonjour,

Merci, j'ai trouvé le problème.

Je communiquais le nom de la fonction au lieu du nom du module VBA.

ça fonctionne maintenant très bien.

Je t'en remercie mille fois, c'est un grand pas dans mon travail, je serai au moins sûr de ne plus perdre des données à partir de maintenant.

Merci encore pour tout et bon fin de WE.

beegees
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour