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 :

Choix répertoire (suite)


Sujet :

Macros et VBA Excel

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    Désolé, j'ouvre un autre post car j'ai mis l'ancien en résolu.

    Donc j'ai bien ma fenêtre de choix de répertoire, le problème c'est que l'utilisateur dois choisir un répertoire sur un serveur qui en contien des millier et descendre d'une dizaine d'arborescence avant d'atteindre les répertoire désirés.

    Est-il possible au moment d'ouvrir la fenetre de selection de repertoire, de prépositionner sur un des sous, sous, ..... répertoire.

    Je sais pas si j'ai été clair.

    Merci d'avance

    D'ailleur il y à tellement de sous répertoire, que ma fenêtre est trop petite on peux pas l'agrandir au moment de l'affichage ?

    J'ai mis un écrans pour expliquer plus clairement ce que j'aimerais obtenir à l'ouverture de la fenêtre.

    Je suis descendu dans l'arborescence et j'ai agrandi la fenêtre, j'aimerais qu'elle s'ouvre directement comme ca, je sais pas si c'est possible, j'en demande peut-être trop.

    Encore merci

    En cherchant la fonction BrowseForFolder sur Google, j'ai trouvé.

    Il faut mettre le chemin du sous répertoire en 4ème paramètre de la fonction BrowseForFolder pour limiter le choix à un sous répertoire.

    D'une facon plus générale, ou peut-on trouver de la doc décrivant ce genre de fonction ?

    Quand je tape BrowseForFolder dans l'aide VB il n'y à pas de réponse. J'aimerais pouvoir connaitre les different paramètres et données sur ces objets. Et trouver aussi d'autre objet utile sans avoir a vous déranger à chaque problème.

    Merci
    Images attachées Images attachées  

  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
    Tu ne pourras pas afficher l'arborescence que tu nous mets par la seule commande.
    Ce que tu peux obtenir c'est d'obtenir le répertoire 2007 ou le répertoire parent ou le parent du parent, mais tu n'auras pas ce que tu nous mets. C'est l'un ou l''autre.
    Maintenant, si ce qui t'intéresse vraiment c'est 2007, alors tu désignes d'abord le drive avec Chdrive puis le répertoire complet désiré avec ChDir. Enfin tu affiches la boîte de dialog ouvrir avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs.Item(xlDialogOpen).Show
    Si je réponds à côté, tu dis
    A+

  3. #3
    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
    Edit
    Je viens d'aller dans ton ancienne discussion pour comprendre ton pb.
    Tâche de continuer sur la même discussion la prochaine fois, un clic sur Résolu l'enlève.
    Ce que tu veux est en fait donner la possibilité à l'utilisateur de sélectionner le répertoire où enregistrer le fichier. Si c'est vbien ça, à la place du code précédent, tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.Dialogs.Item(xlDialogSaveAs).Show
    T'affiche la boîte de dialogue Excel "Enregistrer sous"
    Et si tu as pris la précausion d'indiquer au préalable le drive et le chemin du répertoire parent, la boîte de dialogue placera au bon endroit.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    Non je ne veux ni "ouvrir", ni "enregistrer sous"

    Mon programme lis un fichier 'anomalie, effectue une rupture sur le code anomalie et crée un classeur Excel par anomalie portant le nom du code anomalie.

    Je veux juste donner la possibilité à l'utilisateur de choisir le dossier ou créer les different classeur.

    J'ai résolu le problème en ajoutant un 4ème paramètre à la fonction BrowseForFolder qui commencer l'arborescence des dossier à l'endroit désiré

    J'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&, "L:\GRPORG\DI\Ixa\Migration SGPM")
    Set objFolderItem = objFolder.Items.Item
     
    chemin = objFolderItem.Path
    Puis au moment d'enregistrer chaque classeur je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveAs Filename:=chemin & "\" & classeur
    Sinon ton code parait plus simple pour utiliser des boites de dialogue, quelle différence avec mon code qui utilise des objets et que je ne maitrise pas trop ?

  5. #5
    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
    Ton code utilise Windows, le mien Excel. Mais Excel ne permet pas de récupérer seulement le nom d'un répertoire sélectionné sans ouvrir ou enregistrer un fichier. Ou si ça existe (ce dont je doute fort) je ne connais pas la syntaxe.
    Ta méthode est donc la bonne
    Bonne soirée

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    une autre méthode avec filedialog

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim f As FileDialog
     
    Set f = Application.FileDialog(msoFileDialogOpen)
    f.InitialFileName = "d:\"
    f.Show

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Par défaut
    bonjour,

    pour info :
    - <FileDialog> n'existe que depuis la version 2002 d'Excel;
    - pour sélectionner un répertoire, utiliser plutôt la constante <msoFileDialogFolderPicker>.

    cordialement,

    Philippe

  8. #8
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Soir Bon
    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
     
    Sub Test4()
    Dim sChemin As String
        sChemin = "D:\Backup\Demos\SysDiff"
     
        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = sChemin & "\"
            .Title = "Sélectionner un Dossier"
            .AllowMultiSelect = False
            .InitialView = msoFileDialogViewDetails
            .ButtonName = "Sélection Dossier"
            .Show
            If .SelectedItems.Count > 0 Then
                MsgBox .SelectedItems(1)
            Else
                Exit Sub
            End If
        End With
     
    End Sub

  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
    Par défaut
    Il faut mettre le chemin du sous répertoire en 4ème paramètre de la fonction BrowseForFolder pour limiter le choix à un sous répertoire.
    Je comprends sans doute mal, mais quand-même : un question :

    Ton but est-til finalement, tout simplement, d'afficher les sous-répertoires d'un répertoire et d'en choisir un ? ====>> OUI/NON

    Si oui : il y a du simple et rapide !
    Si non : précise avec détails et on trouvera également du simple et rapide, je n'en doute pas !

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    Merci de toute vos réponse.

    Effectivement, plusieurs facon de faire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Macro d’accueil, choix répertoire, importation
    Par norgepagan dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/03/2011, 04h21
  2. [AC-2007] Ouverture choix répertoire
    Par Godard dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/12/2009, 17h53
  3. MFC Dialogue de Choix de répertoire
    Par rabobsky dans le forum MFC
    Réponses: 4
    Dernier message: 09/02/2006, 18h37
  4. VB - Choix répertoire
    Par enicnath dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/12/2005, 14h59

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