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

VBA Word Discussion :

Bloquer certains répertoires dans un menu "Parcourir"


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 3
    Points
    3
    Par défaut Bloquer certains répertoires dans un menu "Parcourir"
    Bonjour, voila mon problème :

    J'ai un formulaire permettant d'enregistrer des documents Word. L'utilisateur peut choisir le répertoire d'enregistrement avec un bouton "Parcourir", qui est un FileDialog(msoFileDialogFolderPicker).

    Y a t-il un moyen pour empêcher l'utilisateur de remonter trop haut dans l'arborescence ?
    (Par exemple, arrivé à un certain répertoire, le bouton "Dossier Parent" se désactive)

    Merci

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Tu programme en VB6 (pour piloter un projet Word) ou directement en VBA ?

    Dans un cas comme dans l'autre, tu peux visualiser l'aide de VBA Office pour avoir toutes les informations utiles sur le FileDialog.

    Si tu ne trouves rien qui fait ton bonheur, tu dis.

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Eh non, toujours rien..
    C'est peut etre pas dans un FileDialog qu'on peu faire ca. J'ai cherché dans l'aide mais aucune propriété qui n'a l'air de convenir.

    Sinon je programme directement en VBA.

  4. #4
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Je réitère ma question :
    Citation Envoyé par zaza
    Tu programme en VB6 (pour piloter un projet Word) ou directement en VBA ?
    parce que si tu programme en VBA, tu n'es pas dans bon forum...

    Ceci dit, je n'ai aucune idée qui pourrait t'aider pour l'instant. Ne perds pas courage...

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    J'attends comme zazaraignée que tu précises (c'est important) ton environnement de développement.

    Je ne suis par ailleurs par certain de comprendre ce que tu veux dire par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Y a t-il un moyen pour empêcher l'utilisateur de remonter trop haut dans l'arborescence ?
    (Par exemple, arrivé à un certain répertoire, le bouton "Dossier Parent" se désactive)
    Peux-tu préciser plus clairement ?
    Celà doit-il (et comment alors) s'appliquer à tout répertoire ou seul un répertoire "principal" connu peut-il être concerné ?

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Oui, je programme en vba, je fais Alt+F11 sous word et j'écris mon code.

    Je vous reformule mon problème :
    En fait, j'ai un formulaire avec un bouton "Parcourir" servant à définir un répertoire de sauvegarde pour le document actif. Et, selon le type de document (définie dans les propriétés du doc) , il ne peut l'enregistrer que dans un certain répertoire (défini dans une base de données).

    Par exemple :"G:/Rapport/"
    L'utilisateur peut créer n'importe quel dossier dans "G:/Rapport" pour sauver son doc, mais ne doit surtout pas sortir du rep "Rapport" !

    Et donc ma question : peut-on bloquer le bouton "dossier parent" lorsque l'utilisateur arrive à "Rapport" ?

    Bon je sais pas si j'ai été très clair mais si vous avez une idée, je prend!

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    une solution simple existe, bien sûr,

    Mais j'attendrai que ta question soit placée où il convient (VBA) et non ici (VB6)...
    Demande son déplacement.

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Ne serait-il pas plus simple de limiter les droits d'écriture sur le serveur ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bon...

    Je te propose ceci :

    Sur ta UserForm : un cadre Frame1 contenant une listbox List1

    En dehors du cadre : un bouton de commande Command1

    ce code :

    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
    30
    31
    32
    33
    34
    35
    36
    Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long
     
    Private repertoire As String
     
    Private Sub UserForm_Initialize()
      repertoire = "G:\rapport\"
      Frame1.Visible = False
    End Sub
     
    Private Sub Command1_Click()
      Frame1.Visible = True
      DoEvents
      List1.Clear
      mesreps = Dir(repertoire, vbDirectory)
      Do While mesreps <> ""
        If mesreps <> "." And mesreps <> ".." Then
          If (GetAttr(repertoire & mesreps) And vbDirectory) = vbDirectory Then
            List1.AddItem mesreps
          End If
        End If
        mesreps = Dir
      Loop
      List1.AddItem "CREER UN NOUVEAU DOSSIER"
    End Sub
     
     
    Private Sub List1_Click()
      If List1.Selected(List1.ListCount - 1) Then
        nouveau = InputBox("nom à donner")
        SHCreateDirectoryEx 0, repertoire & nouveau, ByVal 0&
        Command1_Click
      Else
        MsgBox "tu as choisi d'enregistrer dans " & repertoire & List1.Text
        Frame1.Visible = False
      End If
    End Sub
    clique sur Command1 ==>> ton cadre apparaît, avec, dans la listbox, tous les sous-répertoires présents dans ton répertoire G:\rapport"
    on peut alors :

    Soit en créer un nouveau, en cliquant sur l'article qui t'y invite ==>> ce nouveau répertoire est alors créé et ajouté à la liste
    Soit choisir un répertoire déjà présent (y compris donc un répertoire nouvellement créé)

    A toi d'adapter à ton besoin et de t'en servir comme tu l'entends

  10. #10
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Je ne sais pas si c'est possible de limiter ca directement sur le serveur car les limitations se font au niveau des types de fichiers, qui sont définies dans les propriétés du document.

    ucfoutu merci pour ta solution mais je voulais absolument passer par un menu parcourir. Ca fait plus professionnel

    Et j'ai trouvé une solution qui me convient :
    Les 3 controles sur le formulaire :
    cbxtype = liste déroulante du choix du type de document
    cbxservice = liste déroulante du choix du service dans l'entreprise
    tbxrepertoire = textbox où s'inscrit le répertoire choisi dans le menu parcourir

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    Private Sub BtnRep_Click()
     
        Dim db As Database
        Dim rs As Recordset
        Dim sql As String
        Dim file As FileDialog
        Dim selection As Variant
        Dim taille As Integer
        Dim base As String
     
    'Ouverture de la base de données
        Open "W:\Projet INTRANET\Automatisation_Office\Fichiers de travail\INI\bd.txt" For Input As #1
        Do While Not EOF(1)
            Input #1, base
            Set db = OpenDatabase(base)
        Loop
        Close #1
     
    'Requête cherchant le répertoire de sauvegarde selon le type de fichier
        sql = "SELECT * FROM Stockage WHERE ref_type='" & CbxType & "' AND ref_service ='" & CbxService & "'"
        Set rs = db.OpenRecordset(sql)
     
        taille = Len(rs.Fields("repertoire"))
        rep = 0
     
        Do While rep = 0
            Set file = Application.FileDialog(msoFileDialogFolderPicker)
            With file
                If .Show = -1 Then
                    For Each selection In .SelectedItems
                        TbxRepertoire.Text = file.SelectedItems(1)
                    Next selection
                Else
                End If
            End With
            Set file = Nothing
     
            If Left(TbxRepertoire.Text, taille) = rs.Fields("repertoire") Then
                rep = 1
            Else
                MsgBox ("Vous ne pouvez pas enregistrer dans ce répertoire. Veuillez choisir un répertoire dans " & rs.Fields("repertoire"))
            End If
        Loop
        rs.Close
     
    End Sub
    Merci à tous

Discussions similaires

  1. [Débutant] Bloquer le répertoire dans une OpenFileDialog
    Par Hobbi1 dans le forum VB.NET
    Réponses: 7
    Dernier message: 23/03/2015, 14h17
  2. Lister fichiers et sous répertoire dans un menu déroulant
    Par WeDgEMasTeR dans le forum Langage
    Réponses: 8
    Dernier message: 23/05/2008, 16h48

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