Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Importation txt multi-selection avec formats!

  • Initiateur de la discussion Initiateur de la discussion atomic
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

atomic

Guest
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 ! 😕 Je pourrais ainsi effectuer des actions lors de chacunes des ouvertures de ces fichiers.
 
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
@+
 
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!!!)
 
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 😱....
 
Dernière édition:
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 😀
 
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...
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
Réponses
2
Affichages
1 K
D
C
Réponses
0
Affichages
1 K
Cerealkiller57
C
L
Réponses
3
Affichages
1 K
T
Réponses
5
Affichages
958
W
Réponses
3
Affichages
13 K
W
H
Réponses
2
Affichages
7 K
H
V
Réponses
0
Affichages
3 K
V
K
Réponses
9
Affichages
2 K
K
M
Réponses
4
Affichages
2 K
M
M
Réponses
3
Affichages
4 K
_matt_44
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…