Importation txt multi-selection avec formats!

atomic

XLDnaute Nouveau
Bonjour à tous,

J'aurais besoin de vos lumières pour un bout de code qui me pose bien des soucis: habituellement, lorsque l'on importe un fichier texte par une fenetre dans Excel (en vba), on a ce type de code :

Classeur = Application.GetOpenFilename("Extraction texte,*.txt")
If Classeur = False Then End
Workbooks.OpenText Filename:=Classeur, (...), FieldInfo:=Array(Array(1, 4), Array(2, 1), ...


Je souhaiterais faire la même chose (en conservant les "array") et en autorisant en plus la selection multiple des fichiers dans la fenetre ! :confused: Je pourrais ainsi effectuer des actions lors de chacunes des ouvertures de ces fichiers.
 

Pierrot93

XLDnaute Barbatruc
Re : Importation txt multi-selection avec formats!

Bonsoir,

essaye ceci :
Code:
Dim Classeur, i As Byte
Classeur = Application.GetOpenFilename("Extraction texte,*.txt", , , , True)
If Classeur = False Then Exit Sub
For i = LBound(Classeur) To UBound(Classeur)
    Workbooks.OpenText Filename:=Classeur(i) , (...), FieldInfo:=Array(Array(1, 4), Array(2, 1), ...
Next i

bonne soirée
@+
 

atomic

XLDnaute Nouveau
Re : Importation txt multi-selection avec formats!

Pour info, j'ai trouvé comment on fait des selections multiples de fichiers à importer, suivis d'une ouverture successive de ces fichiers :

'ouverture de la fenetre d'importation
ChDir "\\Snio-nas\Commun UAP BDE\Logistique\Programmes\Manquants" 'definit le dossier d'importation de la fenetre
FichiersAOuvrir = Application.GetOpenFilename("Extraction MFGpro,*.txt", , , , True)
If IsArray(FichiersAOuvrir) Then

'Ouverture des fichiers sélectionnés
For i = LBound(FichiersAOuvrir, 1) To UBound(FichiersAOuvrir, 1)
Workbooks.OpenText FichiersAOuvrir(i)

Mais dans ce code, je ne peux pas mettre de parametres d'importations "Array" (Si c'était possible, ça m'arrangerais bien!!!)
 

tototiti2008

XLDnaute Barbatruc
Re : Importation txt multi-selection avec formats!

Bonjour Atomic,

Je pense qu'il faudrait envisager de passer par un objet FileDialog
ça te permettra de faire la même chose que GetOpenFilename mais de gérer des choses plus fines comme la possibilité de sélectionner plusieurs fichiers

Code:
Sub test()
Dim FD As FileDialog, SI
    Set FD = Application.FileDialog(msoFileDialogFilePicker)
    With FD
        .Filters.Clear
        .Filters.Add "Fichier texte", "*.txt"
        .AllowMultiSelect = True
        If .Show = -1 Then
            For Each SI In .SelectedItems
                Workbooks.OpenText Filename:=SI ......
                'Traitements...
                ActiveWorkbook.Close
            Next SI
        End If
    End With
End Sub

Edit : Bing, Bonjour Pierrot
Bon, ben il semble qu'en fait ça marche très bien avec GetOpenFileName :eek:....
 
Dernière édition:

atomic

XLDnaute Nouveau
Re : Importation txt multi-selection avec formats!

Merci beaucoup les gars!!
La réponse de Pierrot93 a parfaitement résolu le problème! Du coup je n'ai pas essayé la proposition de tototiti2008... En tout cas ça marche nickel, merci encore :D
 

atomic

XLDnaute Nouveau
Re : Importation txt multi-selection avec formats!

En fait, il y a quand même une ligne qui pose problème :

If Classeur = False Then Exit Sub

Lorsque j'annule l'ouverture des fichier par le bouton "annuler" de la fenetre d'importation, ok ça marche.
Par contre, lorsque je veux vraiment ouvrir des fichiers, il me met "incompatibilité de type". Au début j'avais désactivé cette ligne et ça fonctionnait nickel mais celle-ci est ser&ait quand même bien utile...
 

Pierrot93

XLDnaute Barbatruc
Re : Importation txt multi-selection avec formats!

Re,

Aarf, je vois, modifie comme suit :
Code:
Dim Classeur, i As Byte
Classeur = Application.GetOpenFilename("Extraction texte,*.txt", , , , True)
If VarType(Classeur) = vbBoolean Then Exit Sub
For i = LBound(Classeur) To UBound(Classeur)
    'Workbooks.OpenText Filename:=Classeur(i) , (...), FieldInfo:=Array(Array(1, 4), Array(2, 1), ...
Next i
 

Discussions similaires

Statistiques des forums

Discussions
312 504
Messages
2 089 072
Membres
104 018
dernier inscrit
Mzghal