Fonction Application.GetOpenFilename

Résolu/Fermé
mamined Messages postés 36 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 28 juillet 2020 - Modifié le 18 juin 2020 à 13:36
mamined Messages postés 36 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 28 juillet 2020 - 23 juin 2020 à 05:19
Hello le groupe,

j'ai bâti le code ci-dessous en regardant des vidéos sur YouTube (oui suis pas doué..)
du coup le code fonctionne et tout va bien à une exception prêt.
J'ouvre un fichier csv et ce dernier s'ouvre sous Excel ce qui pose problème car les données sont mise ensemble et séparées par un séparateur "|" mais ont également des ";" et :" du coup, il faudrait que mon code ne l'ouvre pas avc Excel mais avec un éditeur de texte de type WordPad ou Bloc-notes.

Comment modifier mon code afin que quand il indique : Set MonClasseur = Application.Workbooks.Open(ListFile) il le fasse avec l'un des 2 types de fichier indiqués ci-dessus ?

Par avance merci pour votre aide

Option Explicit

Sub AutoImportDataTXT()
'déclaration des variables

    Dim ListFile As Variant
    Dim MonClasseur As Variant
    
'désactivation des alertes
    Application.ScreenUpdating = False
    Application.CutCopyMode = False
    
'filtrer pour ne voir que le type de fichier à séletionner
    
    ListFile = Application.GetOpenFilename(Title:="Sélectionner les données et importez les données", fileFilter:="Fichiers CSV(*.csv*),*xls*", ButtonText:="Cliquez")
    
'prévoir le cas du click bouton annuler en cas 'erreur

    If ListFile <> False Then
'on indique le fichier sélectionner
    Set MonClasseur = Application.Workbooks.Open(ListFile)
    
'copier les données
    MonClasseur.Sheets(1).Range("A1").CurrentRegion.Copy
    
'coller les données
    ThisWorkbook.Sheets("echantillon").Range("A1").PasteSpecial xlPasteValues
    
'fermer classeur source
     MonClasseur.Close
     
    

    End If


End Sub

3 réponses

yg_be Messages postés 20760 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 décembre 2022 1 269
18 juin 2020 à 15:09
bonjour, si tu ne l'ouvres pas dans Excel, tu ne pourras pas en utiliser les données à partir de ton programme.
0
mamined Messages postés 36 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 28 juillet 2020
18 juin 2020 à 16:21
Hello yg_be

merci pour ta réponse mais je ne comprends pas pourquoi je ne pourrais pas utiliser les données vu que je le fais manuellement et que cela fonctionne très bien.
Donc à mon avis on doit pouvoir l'automatiser.

Processus :

Selection fichier type csv
click droit
ouvrir avec
Seletionner notepad ou autre éditeur de texte
faire ctrl A + ctrl C
aller dans ma feuille Excel (là où j'ai mon code dans la bonne feuille en A1)
ctrl V

donc si cela fonctionne comme cela on doit pouvoir automatiser selon moi
0
yg_be Messages postés 20760 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 décembre 2022 1 269 > mamined Messages postés 36 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 28 juillet 2020
18 juin 2020 à 16:29
as-tu déjà essayé de faire ce processus en VBA?
je te conseille de plutôt n'utiliser qu'Excel, peut-être en y travaillant un peu plus pour y transformer les données.
0
mamined Messages postés 36 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 28 juillet 2020 > yg_be Messages postés 20760 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 décembre 2022
18 juin 2020 à 16:39
Hello,

en fait comme je l'ai dis, je ne peux pas avec Excel. Cela ne fonctionne pas la raison est simple. si j'ouvre mon csv en excel j'ai des colonnes scindés alors que je ne dois pas les avoir scindé. regarde les 2 images tu comprendras le problème.
0
yg_be Messages postés 20760 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 décembre 2022 1 269 > mamined Messages postés 36 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 28 juillet 2020
18 juin 2020 à 18:03
tu n'as pas pu le faire avec Excel, cela ne signifie pas que ce n'est pas possible.
ceci t'aidera peut-être: https://docs.microsoft.com/fr-ch/office/vba/api/excel.workbooks.open
sinon, tu peux assez facilement, en VBA, manipuler et transformer les données.
0