MsgBox n'apparaissant qu'une seule fois

Résolu/Fermé
FlorianR - 17 nov. 2020 à 23:37
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 19 nov. 2020 à 23:45
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

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
Modifié le 18 nov. 2020 à 23:54
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
Utilisateur anonyme
18 nov. 2020 à 07:34
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
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
18 nov. 2020 à 12:19
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
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > FlorianR
18 nov. 2020 à 16:20
un exemple:

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

@+ Le Pivert
0
Utilisateur anonyme > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
Modifié le 18 nov. 2020 à 16:50
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
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
19 nov. 2020 à 23:45
Comment ça "même si différent de la demande initiale" ??
ils sont créés s'ils n'existent pas
0