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 Discussion :

Connaître la taille d'un module avec une macro VBA ou autre


Sujet :

VBA

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Connaître la taille d'un module avec une macro VBA ou autre
    Bonjour le forum,

    En sachant qu'un module VBA sous Access ne peut pas faire plus de 64 ko, existe-t'il une macro (du code) qui me permettrait de connaitre la taille du module en cours ou le module dont je donnerais le nom ?

    Merci d'avance.

    bgs

  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    C'est la première fois que j'entend parler de cette limite de taille d'un module!!?!
    Mais bon, ce n'est pas bien grave: il te suffit d'exporter de temps en temps le module que tu développes, et de regarder la taille du fichier ".bas" que tu génères. Et si tu dépasses une certaine limite, découpe le en plusieurs modules. En plus, ça rendra ton code plus clair.

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    64 ko comme limite : FAUX ! J'en ai un où je mets toutes mes cochonneries à moi et qui fait 105 ko. C'est fait "excepré" pour que personne ne puisse s'y retrouver sauf moi...

    Espérant t'avoir grandement aidé

    A+

  4. #4
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ouskel'n'or, roi des dodos("du dodo", vu qu'il n'en reste qu'un!!), a parlé!
    Hugh, comme on dit chez nous...

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par ouskel'n'or
    64 ko comme limite : FAUX ! J'en ai un où je mets toutes mes cochonneries à moi et qui fait 105 ko. C'est fait "excepré" pour que personne ne puisse s'y retrouver sauf moi...

    Espérant t'avoir grandement aidé

    A+
    Je parle donc d'un module VBA créé sous Access 2003 (dans un module et non du code dans un formulaire).

    J'essaierai de trouver l'information sur l'aide de Access 2003 et je vous le montrerai mais ça sera pour demain.

    bonne soirée et merci pour ta réponse

    bgs

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    J'ai ACCESS 2002 sur mon poste, et je ne trouve pas mention de cette limitation. Mais si elle est réelle, c'est bon à savoir.

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je parle donc d'un module VBA créé sous Access 2003 (dans un module et non du code dans un formulaire).
    Je n'ai jamais parlé de formulaire, j'ai ça dans un module VBPROJECT et touétou.
    C'est quoi déjà, un formulaire ?

    A+

  8. #8
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par ouskel'n'or
    Je parle donc d'un module VBA créé sous Access 2003 (dans un module et non du code dans un formulaire).
    Je n'ai jamais parlé de formulaire, j'ai ça dans un module VBPROJECT et touétou.
    C'est quoi déjà, un formulaire ?

    A+
    Re-salut,

    J’ai copié une partie d’un module vers un autre pour qu’il soit trop grand.

    Voici le message d’erreur que j’obtiens quand je clique sur F5 :

    ERREUR DE COMPILATION : Procédure trop grande

    Quand je clique sur aide, voici ce que je peux lire :

    Une fois compilé, la taille du code d'une procédure doit être inférieure à 64 Ko. Cause et solution de cette erreur :
    • La taille du code de cette procédure dépasse 64 Ko après compilation.
    Fractionnez ce code et toute autre grande procédure en plusieurs procédures plus petites.
    Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).
    Pourrais-tu me dire comment voire la taille d’un module ?

    Merci
    bgs

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    [quote="beegees"][quote="ouskel'n'or"]

    ERREUR DE COMPILATION : Procédure trop grande

    bgs
    La c'est la procédure et non le module qui est trop grand.... Je ne sais pas te dire comment savoir la taille de ta procédure ... mais je suis sur que celle-ci peu-être découpée en plusieurs procédure, ce qui devrai en prime rendre ton code beaucoup plus lissible ... car pour atteindre cette taille ta procédure doit être un véritable fourre-tout


  10. #10
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    64ko pour une procédure cela doit bien représenter au moins 640 lignes de codes -
    j'aimerais pas à avoir à débogguer pareille usine à gaz -

    Sinon, oui, c'est très faisable, notamment en dévelopant un addin dédié à l'interface de développement VBA.

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Coucou beegees ! Il y a près de 20 ans que les disques durs existent sur les PC, on est plus obligé de faire du "style nouille" pour gagner de la place...
    Quand on n'avait que des disquettes 5'1/4 (360ko) là, on était obligé...

    La taille du code de cette procédure dépasse 64 Ko après compilation
    On ne parle pas de "module" mais de SUB ou "procédure".
    Pour voir la taille, mets-la dans un module vide, exporte le module vers le répertoire de ton choix. Ensuite, tu retournes dans le répertoire et tu fais affichage "Détails", là tu auras la taille de ta procédure.

    Mais comme dit Bbill, "Coupe-la en tranches".

    A+

  12. #12
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    [quote="bbil"][quote="beegees"]
    Citation Envoyé par ouskel'n'or

    ERREUR DE COMPILATION : Procédure trop grande

    bgs
    La c'est la procédure et non le module qui est trop grand.... Je ne sais pas te dire comment savoir la taille de ta procédure ... mais je suis sur que celle-ci peu-être découpée en plusieurs procédure, ce qui devrai en prime rendre ton code beaucoup plus lissible ... car pour atteindre cette taille ta procédure doit être un véritable fourre-tout

    Salut,

    Merci pour ta réponse.

    C'est donc ma procédure qui est trop grande (sorry )

    J'ai essayé de la découpé (samedi dernier quand j'ai eu le problème) mais pas moyen car :

    Ma procédure lie les données d'une base de données avec DAO (il faudrait donc que si je change de module, je redéclare tout mes variables DAO...) mais là n'est pas le pire, le pire c'est ma boucle for next et la boucle des pages excel (j'ai 4 pages différentes par étudiant).

    Je ne pense donc pas que ça soit possible de "trancher" comme dirait Billy ou notre Ami plus bas.

    A moin que tu en crois le contraire, alors je t'enverrais mon code en privé :

    Encore un super grand merci à toi et bonne journée

    Bgs

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Mais si, tu peux découper dans une boucle for next ou autre, pour ça, crée une fonction avec passage de paramètre, tu récupère la valeur ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TaValeur = TaFonction(Paramètre1, paramètre2, ParamètreEtc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function TaFonction(Paramètre1, paramètre2, ParamètreEtc)
    'Calcul :
    TaFonction = Paramètre1 + paramètre2 * ParamètreEtc
    End Function
    Juste une idée comme ça

    A+


    PS - Fais simplement attention au déclarations de tes variables...

  14. #14
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par DarkVader
    64ko pour une procédure cela doit bien représenter au moins 640 lignes de codes -
    j'aimerais pas à avoir à débogguer pareille usine à gaz -

    Sinon, oui, c'est très faisable, notamment en dévelopant un addin dédié à l'interface de développement VBA.
    Comptes-en 1000 de plus et je suis pas tout à fait à 64 ko car il se compile correctement.

    A+

    bgs

  15. #15
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par ouskel'n'or
    Mais si, tu peux découper dans une boucle for next ou autre, pour ça, crée une fonction avec passage de paramètre, tu récupère la valeur ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TaValeur = TaFonction(Paramètre1, paramètre2, ParamètreEtc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function TaFonction(Paramètre1, paramètre2, ParamètreEtc)
    'Calcul :
    TaFonction = Paramètre1 + paramètre2 * ParamètreEtc
    End Function
    Juste une idée comme ça

    A+


    PS - Fais simplement attention au déclarations de tes variables...
    Merci pour ta réponse,

    Je sais pas si ce que tu me dis est adapté à mon module.

    Je t'envoi mon code en pv, dis-moi ce que tu en penses.

    Merci !!!!

    bgs

  16. #16
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    [quote="beegees"][quote="bbil"]
    Citation Envoyé par beegees
    Citation Envoyé par ouskel'n'or

    ERREUR DE COMPILATION : Procédure trop grande

    bgs
    La c'est la procédure et non le module qui est trop grand.... Je ne sais pas te dire comment savoir la taille de ta procédure ... mais je suis sur que celle-ci peu-être découpée en plusieurs procédure, ce qui devrai en prime rendre ton code beaucoup plus lissible ... car pour atteindre cette taille ta procédure doit être un véritable fourre-tout

    Salut,

    Merci pour ta réponse.

    C'est donc ma procédure qui est trop grande (sorry )

    J'ai essayé de la découpé (samedi dernier quand j'ai eu le problème) mais pas moyen car :

    Ma procédure lie les données d'une base de données avec DAO (il faudrait donc que si je change de module, je redéclare tout mes variables DAO...) mais là n'est pas le pire, le pire c'est ma boucle for next et la boucle des pages excel (j'ai 4 pages différentes par étudiant).

    Je ne pense donc pas que ça soit possible de "trancher" comme dirait Billy ou notre Ami plus bas.

    A moin que tu en crois le contraire, alors je t'enverrais mon code en privé :

    Encore un super grand merci à toi et bonne journée

    Bgs
    si tu dois pouvoir découper en fonction ou procédure ...
    - Ouverture base de donnée
    - traitement d'un enregistement ( contenu de ta boucle for next)
    - 1 procédure / mise à jour de type de feuille excel...
    ...
    enfi on peu trouver plein d'idées pour rendre un code plus lissible ... en essayant d'y trouver des morceaux de codes plus ou moins répétitifs.. que l'on peu extraire en procédure ou fonctions.

Discussions similaires

  1. [XL-2003] Mise à jour d'un module avec une macro
    Par Alain69140 dans le forum Contribuez
    Réponses: 0
    Dernier message: 23/03/2013, 10h00
  2. Créer un fichier mp3 avec une macro vba
    Par xavion dans le forum Excel
    Réponses: 10
    Dernier message: 14/11/2012, 20h01
  3. Réponses: 5
    Dernier message: 10/06/2011, 17h11
  4. supprimer un commentaire avec une macro vba
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/11/2008, 14h55
  5. Réponses: 2
    Dernier message: 01/08/2008, 15h08

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