IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Récupérer code dans un fichier texte


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 30
    Points
    30
    Par défaut Récupérer code dans un fichier texte
    Bonjour,
    J'aurais besoin de récupérer (de manière automatisée) dans un fichier texte l'ensemble des procédures évènementielles que j'ai créées dans une base.
    Merci d'avance.

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    il n'y a rien en standard à ce que je sache

    l'approche pourrait se faire en 3 temps
    - avec un simulateur de clavier scruter les tables, les ouvrir en mode design, accéder aux macro, copier tout, ouvrit le bloc note, sauvegarder les macro XML dans un fichier texte (1 fichier par macro, ce qui nécessite de bonnes règles de nommage du fichier)
    - ensuite utiliser un traducteur XML>Txt en masse (il existe plusieurs outils plus ou moins gratuits, sur le net)
    - de plus une fois traduit, il faut élaguer pas mal de lignes et garder une vision hiérarchique, pour faire apparaître le code "utile" de façon lisible

    bref, c'est pas gagné

  3. #3
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonsoir

    Zoom61 avait déjà traité cette question : https://www.developpez.net/forums/d9...cation-access/

    Tu prends le code du dernier post de Zoom61 et tu supprimes les traitements qui ne t'intéressent pas.
    Tu appelles SaveModules en indiquant le chemin complet du fichier txt à créer, et si tu veux l'ouvrir dans la foulée (1, sinon 0)
    Et ça marche.

    Titi95
    Un problème bien posé est à moitié résolu

  4. #4
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour.
    @divan, par curiosité, dans quel but souhaites tu exporter uniquement le code vba ?
    Avec la méthode Application.SaveAsText ,tu recupères aussi le code vba des objets Access, à la fin du fichier txt, après la ligne "CodeBehindForm".

    Cdlt

  5. #5
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    titi

    on parle d'exporter les procédure événementielles, pas le code VBA

  6. #6
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonsoir Accessisgood

    Désolé, mais le code Zoom61 permet justement de ne transférer QUE et TOUTES les procédures de formulaires. Contrairement à la méthode Application.SaveAsText.
    https://www.developpez.net/forums/d9...cation-access/ (code du dernier post)

    Il suffit d'appeler SaveModules en indiquant le chemin complet du fichier txt à créer, et si tu veux l'ouvrir dans la foulée (1, sinon 0)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    Sub SaveModules( _
      ByVal strFilename As String, _
      Optional ByVal blnOpenNotePad As Boolean = False)
    Dim ao As Access.AccessObject
    Dim intFileHandle As Integer
     
    ' On vérifie si le fichier existe déjà...
    If Dir(strFilename) <> "" Then
      If MsgBox("Le fichier existe déjà. Souhaitez-vous le remplacer ?", _
        vbQuestion + vbYesNo + vbDefaultButton2, "Export Modules") = vbNo Then
        Exit Sub
      End If
    End If
     
    ' Ouvrir le fichier texte
    intFileHandle = FreeFile
    Open strFilename For Output As #intFileHandle
     
    ' Traiter tous les modules un par un
    'For Each ao In CurrentProject.AllModules
      ' On ouvre le module...
      'DoCmd.OpenModule ao.Name
     
      ' On écrit le code sur disque...
      'SaveModule "MODULE", Application.Modules(ao.Name), intFileHandle
     
      ' On referme le module
      'DoCmd.Close acModule, ao.Name
    'Next
     
    ' Même traitement pour les modules de formulaires
    For Each ao In CurrentProject.AllForms
      ' On ouvre le formulaire
      DoCmd.OpenForm ao.Name, acDesign
     
      ' On écrit le code sur disque
      If Forms(ao.Name).HasModule Then
        SaveModule "FORM MODULE", Forms(ao.Name).Module, intFileHandle
      End If
     
      ' On referme le formulaire
      DoCmd.Close acForm, ao.Name
    Next
     
    ' Même traitement pour les modules d'états
    'For Each ao In CurrentProject.AllReports
      ' On ouvre l'état
     ' DoCmd.OpenReport ao.Name, acDesign
     
      ' On écrit le code sur disque
      'If Reports(ao.Name).HasModule Then
        'SaveModule "REPORT MODULE", Reports(ao.Name).Module, intFileHandle
     ' End If
     
      ' On referme l'état
      'DoCmd.Close acReport, ao.Name
    'Next
     
    ' On ferme !
    Close #intFileHandle
    If blnOpenNotePad Then
      ' Ouvrir le bloc-notes Windows si nécessaire
      Shell "notepad.exe """ & strFilename & """", vbNormalFocus
    Else
      MsgBox "Opération terminée !", vbInformation, "Export Modules"
    End If
    End Sub
     
    ' ---
    ' ENREGISTRER LE CODE D'UN MODULE SUR DISQUE
    ' ---
    ' Entrée : strTitle      <- Texte à afficher en en-tête
    '                           (avant le nom du module).
    '          mdlModule     <- Objet Module à enregistrer.
    '          intFileHandle <- Pointeur de fichier (handle).
    '
    Sub SaveModule( _
      ByVal strTitle As String, _
      mdlModule As Access.Module, _
      ByVal intFileHandle As Integer)
     
    ' Titre du module
    Print #intFileHandle, "' ----------"
    Print #intFileHandle, "' " & strTitle & ": " & mdlModule.Name
    Print #intFileHandle, "' ----------"
    Print #intFileHandle, ""
    Print #intFileHandle, mdlModule.Lines(1, mdlModule.CountOfLines)
    Print #intFileHandle, ""
    Print #intFileHandle, ""
    End Sub
    Fais l'essai pour vérifier !

    Merci Zoom61

    Titi95
    Un problème bien posé est à moitié résolu

Discussions similaires

  1. [AC-2007] Récupérer code VBA dans un fichier texte
    Par divan dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/02/2012, 22h13
  2. ajouter des lignes de code dans un fichier texte
    Par oodbae_adriano dans le forum MATLAB
    Réponses: 4
    Dernier message: 06/12/2010, 10h39
  3. trouver un code dans un fichier texte
    Par darkman13130 dans le forum C++Builder
    Réponses: 13
    Dernier message: 12/06/2008, 14h26
  4. Réponses: 1
    Dernier message: 11/06/2006, 13h41
  5. Réponses: 2
    Dernier message: 16/01/2006, 19h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo