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 :

Besoin de méthode(s) pour piloter différents fichiers


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut Besoin de méthode(s) pour piloter différents fichiers
    Bonjour,

    J'ai créé un fichier maquette, avec un formulaire de saisie et des procédures de mise à jour des données.
    J'ai dupliqué ce fichier pour l'ensemble de mes agences, afin que chacune soit autonome.

    Cependant, à chaque fois que je veux modifier du code, je suis obligée de sauvegarder toutes les saisies et de recommencer la duplication de la maquette et de remettre les données.

    Je voudrais trouver une solution / méthode pour garder le pilotage des fichiers agences dans le fichier maquette et que si je fais une modif, une correction de bug dans le fichier maquette, cela s'applique à toutes mes agences.

    Est-ce que vous pouvez me donner des idées, svp. Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mouftie Voir le message
    Bonjour,

    Regardez l'utilisation des macros complémentaires (fichiers .xlam). Ces fichiers vont contenir le code et vous permettront de dissocier le code, des données. Vous pouvez développez des menus et sous-menus qui apparaîtront dans le ruban dans la partie Compléments, comme le montre ce vidage d'écran.


    Pièce jointe 577946

    A partir d'un fichier .xlsm, on le transforme en .xlam et dans ThisWorkBook : IsAddin = True.
    L'installation sur un poste se fait à partir des Options - Compléments.
    Il reste un seul onglet Feuil1 dans le fichier, mais celui-ci reste inaccessible. En revanche, on peut s'en servir pour y mettre des tables de paramètres communs.
    Avec la propriété TooltipText de la variable de type CommandBarPopup vous pouvez indiquer la version en cours et la personne à contacter en cas de problème. L'information apparaîtra en passant la souris sur le nom de la macro dans le ruban.


    Avant de vous lancer, regardez bien les versions d'office avec lesquelles la macro devra travailler. Cela peut être galère si vous avez des versions hétérogènes, mais rien ne vous empêche d'avoir plusieurs versions selon le parc. Calez votre développement sur la version la plus ancienne, ou vérifiez le fonctionnement sur la version la plus ancienne avant de diffuser.

  3. #3
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Eric,
    J'ai étudié comment créer des fichiers Xlma, à partir du tuto https://fr.wikiversity.org/wiki/Macr...C3%A9mentaires et en ajoutant dans thisworkbook : IsAddin = True.

    Dans le tuto, il est dit qu'on peut utiliser les macros de n'importe quel fichier (à partir du moment où le complément a bien été coché dans les compléments excel) à partir d'un clic droit sur une cellule, en bas du menu contextuel, les compléments sont sensés apparaître. ce n'es pas mon cas, rien n'apparait.

    Donc si je veux utiliser les macros, comme elles ne sont pas visible dans le menu macro (Alt F8), je dois aller la lancer à partir du module de VBE.

    Cela ne me parait pas envisageable. Est-ce le fait que je soit en office 365, que le complément n'apparait pas dans le menu contextuel ? Y a-t-il qqch à faire ?

    Merci pour ton aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mouftie Voir le message
    As-tu moyen de mettre ton fichier .xlam en ligne ?

    Quel nom devrait apparaître dans les compléments du ruban ?

  5. #5
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Merci de ta réponse
    As-tu moyen de mettre ton fichier .xlam en ligne ?
    Non, je n'ai aucun site

    Le fichier xlsm est identique à celui du site Wikiversity, avec en plus, dans le module1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Changer()
    Usf1.Show
    End Sub
    et dans ThisWorkbook (en direct sans sub)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Explicit
    IsAddin = True
    Quel nom devrait apparaître dans les compléments du ruban ?
    Voici une copie d'écrans

    Nom : Complement1.jpg
Affichages : 179
Taille : 144,7 Ko

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mouftie Voir le message
    Mets en place cette macro complémentaire dans C:\Users\XXXXX\AppData\Roaming\Microsoft\AddIns.
    Attention, si tu ajoutes des menus et sous menus, il te faudra sauvegarder la macro dans l'éditeur VBA et relancer Excel pour que cela soit pris en compte.
    Pour les procédures, tu peux les modifier à ta guise.

  7. #7
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Eric,

    C'est assez compliqué pour moi de comprendre l'alimentation des menus

    Dans l'application que tu m'as donnée, il s'est créé un nouveau menu dans le ruban "Compléments" (or dans ton code je ne vois nulle part le mot compléments donc je n'ai pas compris comment il s'est créé)

    Dans ce menu "compléments" il s'est créé un onglet "Commandes de menu", là encore, dans le code je ne trouve rien ; comment désigne-t-on le nom de l'onglet ?

    Tu as créé un menu "MonAppli" avec des sous-menu, un peu comme le menu "Changer de fenêtre" dans le menu "affichage" d'Excel. peut-on ajouter des icônes et peut-on les personnaliser ?

    Si j'ai bien compris, dans MonAppli, je dois mettre un sous-menu pour tous les programmes à lancer.

    Comment crée-t-on une nouvelle colonne de titre menu ?

    Merci de ton aide et de ta compréhension pour mes questions

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mouftie Voir le message
    Dans l'application que tu m'as donnée, il s'est créé un nouveau menu dans le ruban "Compléments" (or dans ton code je ne vois nulle part le mot compléments donc je n'ai pas compris comment il s'est créé)
    Comme ceci :

    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
     
       With NouveauMenu
     
     ' Traitement 1
          With .Controls.Add(Type:=msoControlPopup)
                .Caption = "Traitement1"
                .BeginGroup = True
                .TooltipText = "Commentaire traitement 1"
          End With
     
          Set Item = CommandBars(1).Controls("MonAppli").Controls("Traitement1").Controls.Add(Type:=msoControlButton)
          With Item
                  .Caption = "Traitement 1"
                  .OnAction = "M010A_Traitement11"
                  .TooltipText = "Votre commentaire traitement 11"
            End With
            Set Item = Nothing
     
     
          Set Item = CommandBars(1).Controls("MonAppli").Controls("Traitement1").Controls.Add(Type:=msoControlButton)
          With Item
                  .Caption = "Traitement 2"
                  .OnAction = "M010A_Traitement12"
                  .TooltipText = "Votre commentaire traitement 12"
            End With
            Set Item = Nothing

    Dans ce menu "compléments" il s'est créé un onglet "Commandes de menu", là encore, dans le code je ne trouve rien ; comment désigne-t-on le nom de l'onglet ?
    Il faut modifier ton code pour désigner ton fichier et tes onglets, si ce n'est pas fait.


    Tu as créé un menu "MonAppli" avec des sous-menu, un peu comme le menu "Changer de fenêtre" dans le menu "affichage" d'Excel. peut-on ajouter des icônes et peut-on les personnaliser ?
    A ma connaissance non, mais je ne connais pas suffisamment pour être catégorique.

    Si j'ai bien compris, dans MonAppli, je dois mettre un sous-menu pour tous les programmes à lancer.
    Oui

    Comment crée-t-on une nouvelle colonne de titre menu ?
    Si c'est un sous menu dont tu parles, c'est comme dans l'exemple plus haut. Il faut que ton sous menu contienne le menu.

  9. #9
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Eric,

    Je continue à chercher, mais ce n'est toujours pas brillant...
    J'ai trouvé différents codes qui alilmentent le ruban, dans le menu complément. Le tien c'est mis dans un onglet tout seul intitulé "Commandes de menu". tous ceux que j'ai trouvé se mettent dans un même onglet "Barres d'outils personnalisées". si les différents fichiers sont ouverts, je me retrouve avec des menus des différentes applications toutes mélangées.
    J'ai lu qu'il y a 2 onglets possibles dans le menu "compléments" : "Commandes de menu" et "Barres d'outils personnalisées". je ne comprends pas la différence ni comment on se retrouve dans l'un ou dans l'autre
    Je n'ai pas compris ton explication à ce sujet ; quelle partie du code dois-je modifier,
    Il faut modifier ton code pour désigner ton fichier et tes onglets, si ce n'est pas fait.
    J'ai trouvé comment mettre un menu et son icône, l'un à côté de l'autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        With cb
            ' Ajout d'un item au menu
            Set cc = cb.Controls.Add(msoControlButton, , , , True)
            With cc
                .BeginGroup = True
                .Caption = "Lancer programme  Ic1   ***"
                .OnAction = "Btn1"
                .TooltipText = "Vers premier onglet du classeur ..."
                .Style = msoButtonIconAndCaption
                .FaceId = 1017
                 shtCustomIcons.Shapes("Image 2").Copy
                .PasteFace
            End With
    (/I\ mais il faut que les images soient présentent dans le fichier)

    J'ai trouvé comment ouvrir et fermer le menu à l'ouverture et à la fermeture du fichier pour ne pas laisser des boutons sans leur macro

    Par contre, je ne sais pas comment aller à la ligne pour mettre mes icônes les unes sous les autres. Actuellement, je suis obligée de mettre pleins d'espaces dans mon Caption pour ne pas les coller les uns aux autres ?
    Je voudrais également savoir comment mettre des lignes verticales pour passer à un nouveau menu
    Si on passe par l’utilitaire Custom UI Editor, est-ce cela est intégrable au fichier. xlam ? et donc utilisable par les utilisateurs landa ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mouftie Voir le message
    Par contre, je ne sais pas comment aller à la ligne pour mettre mes icônes les unes sous les autres. Actuellement, je suis obligée de mettre pleins d'espaces dans mon Caption pour ne pas les coller les uns aux autres ?
    Bonjour,

    La méthode est décrite dans le code en #8 pour développer tes menus. Tu pars de NouveauMenu et tu développes des menus et sous menus comme c'est décrit. En revanche, je ne pourrai pas t'aider pour installer les icônes et développer l'autre méthode dont tu parles.


    Il faut modifier ton code pour désigner ton fichier et tes onglets, si ce n'est pas fait.
    Le soucis avec les macros complémentaires, c'est que tu peux lancer une procédure dans le vide. Pour éviter cela, je contrôle la présence du fichier de travail avec la fonction ci-dessous :
    Nb : Cette fonction n'a des sens que dans une macro complémentaire...
    Le fichier porte souvent un nom suivi d'une date de version. Il faut donc tester les N premiers caractères du nom pour vérifier que tu as affaire à un fichier du bon type.

    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
     
     
    Function FichierOuvert(ByVal NomDuFichier As String, ByVal PositionFin As Integer) As Boolean
     
    Dim WbEnCours As Workbook
     
        FichierOuvert = False
     
        If Workbooks.Count = 0 Then
           Exit Function
        Else
           For Each WbEnCours In Workbooks
               With WbEnCours
                    If LCase(Mid(.Name, 1, PositionFin)) = LCase(Mid(NomDuFichier, 1, PositionFin)) Then
                       FichierOuvert = True
                       .Activate
                       Exit Function
                    End If
               End With
           Next WbEnCours
        End If
     
    End Function
     
    Sub Test()
     
      MsgBox FichierOuvert("XXXXXX 2020-09-01.xlsm", 6)
     
    End Sub

  11. #11
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Eric,
    Je vais tester ta fonction quand j'aurai avancé sur mes tests.
    Pour l'instant, c'est la rentrée et on m'a mise sur autre chose.
    Merci encore pour ta disponibilité.

  12. #12
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Eric,

    J'ai un pb avec un test xlam que j'ai fait, c'est que je le retrouve dans plein d'autres fichiers (notamment que j'ai livré) et qui envoie des messages d'erreur du type :

    Impossible de se connecter à "https://monentreprise-my.sharepoint.com/Users/moi/AppDat/Roaming/Microsoft/Addins/MesFonctions.xlam". Merci de vérifier l'adresse web que vous utilisez est correcte.
    Comment faire pour éviter ce genre de pb.
    Je pense que ce qui c'est passé, dans ce cas, c'est que j'ai copier une fonction du fichier à livrer dans celui xlam ; puis quand je suis revenu sur le fichier à livrer, Excel à pris les liens xlam.
    Y a-t-il une méthode pour bloquer les xlam ?

    Merci de me partager ton expérience.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mouftie Voir le message
    Bonjour,

    Je ne connais pas ce fonctionnement sur SharePoint. Dans mon fonctionnement, chaque poste est équipé d'une version Excel et les macros complémentaires sont installées sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C: ou D:/Users/XXXXX/AppDat/Roaming/Microsoft/Addins/
    Comment est-ce organisé chez toi ?

  14. #14
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Eric,

    Comment est-ce organisé chez toi ?
    de la même manière que toi : C:\Users\MonNom\AppData\Roaming\Microsoft\AddIns

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mouftie Voir le message
    e pense que ce qui c'est passé, dans ce cas, c'est que j'ai copier une fonction du fichier à livrer dans celui xlam ; puis quand je suis revenu sur le fichier à livrer, Excel à pris les liens xlam.
    Y a-t-il une méthode pour bloquer les xlam ?
    Bonjour,


    OK. Si deux fonctions cohabitent, ne devrais-tu pas nommer différemment celle dans la macro complémentaire ?

Discussions similaires

  1. [XL-2013] Besoin de votre aide pour automatiser un fichier
    Par yolojo dans le forum Excel
    Réponses: 4
    Dernier message: 01/03/2019, 08h51
  2. [XL-2016] Besoin d'une formule pour archever mon fichier
    Par NOSLIB dans le forum Excel
    Réponses: 8
    Dernier message: 17/01/2019, 10h47
  3. Réponses: 19
    Dernier message: 12/08/2006, 16h32
  4. Besoin d'un conseil pour une sélection Access/fichier
    Par Oluha dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/03/2005, 19h10

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