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 :

[E07] get open filename


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut [E07] get open filename
    Bonjour tout le monde. je bloque sur l'adaptation de getopenfilename que j'utilisais pour designer un repertoire et y ouvrir et fermer successivement tout les fichiers qu'il contiens
    mon 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
     
    Dim stFichier
     stFichier = Application.GetOpenFilename
       With Application.FileSearch
       .NewSearch
       .LookIn = cheminbalance(stFichier)
       .Execute
        On Error Resume Next
        ScreenUpdating = False
          For Each f In .FoundFiles
          Workbooks.Open f
    .....traitement
    ActiveWorkbook.Close True
    Next f
    j'ai trouvé dans la faq :
    pour selectionner un dossier
    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
     
    Sub Utilisation_FileDialog_SelectionDossier()
        Dim x As Long
     
        With Application.FileDialog(msoFileDialogFolderPicker)
            'Définit un titre pour la boîte de dialogue
            .Title = "Le tite de la fenêtre:"
            'Affiche la boîte de dialogue
            .Show
     
            'Affiche le nom du dossier sélectionné
            If .SelectedItems.Count > 0 Then
                MsgBox .SelectedItems(1)
            End If
     
        End With
    End Sub
    mais je n'arrive pas faire ouvrir les fichiers qu'il contient
    j'ai trouvé aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub ChoixRepertoire()
       Dim objShell As Object, objFolder As Object, oFolderItem As Object
        Dim Chemin As String
     
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
     
        On Error Resume Next
        Set oFolderItem = objFolder.Items.Item
        Chemin = oFolderItem.Path
     
        MsgBox Chemin
    End Sub
    mais j'ai le même soucis
    le plus proche est encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub ouverture()
    Filename = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls), *.xls", Title:="Selectionnez un fichier")
        If Filename = False Then
            ' They pressed Cancel
            MsgBox "Arret de la procédure , car vous n'avez pas choisi de fichier"
            Exit Sub
        Else
            Workbooks.Open (Filename)
            End If
    End Sub
    mais là; il faut designer tout les fichiers (selection multiple, et comme l'utilisateur ne le sait pas, risque de cafouillage)
    donc, je suis un peu perdu, un peu d'aide bienvenue
    cerise sur le gateau, si ça pouvait fonctionner indiferement sur 2007 et avant, ça serait vachement bien
    merci

  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 aurais meilleur temps à utiliser Dir. Pas de déclaration inutile et efficacité garantie quand tu connais le répertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Test()
    Dim chemin As String, NomFich As String
        chemin = "D:\LeRep\"
        NomFich = Dir(chemin, vbNormal)
        Do While NomFich <> ""
            Workbooks.Open chemin & NomFich
            DoEvents
            NomFich = Dir()
        Loop
    End Sub

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    oui, merci, le conseil est bon, mais ne me conviens pas. il y a une premiere phase de traitement humain ou les fichiers vont etre mis en ordre par repertoire, les noms peuvent donc varier , paris Paris lyons, les villes changent, bref, c'est le brin. et ensuite l'operateur peut decider de faire telle ou telle ville suivant l'humeur ou le temps dont il dispose. donc le getopen... est le mieux pour mon cas

  4. #4
    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
    Salut, sans doute à adapter, les fichiers se trouvent dans Coll
    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
    48
    49
    50
    51
    52
    53
    54
    '-------------------------------------------------------
    '
    '   Outils/Références Cocher Microsoft Scripting Runtime
    '
    '-------------------------------------------------------
     
    Option Explicit
    Dim Coll As Collection
    Const TypeFichier As String = "FF_## ## ####.xls"
     
    Sub SelectionDossier()
        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = ThisWorkbook.Path & "\"
            .Title = "Sélectionner le Dossier contenant les fichiers à traiter"
            .AllowMultiSelect = False
            .InitialView = msoFileDialogViewDetails
            .ButtonName = "Sélection Dossier"
            .Show
            If .SelectedItems.Count > 0 Then
                Liste .SelectedItems(1)
            End If
        End With
    End Sub
     
    Private Sub Liste(ByVal sChemin As String)
        Set Coll = New Collection
        ListeFichiers sChemin, Coll, False
        ....
        Set Coll = Nothing
    End Sub
     
    Private Sub ListeFichiers(ByVal sChemin As String, ByVal Coll As Collection, ByVal Recursif As Boolean)
    Dim FSO As Scripting.FileSystemObject
    Dim Dossier As Scripting.Folder
    Dim SousDossier As Scripting.Folder
    Dim Fichier As Scripting.File
     
        Set FSO = New Scripting.FileSystemObject
        Set Dossier = FSO.GetFolder(sChemin)
     
        For Each Fichier In Dossier.Files
            If UCase(Fichier.Name) Like UCase(TypeFichier) Then
                Coll.Add Fichier.Path
            End If
        Next Fichier
     
        If Recursif Then
            For Each SousDossier In Dossier.SubFolders
                ListeFichiers SousDossier.Path, Coll, True
            Next SousDossier
        End If
     
        Set FSO = Nothing
    End Sub

  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
    Par défaut
    Bonjour,

    A voir, selon les réponses que tu vas apporter ici :

    Tes fichiers à ouvrir sont-ils tous dans le même dossier ?
    - Si oui : ton appli connait-elle le chemin de ce dossier ?
    - si ton appli ne connait pas ce chemin de dossier, ce dossier se trouve-t-il au moins dans le répertoire de l'Appli (parmi d'autres et il faut alors choisir le dossier) ?
    - l'utilisateur doit-il pouvoir faire une sélection multiple (donc de plusieurs fichiers à ouvrir) ?

    En fonction de tes réponses, je pourrais peut-être imaginer du sur mesure.

  6. #6
    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
    Citation Envoyé par alsimbad Voir le message
    oui, merci, le conseil est bon, mais ne me conviens pas. il y a une premiere phase de traitement humain ou les fichiers vont etre mis en ordre par repertoire, les noms peuvent donc varier , paris Paris lyons, les villes changent, bref, c'est le brin. et ensuite l'operateur peut decider de faire telle ou telle ville suivant l'humeur ou le temps dont il dispose. donc le getopen... est le mieux pour mon cas
    Ce n'est pas un problème. Le nom des villes peut bien varier, si tu listes TOUS les fichiers d'un répertoire, tu les auras tous.
    Pour sélectionner un fichier, tu as les boîtes de dialogue intégrées d'Excel, plus rapides et plus simples que fso. Une ligne suffit !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs.Item(xlDialogOpen).Show
    Pour te placer dans le bon répertoire, c'est
    Si ton répertoire est dans un autre lecteur, tu mets avant
    Pour moi, fso est une charrue qui occupe de la place pour rien.
    Il n'y a que lorsque tu veux lister un répertoire et son/ses sous-répertoires que ça se justifie.
    C'est toi qui vois s'il est utile d'ajouter 10 lignes de code

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    d'abord pour ucfoutu
    Citation Envoyé par ucfoutu
    Tes fichiers à ouvrir sont-ils tous dans le même dossier ?
    Citation Envoyé par alsimbad
    j'utilisais pour designer un repertoire et y ouvrir et fermer successivement tout les fichiers qu'il contiens
    - Si oui : ton appli connait-elle le chemin de ce dossier ?
    getopenfilename est là pour lui montrer le chemin


    - si ton appli ne connait pas ce chemin de dossier, ce dossier se trouve-t-il au moins dans le répertoire de l'Appli (parmi d'autres et il faut alors choisir le dossier) ?
    il peut etre n'importe ou

    - l'utilisateur doit-il pouvoir faire une sélection multiple (donc de plusieurs fichiers à ouvrir) ?
    je veux qu'il ne designe que le repertoire, l'appli ouvre tout les fichiers excel qu'il contient



    En fonction de tes réponses, je pourrais peut-être imaginer du sur mesure.
    yes, moove your brain for me please et merci


    pour ouskel'nor
    la boite integrée d'excel me conviens tres bien, mais je ne sais pas en sortir la désignation des fichier qu'elle contient
    extraire ce qu'elle contient et lui dire d'ouvrir les fichier
    F = les trois fichiers de ce repertoire ( ou bien pour chaqque fichier de ce repertoire)
    ouvre le premier
    traitement
    ferme
    ouvre le suivant

    du moins je ne sais pas faire avec 2007

    pour kiki 29
    Yec’hed mat
    je vais tester ce que tu me dis, je dirais aprés

    bonne soirée a tous

  8. #8
    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 as peut-être la solution ici
    Teste le fichier, tu peux faire tout ce que tu demandes et beaucoup plus.

    J'utilise à la fso et dir pour une question de rapidité, mais aucune référence n'a besoin d'être validée.

    Starec dit que la procédure n'ouvre pas les fichiers sous VBA 2007 mais je ne pense pas qu'il s'agise des classeurs. Ça reste à tester.
    Que le code pour ouvrir un classeur ait changé entre 2003 et 2007 m'étonnerait beaucoup.

    Bref, tu lis les explications, tu testes.
    On pourra toujours adapter.
    Tu dis
    A+

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

Discussions similaires

  1. [E07] Alternative open source? [En cours de résolution]
    Par R.I.P. dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/11/2008, 09h46
  2. Workbooks.Open Filename fonctionne bien sur excel 2000 ?
    Par emoiem dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/03/2008, 15h59
  3. problème sur un "open filename for input as #1"
    Par sophiesallee dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/11/2007, 13h43
  4. [VBA-E] Application Get Save As Filename
    Par Zytop dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/03/2007, 20h00
  5. Retrouver Opener apres POST/GET dans PopUp
    Par rgomes dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/02/2007, 17h31

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