macro de conversion xls en csv
Dernière réponse : dans Programmation
Bonjour,
Je suis débutant en programmation et je souhaite créer une macro qui convertit un fichier xls en csv et le sauvegarde dans un repertoire bien determiné. Je voulais avoir la ligne de code qui me permet de le faire.
Merci d'avance!
Je suis débutant en programmation et je souhaite créer une macro qui convertit un fichier xls en csv et le sauvegarde dans un repertoire bien determiné. Je voulais avoir la ligne de code qui me permet de le faire.
Merci d'avance!
Autres pages sur : macro conversion xls csv
Lassé par la pub ? Créez un compte
Merci pour la réponse!
J'ai suivi tes conseils et en allant sur VB editor le code présent est:
Sub ccsv()
'
' ccsv Macro
' Macro enregistrée le 01/08/2006 par albion
'
'
ActiveWorkbook.SaveAs Filename:= _
"D:\Documents and Settings\albion\Desktop\tramecsv.csv", FileFormat:=xlCSV, _
CreateBackup:=False
End Sub
Etapes
1) Outils/nouvelle macro que j'ai nommé ccsv
2) Fichier/Enregistrer sous/ Bureau et j'ai choisi dans type de fichier CSV puis je l'ai nommé tramecsv.
A chaque fois que je lance la macro il me dit que le fichier existe déjà("normal") jusque là c'est ok.
Sauf que je ne sais pas comment je dois faire pour qu' à chaque fois que je lance la macro que je renomme le fichier de façon différente.
J'espère que j'ai été clair!
Merci
J'ai suivi tes conseils et en allant sur VB editor le code présent est:
Sub ccsv()
'
' ccsv Macro
' Macro enregistrée le 01/08/2006 par albion
'
'
ActiveWorkbook.SaveAs Filename:= _
"D:\Documents and Settings\albion\Desktop\tramecsv.csv", FileFormat:=xlCSV, _
CreateBackup:=False
End Sub
Etapes
1) Outils/nouvelle macro que j'ai nommé ccsv
2) Fichier/Enregistrer sous/ Bureau et j'ai choisi dans type de fichier CSV puis je l'ai nommé tramecsv.
A chaque fois que je lance la macro il me dit que le fichier existe déjà("normal") jusque là c'est ok.
Sauf que je ne sais pas comment je dois faire pour qu' à chaque fois que je lance la macro que je renomme le fichier de façon différente.
J'espère que j'ai été clair!
Merci
J'ai une autre erreur:
"Impossible d'accéder à 'test.csv' le fichier peut être en lecture seule, ou vous essayez peut être d'accéder à un emplacement en lecture seule. Il est également possible que le serveur sur lequel est enregistré le document ne réponde pas"
Quand je clique sur "réessayer" j'ai uneerreur d'execution '1004' La methode saveAs de l'objeet _workbook a echoué!
J'ai essayé de voir sur Aide mais je trouve pas malheureusement qq chose qui peut me faire avancer
"Impossible d'accéder à 'test.csv' le fichier peut être en lecture seule, ou vous essayez peut être d'accéder à un emplacement en lecture seule. Il est également possible que le serveur sur lequel est enregistré le document ne réponde pas"
Quand je clique sur "réessayer" j'ai uneerreur d'execution '1004' La methode saveAs de l'objeet _workbook a echoué!
J'ai essayé de voir sur Aide mais je trouve pas malheureusement qq chose qui peut me faire avancer
(Merci de lire les règles et de les appliquer, particulièrement en ce qui concerne la balise CODE)
Tu dois avoir une application qui garde ton fichier ouvert. Sans doute Excel lui-même. Essaie de quitter toutes les instances d'Excel. Vérifie dans le gestionnaire des tâches qu'il n'existe effectivement plus de process Excel. En utilisant SaveCopyAs au lieu de SaveAs, tu peux sans doute éviter ces désagréments.
Tu dois avoir une application qui garde ton fichier ouvert. Sans doute Excel lui-même. Essaie de quitter toutes les instances d'Excel. Vérifie dans le gestionnaire des tâches qu'il n'existe effectivement plus de process Excel. En utilisant SaveCopyAs au lieu de SaveAs, tu peux sans doute éviter ces désagréments.
Merci Zeb
Finalement j'ai décidé de faire simple c'est à dire étape par étape avant de faire la conversion en csv.
Ce que je veux c'est avoir un bouton macro qui me permet de selectionner les fichiers excel sur lesquels je veux travailler
--------------------------------------------------------------------
CODE:
Sub Bouton1_Quandclic()
FileToOpen = Application _
.GetOpenFilename ("text Files (*.xls), *.xls")
End Sub
-----------------------------------------------------------
Peux tu me dire si cette ligne de code est correcte?
Merci d'avance!
Finalement j'ai décidé de faire simple c'est à dire étape par étape avant de faire la conversion en csv.
Ce que je veux c'est avoir un bouton macro qui me permet de selectionner les fichiers excel sur lesquels je veux travailler
--------------------------------------------------------------------
CODE:
Sub Bouton1_Quandclic()
FileToOpen = Application _
.GetOpenFilename ("text Files (*.xls), *.xls")
End Sub
-----------------------------------------------------------
Peux tu me dire si cette ligne de code est correcte?
Merci d'avance!
J'ouvre deux classeurs
Sur le premier classeur:
Je recherche la cellule qui contient "client", si je trouve la donnée client, je prends la donnée qui situe deux cellules aprés sur la même ligne(formulaire, champ + donnée à rentrer), je l'affecte à une cellule donnée d'un autre classeur.
Pour le moment ce que j'ai fait c'est:
-----------------------------------------------------
CODE:
Sub Recherche ()
Dim c As Object
'je recherche la cellule contenant client et si je trouve je décale de 2 lignes et 3 colonnes
For Each c In Range("1:20")
If c.value = "Client" Then
ActiveCell.Offset(2, 3) = "Albion"
Exit Sub
End If
Next
End Sub
____________________________________________________________
Je sais que ça n'a rien à voir avec ce que je veux, mais comment je peux prendre la donnée de la cellule située à (2,2) et la copier dans un autre classeur?
Merci
Sur le premier classeur:
Je recherche la cellule qui contient "client", si je trouve la donnée client, je prends la donnée qui situe deux cellules aprés sur la même ligne(formulaire, champ + donnée à rentrer), je l'affecte à une cellule donnée d'un autre classeur.
Pour le moment ce que j'ai fait c'est:
-----------------------------------------------------
CODE:
Sub Recherche ()
Dim c As Object
'je recherche la cellule contenant client et si je trouve je décale de 2 lignes et 3 colonnes
For Each c In Range("1:20")
If c.value = "Client" Then
ActiveCell.Offset(2, 3) = "Albion"
Exit Sub
End If
Next
End Sub
____________________________________________________________
Je sais que ça n'a rien à voir avec ce que je veux, mais comment je peux prendre la donnée de la cellule située à (2,2) et la copier dans un autre classeur?
Merci
UNE DERNIERE FOIS : VAS LIRE LES REGLES :
Les règles du forum Programmation - A lire !APRES LES AVOIR ASSIMILEES, TU ME MODIFIES TOUS TES POSTS POUR RESPECTER L'USAGE DE LA BALISE CODE.
IL N'EST PAS NECESSAIRE DE DEMANDER COMMENT FAIRE, TOUT Y EST CORRECTEMENT EXPLIQUE.
(Je rappelle qu'écrire en majuscule sur un forum correspond à crier dans la vie)
J'ai reussi à prendre la valeur qui se situe à 2 cellules de la valeur "client" et la copier sur l'autre feuille:
Comment je fais si je veux copier cette donnée dans un autre classeur qui se nomme "Configuration"
Merci en espèrant que j'ai respecté les règles (je viens de les lire)
Sub Recherche ()
Dim c As Object
'je recherche la cellule contenant client et si je trouve je prends la valeur de la cellule qui est à sur la même ligne mais 2 colonne aprés!
For Each c In Range("1:20" )
If c.value = "Client" Then
Worksheets("Feuil2").Cells(2, 1) = Worksheets("Feuil1").Cells(c.row, c.Column + 2)
Exit Sub
End If
Next
End Sub
Comment je fais si je veux copier cette donnée dans un autre classeur qui se nomme "Configuration"
Merci en espèrant que j'ai respecté les règles (je viens de les lire)
1°) J'avais dit tous.
2°) J'avais dit modifier, pas recopier.
3°) Tu montres un peu de bonne volonté, c'est déjà ça.
Ce n'est pas faux, mais c'est très laid !
c c'est déjà une une cellule. Alors c.OffSet(0, 2) est la cellule d'à-côté !
Quelques conseils (tu fais comme tu veux, ce ne sont que des conseils)
Perso, quand j'utilise plusieurs feuilles et/ou plusieurs classeurs, je préfère tout préciser
Et pour plus de clarté, j'utilise souvent des objets :
----------------------------------------------------
ActiveCell, c'est la cellule active.
Cells c'est la collection des cellules.
Cells( .. ) c'est une cellule précise.
ActiveSheet, c'est la feuille active.
Sheets c'est la collection des feuille s.
Sheets( .. ) c'est une feuille précise.
ActiveWorkbook, c'est le classeur actif.
Workbooks, c'est la collection des classeurs.
Devine comment on fait pour désigner un classeur précis
2°) J'avais dit modifier, pas recopier.
3°) Tu montres un peu de bonne volonté, c'est déjà ça.
Worksheets("Feuil1" ).Cells(c.row, c.Column + 2)
Ce n'est pas faux, mais c'est très laid !c c'est déjà une une cellule. Alors c.OffSet(0, 2) est la cellule d'à-côté !
Quelques conseils (tu fais comme tu veux, ce ne sont que des conseils)
Perso, quand j'utilise plusieurs feuilles et/ou plusieurs classeurs, je préfère tout préciser
For Each c In Worksheets("Feuil1").Range("1:20")
..
Worksheets("Feuil2" ).Cells(2, 1).Value = c.OffSet(0, 2).Value
Et pour plus de clarté, j'utilise souvent des objets :
Dim w1, w2 as Worksheet
Set w1 = Worksheets("Feuil1")
Set w2 = Worksheets("Feuil1")
For Each c In w1.Range("1:20")
w2.Cells(2, 1).Value = c.OffSet(0, 2).Value
----------------------------------------------------
Citation :
dans un autre classeurActiveCell, c'est la cellule active.
Cells c'est la collection des cellules.
Cells( .. ) c'est une cellule précise.
ActiveSheet, c'est la feuille active.
Sheets c'est la collection des feuille s.
Sheets( .. ) c'est une feuille précise.
ActiveWorkbook, c'est le classeur actif.
Workbooks, c'est la collection des classeurs.
Devine comment on fait pour désigner un classeur précis
Wé encore moi!
Encore merci, tes indications m'ont bcp aidé, et ça a marché par la suite. Maintenat j'ai décidé de faire le remplissage de façon automatique. J'explique le contexte!
J'ai un classeur que j'ai nommé vba1 qui contient la feuille "frm" et la feuille "conf" et un autre classeur que j'ai nommé "vba2" qui contient la feuille "import"
La feuille "conf" contient un tableau avec les champs à chercher et le décalage qu'il faut pour trouver la donnée que je veux insérer dans la feuille "import" de vba2. Ce que j'ai fait
Quand j'exècute cela
1)prend un tps fou
2)Il me recopie rien
3) ne génére pas d'erreur
Je pense que c'est la boucle qui est mal définie et donc pour revenir au point de départ c'est ce fichier que je dois enregistrer en csv et l'importer à partir d'un PDA.
Encore merci, tes indications m'ont bcp aidé, et ça a marché par la suite. Maintenat j'ai décidé de faire le remplissage de façon automatique. J'explique le contexte!
J'ai un classeur que j'ai nommé vba1 qui contient la feuille "frm" et la feuille "conf" et un autre classeur que j'ai nommé "vba2" qui contient la feuille "import"
La feuille "conf" contient un tableau avec les champs à chercher et le décalage qu'il faut pour trouver la donnée que je veux insérer dans la feuille "import" de vba2. Ce que j'ai fait
Sub last()
Dim I As Integer
'je calcule le nbre de colonnes du tableau dans "conf"
nbrcolonne = Workbooks("vba1.xls").Worksheets("conf") _
.UsedRange.Columns.Count
For I = 2 To nbrcolonne
For Each c In Range("A:I")
If c.Value = Workbooks("vba1.xls").Worksheets("Conf").Cells(1, I) Then
Workbooks("vba2.xls").Worksheets("import").Cells(2, I + 2) = _
' pour info, c.column + workbook..... correspond au decalage entre champ recherché et donnée que je veux recopier
Workbooks("vba1.xls").Worksheets("frm").Cells(c.Row, c.Column + _
Workbooks("vba1.xls").Worksheets("Conf").Cells(2, I))
End If
Next
Next I
End Sub
Quand j'exècute cela
1)prend un tps fou
2)Il me recopie rien
3) ne génére pas d'erreur
Je pense que c'est la boucle qui est mal définie et donc pour revenir au point de départ c'est ce fichier que je dois enregistrer en csv et l'importer à partir d'un PDA.
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumMacro conversion csv
- articlesConvertir xls en csv macro
- ForumConversion automatique xls csv
- ForumConversion fichier xls en csv
- ForumConvertir .xls en .csv
- ForumVba xls et csv
- ForumConversion csv xls
- ForumExcel 2007 xls en csv
- articlesEnregistrer un fichier xls en csv
- ForumTransfert fichier xls en csv
- Voir plus
L'aide en ligne,