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 :

Ouvrir un fichier en fonction du nom


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    Points : 70
    Points
    70
    Par défaut Ouvrir un fichier en fonction du nom
    Bonjour,

    Je travail sur un classeur qui sera distribuer plus tard.
    Je travailler avec FIleSearch mais il n'est plus dispo apres Excel 2003.

    J'ai donc utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        'Affiche la fenêtre "Ouvrir"
        With Application.FileDialog(msoFileDialogOpen)
            .InitialFileName = chemin
            'Efface les filtres existants.
            .Filters.Clear
            'Définit une liste de filtres pour le champ "Type de fichiers".
            .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
            'Indique le type d'affichage dans la boîte de dialogue
            .InitialView = msoFileDialogViewDetails
            .Show
        End With
    Le problème c'est que cela m'affiche tout les fichiers excel.
    Ce que j'aimerais c'est que ça m'affiche tout les fichiers excel ayant dans leurs nom, par exemple, "TEST" et "CACAO"

    Merci pour votre futur aide,

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Bonjour,

    FileDialog existait déjà du temps de FileSearch !

    Sinon ta variable chemin doit se terminer par un \ afin que cette ligne fonctionne :
    .InitialFileName = chemin & "*TEST*;*CACAO*"
    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 90
    Points : 71
    Points
    71
    Par défaut
    tu as essayé ?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Filters.Add "Classeurs Excel", "*CACAO*.xls; *TEST*.xls; *CACAO*.xlsx; *TEST*.xlsx; *CACAO*.xlsm; *TEST*.xlsm"

  4. #4
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    Points : 70
    Points
    70
    Par défaut
    Merci de vos réponse

    Je vais tester tout ça

    PS: Je sais que fileDIalog existait déjà (je l'utilise aussi) mais je préférais fileSearch il était bien plus "malléable"

    EDIT : le problème c'est que les nom sont dans une variable de type tableau. et j'aimerais n'ajouter qu'un seul filtre

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Cela n'a rien à voir …

    Pour remplacer FileSearch, il y a toujours la fonction interne Dir qui va très bien pour les cas simples, sinon c'est FileSystemObject


    Sinon pour le filtre il manque les .xlsb, tu peux tous les définir par *.xls* …

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Essayez ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub aa()
    '/// Adapter le chemin c:\ à votre usage
    Application.Dialogs(xlDialogOpen).Show "c:\*test*.xls; *cacao*.xls"
    End Sub

  7. #7
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    Points : 70
    Points
    70
    Par défaut
    Je vous remercie tous pour l'aide apporter

    Au final j'ai utilisé 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
        'On créer le futur nom pour le fichier (qui sera vérifier à la fin dela procédure
        'On ajoute déja le premier nom de territoire puis tout les noms de territoire qui ne finisse pas par .xls
        'En effet ils sont en doublons dans le tableau, seul les nombre pair (et 0) sont à garder (même nom mais dans le .xls)
        nom_cumul_territoire = nom_cumul_territoire & "_" & tableau_territoire(0)
        cumul_territoire = Chr$(42) & tableau_territoire(0) & Chr$(42)
        For i = LBound(tableau_territoire) + 1 To UBound(tableau_territoire)
            If (i Mod 2 = 0) Then
                    nom_cumul_territoire = nom_cumul_territoire & "_" & tableau_territoire(i)
                    cumul_territoire = cumul_territoire & ";" & Chr$(42) & tableau_territoire(i) & Chr$(42)
            End If
        Next i
     
     
        'Affiche la fenêtre "Ouvrir"
        With Application.FileDialog(msoFileDialogOpen)
            .InitialFileName = chemin & cumul_territoire
            'Efface les filtres existants.
            .Filters.Clear
            'Définit une liste de filtres pour le champ "Type de fichiers".
            .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
            'Indique le type d'affichage dans la boîte de dialogue
            .InitialView = msoFileDialogViewDetails
            .Show
        End With
    Si vous pensez que c'est moche et qu'il faut modifier quelque chose dite le moi

    EDIT : Pour FileSystemObject, c'est aussi simple que FileSearch ? Car enfaite,
    j'ai un bout de nom du fichier
    Je recherche en fonction de ce bout de nom tout les fichiers qui correspondent
    Ensuite je les ouvre
    Traitement
    Je les ferme

    Et tout ça , sans que l'user choisisse lui même les fichiers. Avec filesearch tout ce faisait directement

    Je sais pas si je suis assez claire

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    A la place de Chr(42) pourquoi ne pas directement utiliser "*" ?

    Sinon j'aurais peut-être aussi utilisé l'instruction For Each, la fonction Join

    Pour FSO (pour les cas simples je préfère Dir), voir l'article Manipulation des fichiers en VBA


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


    __________________________________________________________________________________________
    Dieu ordonna à Hélène de bien suivre la carte mais Hélène Ségara !

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour à tou(te)s,

    je viens de parcourir ce post et j'ai envie de répondre à cette phrase :
    Je travailler avec FIleSearch mais il n'est plus dispo apres Excel 2003.
    N'a-tu pas essayé avec classefilesearch ? voir sur le lien ci-dessous

    http://silkyroad.developpez.com/vba/classefilesearch/

    bonne journée

  10. #10
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    Points : 70
    Points
    70
    Par défaut
    Merci de vos réponse,

    je vais regarder les différentes "fonctions" proposées

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/08/2008, 18h21
  2. Réponses: 2
    Dernier message: 18/01/2008, 11h13
  3. Ouvrir un fichier qui possède un nom en unicode
    Par gurvan1983 dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/05/2007, 08h55
  4. Comment ouvrir un fichier sans connaitre son nom
    Par APoLLoN1234 dans le forum C++
    Réponses: 8
    Dernier message: 10/09/2006, 18h04
  5. Ouvrir un fichier en fonction d'un autre
    Par philippef dans le forum Langage
    Réponses: 7
    Dernier message: 05/03/2006, 17h42

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