Choix de configurations a l'ouverture d'un fichier Excel

mailletj Messages postés 4 Statut Membre -  
mailletj Messages postés 4 Statut Membre -
Bonjour,
Je viens vers vous car je suis bloqué actuellement dans la conception de mon fichier Excel VBA.
J’ai un niveau moyen en vba et je n’ai jamais vu ce cas en cours.

Je souhaiterai lorsque j’ouvre mon fichier Excel de base avoir la possibilité de l’ouvrir sous différentes configurations.
J’ouvre le fichier de base (ou modèle) et je choisi « configuration 1 » ; « configuration2 » ; « configuration3 » dans un message box….
Une fois que le choix est fait le fichier sera enregistré et rempli sans ne plus jamais demander le choix de configuration.
Chaque configuration est un classeur Excel avec ses onglets.
J’espère avoir été clair pouvez-vous m’aider et me sortir de ce blocage !!

Merci d’avance pour votre aide
Jérémy

4 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Pourquoi faire compliqué quand on peut faire simple ?

    Créer directement 3 modèles !!!
    2
  2. Utilisateur anonyme
     
    Bonjour Jérémy,

    Tout ce que je vais te proposer est dans ton fichier de base.

    Dans une cellule non déjà utilisée, par exemple G1, mets-y 0 ;
    à l'ouverture de ce classeur modèle, la macro Workbook_Open()
    (de ThisWorkbook) affichera ton MsgBox seulement si G1 = 0.

    Tu choisiras alors une de tes 3 configurations, et tu inscriras le n°
    correspondant en G1 : 1, 2, ou 3.

    Ton choix est fait, et quand tu sauvegarderas ton fichier modèle,
    ce choix en G1 sera sauvegardé en même temps.

    À la prochaine ouverture de ce fichier, pas de MsgBox puisque
    G1 est différent de 0.

    Pour que tes utilisateurs ne modifient pas eux-même G1 :
    Laisse la protection de départ : ☑ Verrouillée (donc le code VBA
    devra déprotéger la feuille, modifier G1, reprotéger la feuille).

    Tu peux cacher cette cellule en mettant une couleur de police blanc
    (mais elle se verra quand même si incluse dans une sélection).

    Autre solution : au lieu de la cellule G1, utilise un nom défini
    Config qui jouera le même rôle.

    Si ton problème est réglé, merci d'aller en haut de page
    pour cliquer sur « Marquer comme résolu ».

    Cordialement.  😊
    1
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Bonjour,

      Il est préférable d'utiliser une propriété de fichier personnalisée (CustomDocumentProperties).

      Cdlt
      Patrice

      .
      0
      1. Utilisateur anonyme > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
         
        Bonjour Patrice33740,

        Selon ta recommandation, je propose ceci à Jérémy :

        A) Dans ThisWorkbook

        
        Private Sub Workbook_Open()
          On Error Resume Next ' évite une erreur si le nom est déjà existant
          ActiveWorkbook.CustomDocumentProperties.Add "Config", 0, 1, 0
        End Sub
        
        

        La propriété Config est créée et initialisée à 0.

        B) Dans Module1

        
        Option Explicit
        
        Sub SetConfig()
          Dim n As Byte
          If ActiveWorkbook.CustomDocumentProperties("Config") <> 0 Then Exit Sub
          Do
            n = InputBox("n° Config (1 à 3) :")
          Loop Until n >= 1 and n <= 3
          ActiveWorkbook.CustomDocumentProperties("Config") = n
        End Sub
        
        

        Je pense que ça devrait aller.

        Cordialement.  😊
         
        0
      2. mailletj Messages postés 4 Statut Membre > Utilisateur anonyme
         
        Merci je vais tester
        0
  3. mailletj Messages postés 4 Statut Membre
     
    Merci pour ton retour.
    Cependant je désire pouvoir utiliser le fichier de base sur plusieurs postes distincts par plusieurs utilisateurs différents.
    0
  4. mailletj Messages postés 4 Statut Membre
     
    Merci pour vos contributions je vais essayer ca cette semaine!
    Merci beaucoup
    0