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 :

Fichier xlsm et utilisation en réseau [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Par défaut Fichier xlsm et utilisation en réseau
    Bonjour,

    je suis confronté à un souci aujourd'hui car je découvre qu'en 2010 il y a une séparation de "corps" entre :
    - les fichiers excel avec macro : "*.xlsm"
    - les fichiers excel sans macro : "*.xlsx"

    Mais POURQUOI ?!?

    Pour le coup je ne sais pas comment faire pour passer de mon fichier Excel 2003 qui contenait données + macro VBA en 2 fichiers : "MesDonnees.xlsx" et "MesMacros.xlsm"?
    Car j'ai des contraintes :
    - il faut absolument que je garde mon fichier de données en .xlsx (car piloté par la suite par Windev qui ne prend pas en compte les ".xlsm)
    - le fichier Excel de données peut etre utiliser sur plusieurs machines donc le fichier de macros doit pouvoir etre accessible au même endroit (sur un lecteur réseau par exemple), est ce possible?
    Si oui, comment je procède dans le fichier de données pour appeler des fonctions contenues dans le fichier de macros? Quel syntaxe utiliser??

    Je suis perdue

    Merci par avance pour vos lumières!!

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,

    Je suis pas certain de tout avoir compris, mais a priori il y a une piste.

    Tu garde ton fichier sous XLSM, mais à chaque fermeture (ou modification) tu en fais une copie sous XLSX (facile par macro), ce dernier fichier serait alors la source pour WinDev.

    A+

  3. #3
    Membre confirmé Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Par défaut
    Merci Fvandermeulen pour ton élément de réponse, c'est effectivement une solution pour répondre au souci.
    Cela dit, comme ce sont les utilisateurs qui soumettent le fichier de données à windev...j'ai peur qu'ils soumettent le mauvais ...
    Pour le coup, il faut absolument avoir 1 fichier de données et mettre les macros dans une fichiers xlsm.

    J'ai avancé sur mon problème mais je cale un peu ... J'ai mis le fichier de macro sur un lecteur réseau accessible de la même manière par les utilisateur.
    J'ai rajouté dans le centre de gestion de la confidentialité le répertoire contenant le fichier de macros comme ceci :
    "Fichier/options/Centre de gestion de la confidentialité/ bouton "Parametres du Centre de gestion de la confidentialité" /Emplacement approuvés/ ajouter un nouvel emplacement"

    Problème :
    - Comment je fais appelle (quelle est la syntaxe?) à mes macros dans mon fichier de données?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exemple :
    dans ma cellule H, appelle de la fonction "ConvertirEnLettre"
    ='S:\MonRepertoireDOutils\MacrosDany.xlsm'!ConvertirEnLettre(G1;1;0)
    - Est ce que cela va fonctionner si le fichier de macros (qui se trouve donc sur le réseau) est fermé?

    Merci par avance

  4. #4
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Re,

    Si tu veux faire appel à ton fichier qui contient les macros depuis ton fichier de données tu vas avoir un soucis car tu va devoir y mettre une macro => XLSM

    As tu envisagé la piste des macros personnelles, le souci dans ce cas, c'est qu'il faut installer la (les) macro(s) chez chaque utilisateur.

    Sinon, je reviens avec mon idée de "SaveAs" xlsx ... ne peux tu pas t'arranger pour donner un nom compréhensible au utilisateur du genre:
    SaisieDonnées.XLSM
    SourceWinDev.XLSX

    C'est pas l'idéal mais sans ça, pour l'instant, je ne vois pas.

    Désolé.

  5. #5
    Membre confirmé Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Par défaut
    Merci Fvandermeulen, je n'avais effectivement pas pensé à "renommer completement le fichier!!!
    C'est une piste que je vais garder, tu es très convainquant!!

    Cela dit, comment je procède???
    - je garde 1 fichier en "SaisieDonnées.XLSM" (qui contient mes données et macros) ==> OK
    - quand l'utilisateur enregistre le fichier, il sera "dupliquer" en "SourceWinDev.XLSX" ==> OK
    - Save As ==> ?? Dois-je créer une nouvelle macro que j'appelle "Save As"? Aurais-tu un exemple de code?

    Merci en tout cas pour tes lumières

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 587
    Par défaut
    Bonjour

    Tes macros peuvent peut-être être stockées dans un fichier xlam (macro complémentaire ou complément selon la nouvelle appellation), placé sur le réseau.

  7. #7
    Membre confirmé Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Par défaut
    merci 78chris pour votre réponse.

    Si je mets mes macros dans un fichier "mesMacros.xlam" comme vous me suggérez, comment puis-je utiliser mes macros dans mon fichier de données?
    Auriez-vous un exemple concret à me donner?

    Merci par avance

  8. #8
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 587
    Par défaut
    Bonjour

    Tu ajoutes un onglet et des boutons pour appeler tes macros, ou bien des boutons dans la barre d'accès rapide.

  9. #9
    Membre confirmé Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Par défaut
    Bonjour

    78chris, votre réponse est vaste, trop abstraite pour moi

    Concrétement, si j'ai un fichier "Mesdonnees.xlsx" sur ma machine et que sur une feuille, dans une cellule j'ai besoin d'appeler une de mes fonctions de mon fichier "MesMacros.xlsm" qui se trouve sur le réseau, comment dois-je "écrire" au niveau syntaxe cet appel?
    Voici un exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exemple :
    dans ma cellule H, appelle de la fonction "ConvertirEnLettre"
    ='S:\MonRepertoireDOutils\MacrosDany.xlsm'!ConvertirEnLettre(G1;1;0)
    ...qui ne fonctionne pas car il me met #NOM? ...Alors que ça fonctionne très bien si les macros font partie de mon fichier de données...à condition que je sauvegarde mon fichier de données en .xlsm bien entendu !!!

    Est ce que syntaxiquement il manque quelque chose?
    Est ce que c'est possible vraiment de procéder de la sorte, cad appeler une fonction issue d'un fichier de macros sur le réseau et que ce fichier reste fermé???

    Merci pour vos lumières

  10. #10
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 587
    Par défaut
    Bonjour

    Si ce sont des fonctions, il faut simplement "installer le complément" : Fichier, Options, Complements. Tout en bas atteindre : et charger le fichier xlam. Il restera disponible tant qu'on ne le désinstalle pas.

    A faire pour tous les PC qui veulent l'utiliser.

    Pour les procédures (sub) on peut ajouter des boutons dans la barre : cela appelle l'xlam automatiquement, d'où ma proposition.

    On peut aussi raffiner et associer un onglet spécifique à un xlam : il s'installe et se désinstalle en même temps que l'xlam. Un peu plus compliqué.

  11. #11
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Une solution éventuelle :
    à l'ouverture de ton fichier "Mesdonnees.xlsx" tu ouvres le fichier xlam contenant les macros. Etant donné que c'est un "xlam" il s'ouvrira mais n'apparaîtra pas à l'écran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Workbooks.Open "Chemin_complet_du_reseau\MonFichier.xlam"
    End Sub
    Et pour appeler une macro contenue dans ce fichier xlam tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Run "MonFichier.xlam!MaMacro"

  12. #12
    Membre confirmé Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Par défaut
    Hello!!
    Tout d'abord merci pour vos éléments de réponse.

    78chris : votre solution est interessante mais difficile à mettre en place dans mon cas à cause de "A faire pour tous les PC qui veulent l'utiliser" ce qui enlève la souplesse d'utilisation.

    fring : votre solution me plait bien sauf que je me pause d'autres questions :
    - Est ce que je peux laisser mon fichier de macros en .xlsm? (au lieu de xlam)
    - Si je rajoute le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Workbooks.Open "Chemin_complet_du_reseau\MonFichier.xlsm"
    End Sub
    dans mon fichier de données, qui sera donc du genre "MesDonnees.xlsx", est ce que je ne vais pas avoir de soucis dans le sens ou le fichier .xlsx ne doit contenir aucune macro normalement!!!???

  13. #13
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par dany13 Voir le message
    - Est ce que je peux laisser mon fichier de macros en .xlsm? (au lieu de xlam)
    Oui mais l'avantage (entre autre) du xlam est de rester invisible

    Citation Envoyé par dany13 Voir le message
    dans mon fichier de données, qui sera donc du genre "MesDonnees.xlsx", est ce que je ne vais pas avoir de soucis dans le sens ou le fichier .xlsx ne doit contenir aucune macro normalement!!!???
    Dans ce cas ma solution ne convient pas et tu n'as pas d'autre choix que d'opter pour celle de Chris mais en relisant le début du sujet je m'interroge sur un point.
    Puisque avant tu pouvais fonctionner avec un fichier "*.xls" contenant les données et les macros, pourquoi ne continues-tu pas à travailler de cette manière ? Rien ne t'empêche avec 2010 de sauvegarder ton fichier au format xls (compatible Excel 2003)

  14. #14
    Membre confirmé Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Par défaut
    fring, merci pour tes lumières.
    Je suis obligée de passer en xlsx car j'utilise des fonctions de traitement supérieur à la V97-2003...et comme le dev est conséquent et que je ne pensais pas être confronté à ce soucis de "séparation de corps" entre les données et macros en V2010, je suis à un stade trop avancé pour tout remettre en question...
    Je pense que dans mon cas et vu les contraintes que j'ai, c'est la solution de Fvandermeulen qui correspond le mieux sauf que je ne sais pas comment mettre en place la macro du "copie sous XLSX"... une idée?

  15. #15
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Tu peux faire simplement comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.DisplayAlerts = False '<-- pour éviter le message de mise en garde de suppression des macros
    ThisWorkbook.SaveAs "Chemin_Complet\MonFichier.xlsx"

  16. #16
    Membre confirmé Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Par défaut
    Fring,

    dans mon fichier "Mesdonnées.xlsm" j'ai ajouter cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Application.DisplayAlerts = False '<-- pour éviter le message de mise en garde de suppression des macros
        ThisWorkbook.SaveCopyAs "MesDonnees.xlsx"
    End Sub
    et j'ai 2 soucis
    - il ne me sauve pas la copie dans le même repertoire que mon fichier .xlsm mais dans MesDocuments..grrrrr!!
    - et quand j'ouvre ce fameux fichier "MesDonnees.xlsx", il me met
    Impossible d'ouvrir le fichier car son format ou son extension n'est pas valide.
    Vérifier que le fichier n'est pas endommagé et que son extension correspond bien au fichier.
    qu'ai je fais de mal??

  17. #17
    Membre confirmé Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Par défaut
    J'y suis presque!!!

    Le code me permettant d'effectuer la copie de sauvegarde du fichier "MesDonnees.xlsm" en fichier "MesDonnees.xlsx" fonctionne ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Application.DisplayAlerts = False '<-- pour éviter le message de mise en garde de suppression des macros
        fullfilename = "MesDonnees.xlsx"
        ThisWorkbook.SaveAs Filename:= _
            fullfilename, FileFormat:= _
            xlOpenXMLWorkbook, CreateBackup:=False
        ActiveWorkbook.Close
    End Sub
    Il me reste juste un souci...

    Comment lui dire de sauvegarder le fichier .xlsx au même endroit que le fichier xlsm??? (je ne connais pas le chemin entier qui peut être différent d'une machine à l'autre en plus!!)

  18. #18
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par dany13 Voir le message
    Comment lui dire de sauvegarder le fichier .xlsx au même endroit que le fichier xlsm??? (je ne connais pas le chemin entier qui peut être différent d'une machine à l'autre en plus!!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fullfilename = ThisWorkbook.Path & "\MesDonnees.xlsx"

  19. #19
    Membre confirmé Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Par défaut
    C'est bon j'y suis!!!
    Voila le code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Application.DisplayAlerts = False '<-- pour éviter le message de mise en garde de suppression des macros
        'fullfilename = ThisWorkbook.Path & "essai_a_soumettre.xlsx"
        ThisWorkbook.SaveAs Filename:= _
            (ThisWorkbook.Path & "\" & "essai_a_soumettre.xlsx"), FileFormat:= _
            xlOpenXMLWorkbook, CreateBackup:=False
        ActiveWorkbook.Close
    End Sub
    Merci à tous ceux qui m'ont apportés leurs lumières
    @bientôt

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

Discussions similaires

  1. Utiliser et modifier un fichier access et autres en réseau
    Par yannjoe dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 25/10/2007, 16h03
  2. Réponses: 1
    Dernier message: 30/08/2006, 19h26
  3. Inclure un fichier externe sans utiliser les frames
    Par gazza dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/07/2006, 09h52
  4. fichier batch (copie depuis lecteur réseau avec mot de passe
    Par Mickey34 dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 09/02/2006, 23h33
  5. Fichier manquant en utilisant une base de données DBF
    Par Stephane Michaud dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/07/2005, 12h22

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