Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Enregistrer fichier CSV en XLS avec macro

6 réponses
Avatar
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

6 réponses

Avatar
Modeste
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
Avatar
michdenis
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" a écrit dans le message de groupe de discussion :
#
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
Avatar
Gabriel
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
Avatar
Gabriel
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
Avatar
michdenis
| 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é...!
Avatar
Gabriel
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