Chargement de plusieurs fichiers texte à la fois

Atraxor Messages postés 20 Date d'inscription lundi 29 août 2011 Statut Membre Dernière intervention 5 décembre 2011 - 22 sept. 2011 à 11:22
Atraxor Messages postés 20 Date d'inscription lundi 29 août 2011 Statut Membre Dernière intervention 5 décembre 2011 - 22 sept. 2011 à 14:01
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 sept. 2011 à 11:32
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
0
Atraxor Messages postés 20 Date d'inscription lundi 29 août 2011 Statut Membre Dernière intervention 5 décembre 2011
22 sept. 2011 à 11:34
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 sept. 2011 à 11:47
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
0
Atraxor Messages postés 20 Date d'inscription lundi 29 août 2011 Statut Membre Dernière intervention 5 décembre 2011
22 sept. 2011 à 13:55
C'est bon, j'ai réussi à me débrouiller avec un getopenfilename (il suffisait de placer la propriété multiselect à true)

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Atraxor Messages postés 20 Date d'inscription lundi 29 août 2011 Statut Membre Dernière intervention 5 décembre 2011
22 sept. 2011 à 14:01
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 ?
0
Rejoignez-nous