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

Macros et VBA Excel Discussion :

[VBA-E] Bloquer GetOpenFileName dans un dossier particulier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    juste pour savoir, en utilisant un getopenfilename est il possible de faire que l'utilisateur attérissant dans le bon répertoire, ne puisse pas en sortir ?
    Par exemple : le chemin par défaut soit C:\fichiersdetests\ et qu'il ne puisse pas sortir de ce dossiers?

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je ne sais pas si c'est possible tel que tu le formules mais tu aurais la solution consistant à mettre une vérif dans ton code : Si ce n'est pas le bon répertoire, tu replaces l'utilisateur dans le bon et tu lui dis qu'il s'est "trompé" ou qu'il n'a rien à faire "ici", enfin bref, tu l'engueules pour qu'il ne recommence pas. Il pourra visiter mais "pas touche !"
    Juste une idée
    A+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Par défaut
    Salut,
    je sais pas si ma réponse va arriver trop tard, mais essaye avec cette routine là:

    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
    Function ChoixDossierFichier(SelType As Byte) As String
         Dim objShell As Object, objFolder As Object
         Dim Chemin As String, msg As String
         Dim FlagChoix As Long, NbPoint As Integer
     
         If SelType = 0 Then
              FlagChoix = &H1
              msg = "Sélectionner un dossier :"
         Else
              FlagChoix = &H4000
              msg = "Sélectionner un fichier :"
         End If
     
         Set objShell = CreateObject("Shell.Application")
    ' 1er paramètre toujours 0 (zéro). Il représente le handle de la fenêtre parent
    ' 2ème paramètre Titre de la boite, en dessous de la barre de titre
    ' 3ème paramètre options de BrowseForFolder
    ' 4ème paramètre Facultatif. Répertoire de début d'exploration
         On Error Resume Next
         Set objFolder = objShell.BrowseForFolder(&H0&, msg, FlagChoix)
    'Si l 'objet retourné est valide, on teste son contenu (item.title)
         'Si on a sélectionné la racine d'une partition, il se compose du nom de la partition,
         ' suivi de sa lettre et ":" entre parenthèses
         NbPoint = InStr(objFolder.Title, ":")
         If NbPoint = 0 Then
              ' &h1
    'Sinon, il se compose du nom du dossier uniquement, sans le chemin précédent
              'On récupère ce chemin à l'aide des propriété et méthode ParentFolder.ParseName
              Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
         Else
              ' &h1
    ' si racine on récupère la lettre du lecteur et les 2 points
              Chemin = Mid(objFolder.Title, NbPoint - 1, 2)
         End If
         ChoixDossierFichier = Chemin
         Debug.Print Chemin
    End Function
    Dans la fonction objShell.BrowseForFolder, tu mets ton répertoire par défaut. L'utilisateur ne pourra pas remonter l'arborescence....
    J'espère que ca pourra te filler un coup de main!!

    PS: si qqu'un pouvait me dire comment je fais pour activer la fonction pour que mon code VBA apparaissent dans une fenetre séparée, ca serait cool!! Merci!

  4. #4
    Membre Expert
    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
    Par défaut
    Ha! enfin! un nouveau qui s'inscrit pour répondre plutôt que de poser une question! C'est rafraichissant!

    Bienvenue sur DVP.

Discussions similaires

  1. Réponses: 16
    Dernier message: 22/01/2017, 13h23
  2. Réponses: 3
    Dernier message: 09/11/2010, 10h48
  3. Getopenfilename dans un dossier specifique
    Par seb_march dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 28/06/2010, 10h38
  4. Réponses: 7
    Dernier message: 15/06/2006, 18h36
  5. [VBA-E]Compter nombre de fichier dans un dossier
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/05/2006, 15h36

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