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

Macros et VBA Excel Discussion :

Macro excel avec formulaire vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Bonjour, j'ai un souci, je reprend un projet qui va chercher dans un table des données, les traitent puis les met dans une nouvelle requète(codé en vb)
    Ensuite, un macro va mettre en forme ces données.

    Le soucie est que je n'arrive pas à modifier les codes dans la macro.
    Il y a une table BLOB avec deux fonction dans le vb(ReadBlob et WriteBlob) mais je ne sais vraiment pas à quoi sa correspond.
    J'arrive à modfier la macro mais uniquement a partir d'excel (macro=>visual) alors que j'utilise un formulaire access.

    Il suffit de rajouter deux lignes dans le code de la macro pour que tout soit bon mais je n'arrive pas a l'atteindre ou en tout cas à atteindre ce qui la génère.

    Le seul moyen que j'ai trouvé c'est de modifier la macro dans excel juste avant que USER ne l'active mais c'est pas super.

    Merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WriteBLOB "BLOB", xPath 'xpath =>chemin de fichier de sortie
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "DATA", xPath, True 'data =>table que je veut traiter dans la macro
    Voici l'appel a la fonction WRITEBLOB et je pense aussi la création de la macro mais vraiement je n'arrive pas à savoir comment je peut modifier le code générer ensuite dans la cro excel.

    Merci.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 21
    Points
    21
    Par défaut Petit up
    Bonjour, je me permet de faire un petit up :
    Bonjour,

    J'ai un formulaire access qui traite plusieurs tables.
    J'ai une table avec des données OLE. J'ai deux fonction READBLOB et WRITEBLOB qui tape dans cette table pour récupérer les informations.

    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
     
     
    Function WriteBLOB(sField As String, Destination As String)
        Dim NumBlocks As Integer, DestFile As Integer, i As Integer
        Dim FileLength As Long, LeftOver As Long
        Dim FileData As String
        Dim RetVal As Variant
     
        On Error GoTo Err_WriteBLOB
     
        Dim T As Object
        Set T = CurrentDb.OpenRecordset("SELECT * FROM BLOB", , dbOpenDynaset)
        req = "SELECT * FROM BLOB"
     
        ' Get the size of the field.
        FileLength = T(sField).FieldSize()
        If FileLength = 0 Then
            WriteBLOB = 0
            Exit Function
        End If
     
        ' Calculate number of blocks to write and leftover bytes.
        NumBlocks = FileLength \ BlockSize
        LeftOver = FileLength Mod BlockSize
     
        ' Remove any existing destination file.
        DestFile = FreeFile
        Open Destination For Output As DestFile
        Close DestFile
     
        ' Open the destination file.
        Open Destination For Binary As DestFile
     
        ' SysCmd is used to manipulate the status bar meter.
        RetVal = SysCmd(acSysCmdInitMeter, _
        "Writing BLOB", FileLength / 1000)
     
        ' Write the leftover data to the output file.
        FileData = T(sField).GetChunk(0, LeftOver)
     
        Put DestFile, , FileData
       ' RetrieveLinkedPath = FileData
        ' Update the status bar meter.
        RetVal = SysCmd(acSysCmdUpdateMeter, LeftOver / 1000)
     
        ' Write the remaining blocks of data to the output file.
        For i = 1 To NumBlocks
            ' Reads a chunk and writes it to output file.
            FileData = T(sField).GetChunk((i - 1) * BlockSize _
               + LeftOver, BlockSize)
            Put DestFile, , FileData
     
            RetVal = SysCmd(acSysCmdUpdateMeter, _
            ((i - 1) * BlockSize + LeftOver) / 1000)
        Next i
     
        ' Terminates function
        RetVal = SysCmd(acSysCmdRemoveMeter)
        Close DestFile
        WriteBLOB = FileLength
        Exit Function
     
    Err_WriteBLOB:
        WriteBLOB = -Err
        Exit Function
     
    End Function
    Le problème est que l'objet OLE contient le code pour une macro que je voudrais modifié et je ne sais pas du tout comment m'y prendre.

    En effet, mon formulaire créer une table "DATA". Je récupère les données et une macro les met en forme dans excel.

    Avez -vous des pistes pour que je puisse récupérer ou au moins modifier les données contenue dans cette table? J'ai juste deux lignes à rajouter dans la macro mais sans ces deux lignes, le fichier excel est erronée.

    Merci.

  3. #3
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Salut,
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "DATA", xPath, True 'data =>table que je veut traiter dans la macro
    D'après ce que je vois cette commande permet d'evoyer ds Excel les données d'une table. plusieurs discutions ds le forum ACCESS en parle.

    Est-ce que c'est bien ça

    Le soucie est que je n'arrive pas à modifier les codes dans la macro.
    Il y a une table BLOB avec deux fonction dans le vb(ReadBlob et WriteBlob) mais je ne sais vraiment pas à quoi sa correspond.
    J'arrive à modfier la macro mais uniquement a partir d'excel (macro=>visual) alors que j'utilise un formulaire access.
    Si tu es bloquer pour le code VBA Access tu peux accéder au contenu des tables Access depuis Excel (ça marche bien)
    ais a mon avis il vaut mieux piloter Excel depuis ACCESS

    En effet, mon formulaire créer une table "DATA". Je récupère les données et une macro les met en forme dans excel.
    Si la macro ds Excel n'est là que pour mettre en forme alors l'export doit se faire depuis Access car c'est plus facile

    Que veux tu faire exactement
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Merci de ta réponse.

    En effet, mon formulaire met en place la table "DATA". Ensuite, un fichier excel via une macro fait la suite de traitement (la mise en forme du fichier excel selon les données qu'il y a dans "DATA")Le problème c'est que je ne sais pas comment modifier la macro via access. Je peut la modifier mais uniquement via excel.

    Moi je voudrais modifier le code de la macro, lancer le formulaire et obtenir un fichier excel correct.

    La ce que j'ai c'est le formulaire: je remplit les champs,il fait le traitement puis ouvre un fichier excel avec une fenêtre pour lancer le traitement de la macro et une fois cliquer sur "OK",la macro se lance met en forme le fichier excel(couleur,apparance...).

    De excel, je peut atteindre le code de la macro mais il est généré a chaque fois pour chaque lancement de mon formulaire.
    Lorsque je regarde le code de la macro une fois le fichier excel traité, j'ai "module1" qui contient tout le code de la macro (et la partie que je veut modifier)


    En gros :
    Début=>
    Formulaire access => remplit une table access(DATA) selon les critère indiqués dans le-dit formulaire

    Lancement du traitement => ouverture de excel =>lancement de la macro =>fin

    Je voudrais aussi (comme tu le dit,piloter la macro de access). Le but final est que le user n'est rien à faire.

    Merci.

  5. #5
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Ce qui m'ennui le plus c'est que tu dis :
    Le problème c'est que je ne sais pas comment modifier la macro via access. Je peut la modifier mais uniquement via excel.
    Donc
    1°) As-tu ACCESS ou est-ce un runtime ?
    2°) Si oui es-tu bloquer parce tu ne trouve pas Visual Basic Editor(VBE) ou bien est-ce que tu as un mot de passe sur les macros ?
    3°) c'est quelle version ?

    Si tu as ACCESS et tu ne sais pas comment acceder au VBE tape [ALt] + [F11]

    Tu dis

    Igloobel
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    J'ai access 2003(11.8321.8341)
    .
    J'ai accès a visual et donc au code vb de mon formulaire sa , pas de problème
    Mais je ne trouve pas ou est formé le code de la macro.
    J'ai un module pour "BLOB" avec les fonction READ et WRITE et un module pour mes fonction de mon formulaire

    J'ai eu beau débugé la seul chose qui correspond c'est cette fonction writeblob dont j'ai mis le code plus haut qui est appelé et qui semble traité la macro.

  7. #7
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Normalement Function et sub doivent être ds 1 module. As tu acces au module fais ALT+F11 ds Access

    tu dis
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  8. #8
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Dans mon projet sous visual j'ai ceci :
    Office Access Objets de classe :
    Mon formulaire

    Modules:
    BLOB qui contien write et read
    GEN_excel qui contient les fonctions de mis en forme des données pour la tables data mais aucune trace de macro.

  9. #9
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Dans ce cas comme c'est des Function elles sont peut-être appelées ds les requêtes (j'ai dejà vu ça)

    ceci dis je pense que c'est plus un pbl Access que Excel

    La maintenance me parrait ardue,

    Comme tu dis que c'est pas toi qui l'a fait, je te site
    Bonjour, j'ai un souci, je reprend un projet qui ...
    demande a celui ou celle qui la fait de l'expliquer plus clairement. Si la personne n'est plus là alors à ta place je ferait différemment tu iras plus vite.

    Moi même je suis sur une demande de même type je te mets mon lien pour suivre la conversation
    http://www.developpez.net/forums/d13...eur-recordset/
    J'espère que cela t'aideras

    tu dis
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  10. #10
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Merci pour ton lien je vais regarder sa.Je suis pas un pro mais je suis la pour apprendre =)

    Le problème c'est que la personne n'est plus la depuis longtemps(c'est un projet de 2008),j'ai déja fait un grand partie des modif demandé et c'est un peut rageant de ne pas pouvoir finir =)

  11. #11
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Même si j'ai encore une petite erreur je te certifie que cela exporte bien ds un classeur Excel à partir d'un modèle .xltm

    même si tu dois réécrire une sub ds Access au final tu sera gagnant car plus simple à modifier.

    @ bient¤t
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  12. #12
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Oui le problème c'est que ma macro était quand même conséquante :
    je traitant de nombreuses données avec un affichage graphique,suivant tel ou tel valeur de paramètre c'est affiché de tel ou tel manière ....

    Du coups faut que je voit si je peut le transcrire.

    Mais merci dans tout les cas !

  13. #13
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Résolu! merci pour ton aide !

    J'ai créé un fichier excel contenant mes macro et c'est lui que j'appel dans mon formulaire pour lancer le traitement.

    Merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. executer macro excel depuis formulaire access
    Par pancratee dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/12/2009, 08h30
  2. [XL-2003] Macro Excel avec raccouci clavier
    Par fh_22 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/07/2009, 15h51
  3. Macros excel sur formulaire word
    Par Eyedol dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/04/2008, 10h29
  4. comment enregistrer un fichier excel avec le vba
    Par zaki_1982 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/04/2008, 18h09
  5. Peux-t'on exécuter des macros excel avec Open Office
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/09/2006, 22h30

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