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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    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
    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
    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 confirmé
    Inscrit en
    Janvier 2010
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 90
    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 confirmé
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    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
    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
    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 Expert
    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
    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 confirmé
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    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

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