Sub ExportCSV()
Dim t, chemin$, NomFichier$
t = Timer
'chemin = "P:\AP\5 B\5 CSV IMPORT\" ' Ne pas oublier "\" à la fin
chemin = ThisWorkbook.Path & "\"
NomFichier = "Export_" & Sheets("EN TETE").[AK2] & Format(Date, "_yyyy_mm_dd")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Sheets("CSV").ListObjects(1).DataBodyRange
Workbooks.Add 'nouveau document
[A1].Resize(.Rows.Count, .Columns.Count) = .Value 'copie les valeurs
End With
With ActiveWorkbook
.SaveAs Filename:=chemin & NomFichier, FileFormat:=xlCSV, local:=True
.Close savechanges:=False
End With
MsgBox Timer - t
End Sub
Tbl = Sheets("csv").Range("CSV[#all]")
Merci pour ton partage et tes explications. Est-ce que ce code ne risque pas de planter dans différentes versions de windows et office?re
@cp4 oui tu a raison je n'ai pas déclaré une variable j'ai écris ça en 2sec de mémoire
@Efgé c'est bien pour ça que j'ai dis le chemin a adapter a votre cas
@ZZ59264
j'explique
quand on copie quelque chose que ce soit en VBA ou autre ,ce qui est copié va dans le clibboard
il y a plusieurs moyen de récupérer ce qu'il y a dans le clipboard sans devoir le coller ailleurs
je viens d'en donner un exemple
ici pour accéder au clipboard j'utilise le dataobject en late binding(déclaration tardive) avec le clisd(le numerode 3 kilometre)
avec sa fonction getfromclipboard et et sa property gettext(1) je récupère dans la variable texte le tableau entier sous forme de texte
les valeurs dans le texte sont alors séparées par un caractère TAB que je remplace par le ";"
et voilà j'ai mon code CSV prêt a être écrit dans un fichier
la méthode open for output fait très bien cela
je relâche enfin les cellules copié avec application.cutcopymode=false
terminé
voilà comment je copie une plage précise en csv ou en html ou en xml ou en mime etc...etc....
simplement en remplaçant les vbtab par les caractères de structure
Ah non non, je demandais de l'exclure !!!Re
Pour conserver la ligne d'en-tête (malgrès que la demande initiale demandais à l'exclure) utiliser :
VB:Tbl = Sheets("csv").Range("CSV[#all]")
Cordialement
Comment adapter le chemin pour que je puisse tester ?re
@cp4 oui tu a raison je n'ai pas déclaré une variable j'ai écris ça en 2sec de mémoire
@Efgé c'est bien pour ça que j'ai dis le chemin a adapter a votre cas
@ZZ59264
j'explique
quand on copie quelque chose que ce soit en VBA ou autre ,ce qui est copié va dans le clibboard
il y a plusieurs moyen de récupérer ce qu'il y a dans le clipboard sans devoir le coller ailleurs
je viens d'en donner un exemple
ici pour accéder au clipboard j'utilise le dataobject en late binding(déclaration tardive) avec le clisd(le numerode 3 kilometre)
avec sa fonction getfromclipboard et et sa property gettext(1) je récupère dans la variable texte le tableau entier sous forme de texte
les valeurs dans le texte sont alors séparées par un caractère TAB que je remplace par le ";"
et voilà j'ai mon code CSV prêt a être écrit dans un fichier
la méthode open for output fait très bien cela
je relâche enfin les cellules copié avec application.cutcopymode=false
terminé
voilà comment je copie une plage précise en csv ou en html ou en xml ou en mime etc...etc....
simplement en remplaçant les vbtab par les caractères de structure
je repeteComment adapter le chemin pour que je puisse tester ?
chemin = Environ("userprofile") & "\DeskTop\" & Sheets("EN TETE").[AK2] & Format(Date, "_yyyy-mm-dd") & ".csv"
Userprofile est a changer?
Petite précision car dans votre explication, vous dites que vous récupérer le tableau en entier, or je ne veux que le tableau à partir de la deuxieme ligne (sans les en tête),
Ne pouvant tester votre solution à cause du chemin, je ne sais pas si cela donne le résultat escompté,
Merci pour vos explications, je vais devoir lire plusieurs fois quand même et je vais bien essayer de comprendre chaque étape,
'Range("CSV[#all]").Copy ' on copie le tableau structuré entete compris
Range("CSV").Copy ' on copie le tableau structuré sans les entetes
sub testdossier()
dim chemin$,fichier$
Chemin = "P:\AP\5 B\5 CSV IMPORT\"
'fichier= Sheets("EN TETE").[AK2] & Format(Date, "_yyyy-mm-dd") & ".csv"
if dir (chemin,vbdirectory)<>"" then
msgbox "le dossier de destination existe"
else
msgbox "le dossier de destination n'existe pas "
end if
end sub