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

Conception Discussion :

Modification Projet VBA sans ouvrir le classeur [XL-365]


Sujet :

Conception

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur Méthodes Industrialisation
    Inscrit en
    Octobre 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Méthodes Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2020
    Messages : 39
    Points : 51
    Points
    51
    Par défaut Modification Projet VBA sans ouvrir le classeur
    Bonjour à tous et toutes,

    Pour mon contexte, j'ai une macro qui applique des modifications à des macros sur plusieurs centaines de fichiers excels.

    Les modifications consistent principalement à supprimer des modules dans le projet VBA des classeurs cibles et dans insérer d'autres.
    Les classeurs cibles sont dans un dossier et je balaye le Dossier pour identifie les fichiers correspondants à mon pattern (exemple : Annexes2, Annexes 125, ...)

    Donc j'ai une macro qui marche pour faire tout ca (si besoin je peux vous la fournir).
    Le problème, c'est le temps d'execution.

    Je constate que la majorité du temps est consacrée à l'ouverture des fichiers, malgrès les macros d'ouverture désactivées et l'affichage figé.

    Ma question est : Est-il possible de modifier un projet VBA d'un classeur sans ouvrir le dit classeur ?

    J'ai pensé à ADO mais je n'ai pas trouvé de piste de départ pour modifier le code.

    Merci d'avance pour votre aide.

    Cordialement,
    Zéabon

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Salut,

    pour industrialiser encore plus cette approche, voici comment j'avais gérer un cas de figure similaire :

    - un (ou plusieurs) dossier(s) dans lequel les modules, formulaires et modules de classes sont stockés

    - pour chaque fichier, une procédure à l'ouverture du classeur, chargeant tous les fichiers dans le(s) dossier(s)

    - pour chaque fichier, une procédure à la fermeture du classeur, déchargeant tous les modules sauf le principal
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur Méthodes Industrialisation
    Inscrit en
    Octobre 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Méthodes Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2020
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Bonjour Jean-Philippe,

    Je pense que votre solution est interressante.

    Mais le problème est l'accès aux Dossiers contenant les modules qui doit être partagé avec beaucoup d'utilisateurs. Et parfois pas les meilleurs.

    De plus, travaillant sur un réseau où les gens ne font pas toujours les choses dans les règles (renommage de dossier intempestif), le chemin risque de n'être pas valable continuellement.

    Et pour finir, on parle de passer sur Sharepoint, le deux seuls moyens que j'ai trouvé pour faire de l'exploration de dossier dans sharepoint :
    - en faisant des lecteurs réseaux. Ne fonctionne pas si on ne se reconnecte pas régulièrement. Donc pour une personne avisée et un utilisateur lambda, c'est pas pareille.
    - en passant par les fichiers synchronisés. Et là j'avoue que c'est encore un peu vague pour moi et que le risque de renommage est toujours présent.

    Je me garde votre solution sous le coude.

    Peut-être changer l'exploration du réseau avec une liste fixe pouvant se mettre à jour ? Voir dans un des modules téléchargé ?
    Ca permettrait de sortir la variable exploration du réseau de l'équation.

    Peut-être mettre les deux solutions en parallèle :
    - La votre pour une utilisation quotidienne
    - La mienne pour réparer les pots cassés/changement de lien vers les fichiers. Ca ferait une seule ligne a mettre à jour avec cette macro.

    Cordialement,
    Zéabon

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 946
    Points
    55 946
    Billets dans le blog
    131
    Par défaut
    Salut.

    Citation Envoyé par Zeabon Voir le message
    [...]
    Ma question est : Est-il possible de modifier un projet VBA d'un classeur sans ouvrir le dit classeur ?[...]
    Sans ouvrir le classeur? Non! De plus, ça n'a pour moi aucun sens d'ajouter ou de supprimer des modules par macro. Ecrire du code pour modifier du code est une ineptie sans nom.

    Les xlam ont été "inventés" par les concepteurs d'Excel et permettent d'éviter ces manipulations. C'est donc l'architecture qu'il faut revoir.




    Citation Envoyé par Jean-Philippe André Voir le message
    [...]
    Désolé de le dire aussi platement, mais c'est vraiment n'importe quoi!! Quelle misère
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur Méthodes Industrialisation
    Inscrit en
    Octobre 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Méthodes Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2020
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Bonjour Pierre,

    Je suis ouvert à toutes les propositions et si je dois refaire l'architecture je la referrais.

    Mais j'ai dû mal avec le concept de xlam car pour moi c'est un fichier personnel.
    Donc comme mon utilisation est pour un groupe de personne qui peut changer, je n'ai pas envisagé cette solution.

    Aurais-tu un lien vers une page explicative du xlam, stp ? (J'ai fouillé un peu mais rien trouvé qui me donne une idée de comment l'utiliser dans mon cas)

    Cordialement,
    Zeabon

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur Méthodes Industrialisation
    Inscrit en
    Octobre 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Méthodes Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2020
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Bonjour à tous,

    Suite à la remarque de Pierre, j'ai regardé le .xlam plus en profondeur.

    Donc je peux facilement mettre mes macros dessus et faire les modifications pour l'ensemble de mes fichiers.
    Par contre, si j'ai bien compris, cela implique d'installer le complément xlam sur les excels de tous les collaborateurs.

    Je suppose qu'on peut tester si le complément est installé par macro et si non, l'installer ?
    J'ai trouvé 2-3 pistes pour faire ça, mais j'ai vu que certains ouvrent le ficheir xlam et appelent les macros normalement.

    Si je comprends bien, l'avantage de l'ouvrir permet d'éviter les conflits sur d'autres fichiers excel.
    Y a-t-il d'autre avantage/incovénient au 2 types ?

    Cordialement,
    Zeabon

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur Méthodes Industrialisation
    Inscrit en
    Octobre 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Méthodes Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2020
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Bonjour à Tous,

    Je vais clore le sujet car je pense avoir trouvé une alternative grâce aux remarque des différents intervenants.

    J'ouvre le xlam à l'ouverture des fichiers et j'appelle les macros précédement dans les fichiers sur le xlam.

    Je ferme le xlam si plus de fichier le concernant d'ouvert.

    Je me garde mes macros pour changer les modules/macros si changement de chemin du xlam ou autres problème nécessitant une intervention sur tous les fichiers.

    Cordialement,
    Zeabon

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 946
    Points
    55 946
    Billets dans le blog
    131
    Par défaut
    Merci pour ton retour d'expérience
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 755
    Points : 28 606
    Points
    28 606
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Aurais-tu un lien vers une page explicative du xlam, stp ? (J'ai fouillé un peu mais rien trouvé qui me donne une idée de comment l'utiliser dans mon cas)
    J'ai écrit plusieurs billets sur le sujet
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/05/2010, 17h05
  2. Imprimer un pdf sous access (vba) sans ouvrir acrobat reader
    Par benoit16 dans le forum VBA Access
    Réponses: 3
    Dernier message: 23/02/2010, 08h43
  3. Réponses: 0
    Dernier message: 27/11/2007, 22h59
  4. [VBA-E] - Ouvrir un classeur grace a un mot clef
    Par ekynoxx dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/06/2007, 19h35
  5. [vba-excel] ouvrir des classeurs excel
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2006, 15h28

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