Fonction Application.GetOpenFilename

Résolu
mamined Messages postés 37 Statut Membre -  
mamined Messages postés 37 Statut Membre -
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 24281 Statut Contributeur Ambassadeur 1 584
 
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 37 Statut Membre
 
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 24281 Statut Contributeur 1 584 > mamined Messages postés 37 Statut Membre
 
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 37 Statut Membre > yg_be Messages postés 24281 Statut Contributeur
 
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 24281 Statut Contributeur 1 584 > mamined Messages postés 37 Statut Membre
 
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