Ouverture multiple de fichiers, fonction GetOpenFilename

misterkarma Messages postés 14 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 19 juillet 2006 - 10 juil. 2006 à 10:31
misterkarma Messages postés 14 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 19 juillet 2006 - 10 juil. 2006 à 11:02
Salut tout le monde !

J'ai un problème dans une macro Excel, je souhaite me servir de la fonction GetOpenFileName qui permet à l'utilisateur de choisir un ou plusieurs fichiers (cette fonction ne fait que les lire, elle ne les ouvre pas), puis je voudrais les ouvrir les uns en dessous des autres dans la même feuille Excel.

Voilà mon programme, qui marche très bien pour un seul fichier texte :

'Lecture du nom de fichier rentré par l'utilisateur
    fileToOpen = Application.GetOpenFilename(FileFilter:="Text Files (*.txt), *.txt", MultiSelect:=False)
   
    If fileToOpen <> False Then
        MsgBox "Open" & fileToOpen
    Else: Workbooks("ClasseurStats.xls").Close SaveChanges:=False
    End If


 'Ouverture du fichier texte sous Excel
    Workbooks.OpenText Filename:=fileToOpen, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, Space:=False, Other:=False

PROBLEME
: quand MultiSelect: =True (c'est mon but, pouvoir choisir plusieurs fichiers), fileToOpen est censé devenir un tableau de noms de fichiers.......... Qu'est-ce que je dois changer dans mon code ? Comment manipuler ce tableau au moment de l'ouverture ?
Je n'arrive pas à manipuler ce fileToOpen quand ce n'est plus un simple nom de fichier, mais un tableau de noms de fichiers.......

Merci d'avance pour vos réponses !!

4 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 juil. 2006 à 10:45
Salut,

Tu fait une boucle du style

For i = 1 To UBound(FileToOpen)
        'Ouverture du fichier texte sous Excel
        Workbooks.OpenText Filename:=FileToOpen(i), Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, Space:=False, Other:=False
    Next

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée, Règlement/FONT>
0
misterkarma Messages postés 14 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 19 juillet 2006
10 juil. 2006 à 10:53
Merci pour cette réponse rapide !
Mais pour cette condition :

If fileToOpen <> False Then
        MsgBox "Open" & fileToOpen
    Else: Workbooks("ClasseurStats.xls").Close SaveChanges:=False
    End If

comment dois-je faire maintenant pour dire "si au moins un fichier est sélectionné"..?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 juil. 2006 à 10:53
ca te renvoie UNE SEULE chaine de caractère, contenant le nom du repertoire, suivit d'un caractère \0 puis les noms des fichiers, séparés par des \0 (vbNullChar)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
misterkarma Messages postés 14 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 19 juillet 2006
10 juil. 2006 à 11:02
En réponse à Julien :

les multiples fichiers .txt sont ouverts mais à chaque fois dans un classeur différent, alors que je les voudrais non seulement dans le même classeur mais aussi à la suite les uns des autres dans la même feuille (ils ont les mêmes séparateurs, un nombre de colonnes fixe (40), et je souhaite leur appliquer par la suite un traitement global (exemple : changement du format de telle ou telle colonne))

En réponse à Renfield :

D'accord, j'avais lu dans l'aide de VB que c'était un tableau...
0
Rejoignez-nous