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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 averti
    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
    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 871
    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 871
    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

  4. #4
    Membre averti
    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
    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 871
    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 871
    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

  6. #6
    Membre averti
    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
    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.

+ 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