Chargement de plusieurs fichiers texte à la fois

Signaler
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011
-
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011
-
Bonjour.

Ayant bidouillé une macro permettant d'ouvrir sous excel un fichier texte avec un commondialo puis de copier le contenu de ce fichier à l'intérieur d'un classeur de calcul, je doit à présent développer la chose :

J'aurais besoin d'ouvrir plusieurs fichiers texte ous excel, de les copier chacun sur une feuille différente du classeur de calcul, MAIS ceci lors d'une seule utilisation du common dialog : autrement dit je souhaiterais pouvoir ouvrir plusieurs fichiers à la fois dans mon commondialog et récupérer l'adresse de chacun de ces fichiers.


Est ce réalisable d'après vous ?

Voici le bout de code poru l'import d'un seul fichier :

Sub Import()
'
' test Macro
' Macro enregistrée le 30/08/2011 par turchet
'

'
Dim Nom1, Nom2, Nomfeuille, fichier As String

Application.DisplayAlerts = False   'Permet de ne pas afficher les messages de confirmation de suppression

Nom1 = ActiveWorkbook.Name   'On récupère le nom du classeur de calculs

fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")  'ouverture d'un composant de type common dialog pour récupérer le nom du fichier

If fichier <> "Faux" Then   'Si on n'a pas sélectionné de nouveau fichier, on ne fait rien

    Workbooks.OpenText Filename:=fichier _
        , Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
        Comma:=True, Space:=False, Other:=False, TrailingMinusNumbers:=True
    
Nom2 = ActiveWorkbook.Name  'On récupère le nom du fichier duquel on va copier les données
Nomfeuille = ActiveSheet.Name   'Onrécupère le nom de la feuille contenant les données

Workbooks(Nom1).Activate

Worksheets("Donnees").Delete   'On supprime la feuille de données déjà existante
Workbooks(Nom2).Worksheets(Nomfeuille).Copy After:=Sheets(Sheets.Count)   'On récupère la feuille de l'autre classeur
Worksheets(Nomfeuille).Name = "Donnees" 'On la renomme en données

Workbooks(Nom2).Close 'Ferme le classeur de données désormais inutile sans demander de confirmations

Workbooks(Nom1).Sheets(1).Activate

End If

Application.DisplayAlerts = True

End Sub

5 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour,
L'utilisation de cette boîte de dialogue ne me parait pas appropriée dans un tel cas de figure (choix de plusieurs fichiers)
Tu ne nous précises par ailleurs pas si tous les fichiers dont il s'agit se trouvent ou non dans un même dossier ou s'il sont disséminés un peu partout sur ton disque (ce qui n'est pas la même chose).




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011

Techniquement ils seront dans le même dossier.

J'utilise en effet un controle de type common dialog, n'en connaissant pas de plus approprié dans ce cas ci.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
S'ils sont dans le même dossier, utilise alors tout bêtement Dir (ouvre ton aide VBA sur ce mot - tu trouveras même un exemple).

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011

C'est bon, j'ai réussi à me débrouiller avec un getopenfilename (il suffisait de placer la propriété multiselect à true)

Merci
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011

En revanche, poru éviter toute crise d'épylepsie due à l'ouverture de 15000 feuilles différentes à la suite, je souhaiterais que lorsque je lance une procédure de type workbooks.open, ce classeur ne s'active pas.

Une idée sur la méthode à utiliser ?