XL 2013 CSV Traiter des données

a_loic

XLDnaute Junior
Bonjour,

Je viens demander de l’aide (comme de nombreuses personnes ici :))

J’ai créé une macro qui permet d’ouvrir un fichier, filtrer une colonne, après filtre, copier 3 colonnes et refermer le fichier.
Aucun problème, tout fonctionne.

Seule ombre au tableau, le fichier source est en réalité un csv (chose que je ne savais pas lors de l’écriture de la macro), et je n’arrive pas à savoir comment contourner le problème.
J’ai cherché sur le net mais il existe beaucoup de solutions et je ne trouve rien qui fonctionne chez moi.
Pour info, les données sont séparées par des « ; ».

Voici un bout de code (là où le document est ouvert et traité) :
VB:
MsgBox "Tu vas importer les données"
Set BD = Application.FileDialog(msoFileDialogFilePicker) 'définit la boîte de dialogue BD
BD.AllowMultiSelect = False 'n'autorise pas le sélection multiple
BD.Show 'affiche la boîte de dialogue
If BD.SelectedItems.Count = 0 Then GoTo 1 'si aucun fichier sélectionné, sort de la procédure
Workbooks.Open BD.SelectedItems(1) 'ouvre le fichier sélectionné
Set CS = ActiveWorkbook 'définit le classeur source CS
Set OS = CS.Worksheets(1) 'définit l'onglet source OS
Set OD2 = CD.Worksheets("BDD") 'définit l'onglet destination OD2 (BDD)

OS.Columns("A:X").Select
Selection.AutoFilter Field:=17, Criteria1:="internet"

OS.Columns(6).Copy OD2.Columns(15)
OS.Columns(8).Copy OD2.Columns(16)
OS.Columns(10).Copy OD2.Columns(17)

CS.Close SaveChanges:=False 'ferme le classeur source (sans enregistrer)


En fait aucune donnée n'est importée... Rien ne se passe.

Et si je fais un pas à pas, toutes les données sont en colonne A et les infos séparées par des ";"



Je mets en pièce jointe un fichier d'exemple avec : la base de données (sur laquelle se trouve la macro)

Deux exemples de données (car la base de donnée est remplie par deux extractions : c'est assez clair lors de l'utilisation) sont dispos via ces liens : (impossible de mettre des fichiers csv sur le forum :))
https://www.catupload.com/download/f5628e2b15ea0fce63547c462e7c925b.html
https://www.catupload.com/download/c0d636f9cecafac956a40f692d0c598f.html



Un grand merci par avance pour votre aide,
Bonne journée,
Loic
 

Pièces jointes

  • BDD.xlsm
    46.2 KB · Affichages: 19

Staple1600

XLDnaute Barbatruc
Re

C'est pas dans le CSV qu'il y a virus mais sur le site catupload

Sinon, est-ce que ce code fonctionne chez toi ?
VB:
Sub Macro1()
'Remplacer C:\TEMP\DONNES 1.csv
'par le vrai nom du dossier où se trouve le fichier *.csv
Workbooks.OpenText Filename:="C:\TEMP\DONNES 1.csv", Semicolon:=True, Local:=True
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

C'est écrit en vert. ;)
(Et il s'agit de d'abord tester la macro)

Avec le FileDialog, si tu préfères ;)
VB:
Sub Macro2()
Dim BD As FileDialog
MsgBox "Tu vas importer les données"
Set BD = Application.FileDialog(msoFileDialogFilePicker) 'définit la boîte de dialogue BD
BD.AllowMultiSelect = False 'n'autorise pas le sélection multiple
BD.Show 'affiche la boîte de dialogue
If BD.SelectedItems.Count = 0 Then GoTo Fin 'si aucun fichier sélectionné, sort de la procédure
Workbooks.OpenText BD.SelectedItems(1), , , , , , , True, , , , , , , , , , True
Fin:
Exit Sub
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

La suite (testé avec ton fichier Données1.csv)
VB:
Sub Macro3()
Dim BD As FileDialog, WB As Workbook
MsgBox "Tu vas importer les données"
Set BD = Application.FileDialog(msoFileDialogFilePicker) 'définit la boîte de dialogue BD
BD.AllowMultiSelect = False 'n'autorise pas le sélection multiple
BD.Show 'affiche la boîte de dialogue
If BD.SelectedItems.Count = 0 Then GoTo Fin 'si aucun fichier sélectionné, sort de la procédure
Application.ScreenUpdating = False
Workbooks.OpenText Filename:=BD.SelectedItems(1), Semicolon:=True, Local:=True
Set WB = ActiveWorkbook
    With WB.Sheets(1)
        .Range("A1").CurrentRegion.AutoFilter Field:=17, Criteria1:="internet"
        .AutoFilter.Range.Columns(6).Copy ThisWorkbook.Sheets(1).[O1]
        .AutoFilter.Range.Columns(8).Copy ThisWorkbook.Sheets(1).[P1]
        .AutoFilter.Range.Columns(10).Copy ThisWorkbook.Sheets(1).[Q1]
    End With
WB.Close False
Fin:
Exit Sub
End Sub
 

a_loic

XLDnaute Junior
Bonjour,

Je me permets de relancer le sujet car je me retrouve avec deux bugs différents.

Pour certaines exportations j’ai un problème dans la remontée d’information et ça fait buger ma macro.

Je ne peux malheureusement pas mettre le CSV incriminé sur le forum car il contient des données personnelles de clients (et si je le modifie pour l’anonymiser, cela casse totalement le csv)

Je vous colle ci dessous une capture d’écran d’un rendu :

BUG 1 : bug de la macro à partir du filtre « internet » et voici l’etat du CSV pour certaines extractions :



BUG 2 : voici l’état de la base de données pour certaines extractions (après copie et colle des infos du CSV) :




J’espère que cela suffira,

Un grand merci par avance pour votre nouvelle aide et encore merci à @Staple1600 pour l’avancée significative de la macro (mais entre Rennais je n’en doutais pas :))

Bonne journée
Loic
 
Dernière édition:

Discussions similaires

Réponses
0
Affichages
455

Statistiques des forums

Discussions
311 710
Messages
2 081 781
Membres
101 817
dernier inscrit
carvajal