MsgBox n'apparaissant qu'une seule fois

Résolu
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. Contributeur
    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
    1. 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. 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
    2. Contributeur
      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. 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
      2. Contributeur
        @FlorianRun exemple:

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

        @+ Le Pivert
        0
      3. @cs_Le PivertBonjour,

        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
    3. 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. Contributeur
        Comment ça "même si différent de la demande initiale" ??
        ils sont créés s'ils n'existent pas
        0