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 :

Selectionner plusieurs fichiers et travailler avec


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Points : 283
    Points
    283
    Par défaut Selectionner plusieurs fichiers et travailler avec
    Bonjour à tous,

    J'ai une macro qui permet de récupérer des infos de fichiers excel.
    Cette macro permet à l'utilisateur de choisir le fichier source comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xls = GetObject(Application.GetOpenFilename())
    Ensuite les donnée sont rappatriées et mises en forme automatiquement.

    Dans le but de consolider des données de plusieurs classeurs, l'utilisateur doit reitérer la manoeuvre pour chaque fichier à lire.
    J'aimerai que l'utilisateur puisse selectionner tous les fichiers en une seule fois et qu'ensuite ma macro parcour ces fichiers un à un.
    Les fichiers seront présents dans un même dossier.

    Serait il possible de faire comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xls = GetObject(Application.GetOpenFilename())
    Et d'avoir une option qui ressemble au multiselect des listbox.

    J'espère avoir été clair.
    N'hésitez pas à demander des précisions.

    Merci

    Johan

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Août 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2009
    Messages : 85
    Points : 228
    Points
    228
    Par défaut
    F1 sur GetOpenFileName, on a les arguments de la fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set xls = GetObject(Application.GetOpenFilename(, , , , True))
    "MultiSelect Argument de type Variant facultatif. Affectez lui la valeur True pour permettre la sélection de plusieurs noms de fichiers. Affectez lui la valeur False pour permettre la sélection d'un seul nom de fichier. La valeur par défaut est False.

    Notes
    Cette méthode renvoie le nom du fichier sélectionné ou le nom tapé par l'utilisateur. Le nom renvoyé est susceptible d'inclure une spécification de chemin. Si MultiSelect a la valeur True, la valeur renvoyée est un tableau des noms de fichiers sélectionnés (même si un seul nom de fichier est sélectionné). Renvoie la valeur False si l'utilisateur annule la boîte de dialogue."

  3. #3
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Bonjour
    Par contre getobject risque de ne pas fonctionner sur un tableau ( à tester mais la lecture de l'aide me ferais dire que non) donc créé le tableau puis boucle sur les éléments du tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    dim tableau() as string
     
    tableau=Application.GetOpenFilename(, , , , True)
    for i =0 to ubound(tableau)
    Set xls = GetObject(tableau(i))
    ...
    ...
    next i

  4. #4
    Membre actif
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Points : 283
    Points
    283
    Par défaut
    Super merci beaucoup, je vais essayer tout ça.

  5. #5
    Membre actif
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Points : 283
    Points
    283
    Par défaut
    Re bonjour,

    J'ai utilisé la méthode de krovax et j'obtiens une erreur:
    Erreur d'execution '13'
    Incompatibilité de type
    J'ai selectionné trois fichiers excel et il me donne cette ligne:

    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
    Sub recupdonnées()
    
    
    Dim fdest As Worksheet
    Dim fsource As Excel.Workbook
    Dim Wksheet As Worksheet
    Dim DerLigne As Long, nbligne As Long, ldest As Long, i As Long, j As Long, dcelpleine As Long
    Dim Objectif As Variant
    Dim nom As String
    Dim test As Boolean
    Dim feuillsource As String
    Dim Classeursource As String
    Dim Tableau() As String
    Dim l As Long
    
    Set fdest = ThisWorkbook.Worksheets(1)
    
    Tableau = Application.GetOpenFilename(, , , , True)
    For l = 0 To UBound(Tableau)
    
    Set fsource = GetObject(Tableau(l))
    
    If fsource Is Nothing Then GoTo fin
    
    Classeursource = fsource.Name
    
    Application.ScreenUpdating = False
    
    For Each Wksheet In fsource.Worksheets
    
    '...
    
    Next Wksheet
    
    Next l
    Application.DisplayAlerts = False
    
    fsource.Close
    
    fin:
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    
    End Sub
    Edit:
    Si je ne déclare pas Tableau() as string ça passe, par contre il faut commencer à l=1 et non pas 0
    Du coup ça fonctionne masi c'est assez long, peut on ouvrir les fichiers à parcourir en lecture seule et sans activer les macros, comment faire?

  6. #6
    Membre actif
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Points : 283
    Points
    283
    Par défaut
    Je viens de m'apercevoir d'un autre problème, si je clic sur annulé, cela me donne une erreur:

    Erreur d'execution '13'
    Incompatibilité de type
    Comment faire?

    Ce que j'ai vu ici ne fonctionne pas:
    http://excel.developpez.com/faq/inde...etOpenFileName

    Edit:

    Décidemment il suffit que je post mon problème pour que je trouve la solution dans la minute qui suit. Alors que j'avais cherché avant.
    Il suffisait de déclarer
    et non pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim tableau() as variant
    Une idée pour ouvrir en lecture seule?

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

Discussions similaires

  1. selectionner plusieurs fichiers avec un bouton parcourir
    Par LEGOLAS19 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 08/08/2014, 15h13
  2. importer fichier pour travailler avec
    Par debutante en galere dans le forum Général Python
    Réponses: 26
    Dernier message: 06/01/2010, 22h48
  3. Réponses: 1
    Dernier message: 08/04/2008, 00h03
  4. selectionner plusieurs fichiers dans un opendialog
    Par kalou26 dans le forum C++Builder
    Réponses: 12
    Dernier message: 23/06/2006, 11h47
  5. Réponses: 7
    Dernier message: 05/06/2006, 21h40

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