MsgBox n'apparaissant qu'une seule fois

Résolu
FlorianR -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je viens de créer un fichier générique de gestion de restaurant.
J'ai installé sur la page d'accueil un bouton exécutant une macro permettant de créer l'arborescence nécessaire à l'utilisation du fichier.
J'ai mis en place une MsgBox à l'ouvertrue du fichier donnant les informations des actions à effectuer à la première utilisation du fichier (à savoir l'installation de l'arborescence).
J'aimerai que ce message apparaisse à l'ouverture jusqu'à exécution de la macro installant l'arborescence, mais ne s'ouvre plus aux ouvertures suivantes si l'arborescence a été créée.
Est-ce quelque chose d'envisageable selon vous? Si oui, avez-vous une idée du code à intégrer pour que cela devienne réel? :)

Merci d'avance pour votre aide

Configuration: Windows / Chrome 86.0.4240.198

4 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour à tous,

    à l'ouverture suivante il me rouvre la MsgBox pour créer l'arborescence...
    C'est normal, la variable a été réinitialisée. Il aurait fallu stocker le résultat dans un nom qui est enregistré avec le classeur.

    Au plus simple je ferai, dans ThisWorkbook :
    Private Sub Workbook_Open()
        Dim nb As Long
        If Dir("C:\GestionResto\", vbDirectory) = "" Then MkDir ("C:\GestionResto\"): nb = nb + 1
        If Dir("C:\GestionResto\Planning Salle", vbDirectory) = "" Then MkDir ("C:\GestionResto\Planning Salle"): nb = nb + 1
        If Dir("C:\GestionResto\Planning Cuisine", vbDirectory) = "" Then MkDir ("C:\GestionResto\Planning Cuisine"): nb = nb + 1
        If Dir("C:\GestionResto\Fiche de Renseignements", vbDirectory) = "" Then MkDir ("C:\GestionResto\Fiche de Renseignements"): nb = nb + 1
        If Dir("C:\GestionResto\Facture", vbDirectory) = "" Then MkDir ("C:\GestionResto\Facture"): nb = nb + 1
        If Dir("C:\GestionResto\Devis", vbDirectory) = "" Then MkDir ("C:\GestionResto\Devis"): nb = nb + 1
        If Not (nb = 0 Or nb = 6) Then MsgBox "Attention, y'a un loup !"
    End Sub

    je t'ai mis un mini contrôle. Pour moi c'est anormal s'il y a autre chose que 0 ou 6 créations. Ca ne devrait pas arriver.
    A toi de voir si tu juges utile de le garder et voir quelles actions faire si ça arrive.
    eric

    1
  2. Utilisateur anonyme
     
    Bonjour,

    Difficile de répondre précisément sans savoir à quoi ressemble cette arborescence.
    Mais vous pouvez vérifier qu'elle existe ou pas , par exemple en testant la présence du dossier le plus profond de l'arborescence avec la fonction FolderExist
    0
    1. FlorianR
       
      Bonjour RoMa_31,
      L'arborescence est composée d'un dossier et de quelques sous-dossiers directement sous C:\
      J'ai essayé le test sans succès. J'avoue être novice en la matière....
      0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Tu peux faire cela avec une variable Boolean

    Dans un module mettre ceci:

    Option Explicit
    Public arborescence As Boolean


    dans ThisWorkbook cela:

    Option Explicit
    Private Sub Workbook_Open()
    If arborescence = False Then
    MsgBox "Ceer votre arborescence"
    End If
    End Sub
    


    et à la fin du code de création mettre :

    arborescence = True


    0
    1. FlorianR
       
      Bonjour cs_Le Pivert,
      J'ai créé un module avec le code suivant :

      Option Explicit
      Public arborescence As Boolean

      Dans ThisWorkBook, le code est le suivant :

      Private Sub WorkBook_Open()

      If arborescence = False Then

      Msg = "Blablabla"
      Style = vbOKOnly + vbInformation
      Title = "Première utilisation "

      Response = MsgBox(Msg, Style, Title)

      Sheets(1).Activate

      End If

      End Sub

      Dans la création, voici le code :

      Sub CreationArborescence()

      MkDir ("C:\GestionResto\")
      MkDir ("C:\GestionResto\Planning Salle")
      MkDir ("C:\GestionResto\Planning Cuisine")
      MkDir ("C:\GestionResto\Fiche de Renseignements")
      MkDir ("C:\GestionResto\Facture")
      MkDir ("C:\GestionResto\Devis")

      arborescence = True

      End Sub

      Il me semble avoir fait ce que tu avais préconisé, mais une fois l'arborescence créée, à l'ouverture suivante il me rouvre la MsgBox pour créer l'arborescence...

      J'ai beau tenté (exit sub, chemin > 0, ...), je suis en plein brouillard... désolé...

      Je peux abuser de tes lumières?

      Merci.
      0
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > FlorianR
         
        un exemple:

        https://www.cjoint.com/c/JKsptvJRfvQ

        @+ Le Pivert
        0
      2. Utilisateur anonyme > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Bonjour,

        Je pensais aussi à une méthode qui fonctionne à n'importe quel lancement.
        Un exemple trouvé ici https://www.encodedna.com/excel/how-to-check-if-a-folder-exist-using-vba-macro-in-excel.htm et adapté avec une des arborescences du projet :
        Option Explicit
        
        Dim sFolder As String
        
        Sub checkFolderExists()
                
            Dim objFso
            Set objFso = CreateObject("Scripting.FileSystemObject")
            
            sFolder = "C:\GestionResto\Fiche de Renseignements"
            
            If objFso.FolderExists(sFolder) Then        ' Check if the folder exists.
                MsgBox "Yes, it exist"
            Else
                MsgBox "No, the folder does not exist"
            End If
        End Sub
        0
  4. FlorianR
     
    Bonsoir à tous,
    Merci pour votre aide généreuse à tous! La proposition d'eriiic était effectivement la plus simple et répond à mon besoin même si différent de la demande initiale. Merci quand même aux autres!

    Bonne soirée!
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Comment ça "même si différent de la demande initiale" ??
      ils sont créés s'ils n'existent pas
      0