Enregistrer fichier CSV en XLS avec macro

Le
Gabriel
Bonjour,

J'ai enregistré une macro sous Excel 2003, je l'applique sur des
fichiers CSV et je voudrais enregistrer ces fichiers dans le même
répertoire avec le même nom mais au format XLS, que faut-il ajouter à
la fin de la macro pour que ça fonctionne, s'il vous plait ?

J'ai ajouté :
ChDir ThisWorkbook.Path
ThisWorkbook.SaveCopyAs ThisWorkbook.Name & ".xls"
mais ça ne fonctionne pas.

Peut-être est-ce dû au fait que la macro est enregistrée dans le
classeur des macros personnelles VBAProject (PERSO.XLS), et le
ThisWorkbook correspondrait donc à perso.xls ? mais dans ce cas comment
faire pour que ça s'applique au fichier sur lequel j'applique la macro
?

Sub MakeEntete()
'
' MakeEntete Macro
'
' Touche de raccourci du clavier: Ctrl+e
'
Rows("1:1").Select
Selection.Font.Bold = True
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Cells.Select
Cells.EntireColumn.AutoFit
Columns("I:I").Select
Selection.NumberFormat = "0#"" ""##"" ""##"" ""##"" ""##"
Columns("P:P").Select
Selection.NumberFormat = "0#"" ""##"" ""##"" ""##"" ""##"
Range("A1").Select
ChDir ThisWorkbook.Path
ThisWorkbook.SaveCopyAs ThisWorkbook.Name & ".xls"
End Sub

Merci.

--
Cordialement,
Gabriel
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Modeste
Le #20912491
Bonsour® Gabriel avec ferveur ;o))) vous nous disiez :

Peut-être est-ce dû au fait que la macro est enregistrée dans le
classeur des macros personnelles VBAProject (PERSO.XLS), et le
ThisWorkbook correspondrait donc à perso.xls ? mais dans ce cas
comment faire pour que ça s'applique au fichier sur lequel j'applique
la macro ?



Thisworkbook est le classeur contenant la macro
Activeworkbook est le classeur actif

c'est pour cela qu'il faut qualifier le classeur sur lequel on veut que l'action s'effectue

l'exemple ci-dessous nécessite la présence ouverte d'au moins 3 classeurs dont un sera le classeur maitre contenant les macros (à défaut du perso .xls)

variables publics déclarées

public WB1 as Workbook,WB2 as Workbook,WB3 as workbook

sub xxxx()
set WB1 = Workbooks("Classeur1")
set WB2 = Workbooks("Classeur2")
set WB3 = Workbooks("Classeur3")

WB1.Activate
'on peut alors utiliser With ActiveWorkbook/ bla bla /End With l'action portera sur "Classeur1"

WB3.Activate
'avec with ActiveWorkbook l'action portera maintenant sur "Classeur3"
end sub
michdenis
Le #20912811
Bonjour,

La méthode "SaveCopyAs" ne contient pas de
paramètre "fileFormat" qui permet de modifier
le format de fichier comme la méthode "SaveAs"

Une façon de contourner ce problème, c'est d'enregistrer
le fichier dans le répertoire désiré sous un nom temporaire
de rouvrir le fichier pour l'enregistrer cette fois dans le bon
format avec le même nom que le fichier ouvert et le fermer.
Et on termine pas la suppression du fichier temporaire.

Le paramètre "Local:=True" n'est pas disponible sur les versions
d'excel d'avant 2002, je crois... tu l'enlèves si ce classeur doit être
ouvert sur des versions anciennes.

'------------------------------------
Sub test()

Dim SonNom As String, Wk As Workbook
Dim FormatFichier As XlFileFormat
FormatFichier = xlCSV


Application.ScreenUpdating = False
With ThisWorkbook
Chemin = .Path & ""
Nom = "NomTemporaire.xls"
SonNom = chemin & Nom
.SaveCopyAs SonNom
Set Wk = Workbooks.Open(SonNom)
Application.DisplayAlerts = False
Wk.SaveAs chemin & .Name & ".csv", FileFormat:=FormatFichier, Local:=True
Application.DisplayAlerts = True
Wk.Close False
Kill SonNom
End With
Application.ScreenUpdating = True
End Sub
'------------------------------------



"Gabriel" #
Bonjour,

J'ai enregistré une macro sous Excel 2003, je l'applique sur des
fichiers CSV et je voudrais enregistrer ces fichiers dans le même
répertoire avec le même nom mais au format XLS, que faut-il ajouter à
la fin de la macro pour que ça fonctionne, s'il vous plait ?

J'ai ajouté :
ChDir ThisWorkbook.Path
ThisWorkbook.SaveCopyAs ThisWorkbook.Name & ".xls"
mais ça ne fonctionne pas.

Peut-être est-ce dû au fait que la macro est enregistrée dans le
classeur des macros personnelles VBAProject (PERSO.XLS), et le
ThisWorkbook correspondrait donc à perso.xls ? mais dans ce cas comment
faire pour que ça s'applique au fichier sur lequel j'applique la macro
?

Sub MakeEntete()
'
' MakeEntete Macro
'
' Touche de raccourci du clavier: Ctrl+e
'
Rows("1:1").Select
Selection.Font.Bold = True
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Cells.Select
Cells.EntireColumn.AutoFit
Columns("I:I").Select
Selection.NumberFormat = "0#"" ""##"" ""##"" ""##"" ""##"
Columns("P:P").Select
Selection.NumberFormat = "0#"" ""##"" ""##"" ""##"" ""##"
Range("A1").Select
ChDir ThisWorkbook.Path
ThisWorkbook.SaveCopyAs ThisWorkbook.Name & ".xls"
End Sub

Merci.

--
Cordialement,
Gabriel
Gabriel
Le #20912991
Modeste a exposé le 06/01/2010 :
Bonsour® Gabriel avec ferveur ;o))) vous nous disiez :

Peut-être est-ce dû au fait que la macro est enregistrée dans le
classeur des macros personnelles VBAProject (PERSO.XLS), et le
ThisWorkbook correspondrait donc à perso.xls ? mais dans ce cas
comment faire pour que ça s'applique au fichier sur lequel j'applique
la macro ?



Thisworkbook est le classeur contenant la macro
Activeworkbook est le classeur actif



[...]

Merci Modeste pour ces explications, en effet c'est mieux avec
Activeworkbook.

--
Cordialement,
Gabriel
Gabriel
Le #20913581
michdenis a exprimé avec précision :
Bonjour,

La méthode "SaveCopyAs" ne contient pas de
paramètre "fileFormat" qui permet de modifier
le format de fichier comme la méthode "SaveAs"



[...]

Une fois de plus merci michedenis, ta réponse vient completer celle de
Modeste puisqu'il me manquait la partie conversion.

Par contre j'ai utilisé le format de fichier "xlNormal" et pas "xlCSV"
puisque je souhaite enregistrer le fichier CSV au format XLS et pas au
format CSV.

J'en profite pour te demander si tu as une idée sur mon autre problème:
"Re: Tri par couleur automatique (suite)" ? j'ai ajouté une colonne et
voudrais comptabiliser le nombre de ligne de chaque couleur.

Merci pour ton aide.

--
Cordialement,
Gabriel
michdenis
Le #20913721
| J'en profite pour te demander si tu as une idée sur mon autre problème:

Des idées, j'en ai mais le temps est limité...!
Gabriel
Le #20914021
michdenis avait soumis l'idée :
J'en profite pour te demander si tu as une idée sur mon autre problème:



Des idées, j'en ai mais le temps est limité...!



y a pas de soucis je comprends parfaitement. J'ai concience que les
personnes qui apportent leur aide ici, le font bénévolement et qu'elles
ne doivent rien à personne.

--
Cordialement,
Gabriel
Publicité
Poster une réponse
Anonyme