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

Une petite colle pour les spécialistes de l'automation.

6 réponses
Avatar
Stéphane CROZETIERE
Bonjour à tous,

Voila mon problème.
J'exporte les données d'une table vers un fichier excel.
Puis, par automation, j'ouvre ce fichier et je le convertis au format csv.
Comme dans ce fichier csv, les champs sont séparés par des virgules, et
non par des points virgules (ce que je ne comprends pas, quelqu'un a
peut-être une solution), j'ai décidé, par automation, de remplacer ces
virgules par des points virgules. ET CA NE MARCHE PAS !

Pour obtenir le code qui permet de faire ce remplacement, j'enregistre
une macro sous excel, puis je vais voir son code, que je recopie par
copier-coller dans mon module Access. Ce code est le suivant :


Dim App As Excel.Application

Set App = CreateObject("Excel.Application")

App.Workbooks.Open "C:\test.csv"

App.Columns("A:A").Select
App.Selection.Replace What:=",", Replacement:=";", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False,SearchFormat:=False,_
ReplaceFormat:=False

App.Workbook.Close

App.Quit

Set App=Nothing


C'est grave docteur ?

6 réponses

Avatar
NoBlem
Pourquoi ne pas éxécuter directement ta macro Excel en la
lançant d'Access?
-----Message d'origine-----
Bonjour à tous,

Voila mon problème.
J'exporte les données d'une table vers un fichier excel.
Puis, par automation, j'ouvre ce fichier et je le
convertis au format csv.

Comme dans ce fichier csv, les champs sont séparés par
des virgules, et

non par des points virgules (ce que je ne comprends pas,
quelqu'un a

peut-être une solution), j'ai décidé, par automation, de
remplacer ces

virgules par des points virgules. ET CA NE MARCHE PAS !

Pour obtenir le code qui permet de faire ce remplacement,
j'enregistre

une macro sous excel, puis je vais voir son code, que je
recopie par

copier-coller dans mon module Access. Ce code est le
suivant :



Dim App As Excel.Application

Set App = CreateObject("Excel.Application")

App.Workbooks.Open "C:test.csv"

App.Columns("A:A").Select
App.Selection.Replace What:=",", Replacement:=";",
LookAt:=xlPart, _

SearchOrder:=xlByColumns,
MatchCase:úlse,SearchFormat:úlse,_

ReplaceFormat:úlse

App.Workbook.Close

App.Quit

Set App=Nothing


C'est grave docteur ?

.



Avatar
Anor
Bonjour Stéphane,

Qu'est-ce que ta méthode apporte de plus que la ligne de commande
DoCmd.TransferText acExportDelim, , "LaTable", "C:test.csv", True

??

--
à+
Arnaud
----------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - Les tablettes d'Anor
www.anor.fr.st
----------------------------------------------

Stéphane CROZETIERE a médité :
| Bonjour à tous,
|
| Voila mon problème.
| J'exporte les données d'une table vers un fichier excel.
| Puis, par automation, j'ouvre ce fichier et je le convertis au format
| csv. Comme dans ce fichier csv, les champs sont séparés par des
| virgules, et non par des points virgules (ce que je ne comprends pas,
| quelqu'un a peut-être une solution), j'ai décidé, par automation, de
| remplacer ces virgules par des points virgules. ET CA NE MARCHE PAS !
|
| Pour obtenir le code qui permet de faire ce remplacement, j'enregistre
| une macro sous excel, puis je vais voir son code, que je recopie par
| copier-coller dans mon module Access. Ce code est le suivant :
|
|
| Dim App As Excel.Application
|
| Set App = CreateObject("Excel.Application")
|
| App.Workbooks.Open "C:test.csv"
|
| App.Columns("A:A").Select
| App.Selection.Replace What:=",", Replacement:=";",
| LookAt:=xlPart, _ SearchOrder:=xlByColumns,
| MatchCase:úlse,SearchFormat:úlse,_ ReplaceFormat:úlse
|
| App.Workbook.Close
|
| App.Quit
|
| Set App=Nothing
|
|
| C'est grave docteur ?
Avatar
Hubert Canevet
A propos, CSV, est-ce que ça ne signifie plus Comma
Separated Values, donc valeurs séparées par des virgules ?

Cela étant, c'est vrai que l'interface utilisateur
d'Access propose, comme celle d'Excel, quelque chose de
très bien, avec sélection du caractère séparateur et tout
et tout, mais pour faire l'équivalent avec
DoCmd.TransferText, en tout cas sous Access 95, j'avoue
que je trouve l'aide un peu sèche.

On a toujours la solution de développer soi-même son usine
à gaz, mais ça fait un peu "ballot" ...

Alors si tu as réussi à obtenir un fichier avec des
virgules et que tu veux des points-virgules à la place,
sous Access la moulinette pourrait ressembler à

Sub ConvertText()
Dim Chaine As String
Dim csVirg As String, csPointVirg As String
'selon les versions d'Access
'des constantes peuvent être plus appropriées
'pour une gestion optimale des ressources
csVirg = ","
csPointVirg = ";"

'ne pas oublier de préciser le répertoire
'ainsi que l'unité par défaut (ChDir, ChDrive)
Open "FichierEntree.CSV" For Input As #1
Open "FichierSortie.txt" For Output As #2
While Not EOF(1)
Line Input #1, Chaine
Write #2, fstrTran(Chaine, csVirg, csPointVirg)
Debug.Print Chaine 'pas obligé, cette ligne-là
Wend
Close #1
Close #2
End Sub

Etant entendu qu'il faut aller chercher le texte de
fstrTran là :
http://www.mvps.org/accessfr/strings/str0004.htm

Attention avec l'ouverture d'un fichier à champs délimités
par Excel, le fractionnement en colonnes peut s'avérer
automatique ou pas selon les cas, donc ça fait un point à
surveiller.

Bon, maintenant, tu veux faire quoi, avec Automation ?

-----Message d'origine-----
Bonjour à tous,

Voila mon problème.
J'exporte les données d'une table vers un fichier excel.
Puis, par automation, j'ouvre ce fichier et je le
convertis au format csv.

Comme dans ce fichier csv, les champs sont séparés par
des virgules, et

non par des points virgules (ce que je ne comprends pas,
quelqu'un a

peut-être une solution), j'ai décidé, par automation, de
remplacer ces

virgules par des points virgules. ET CA NE MARCHE PAS !

Pour obtenir le code qui permet de faire ce remplacement,
j'enregistre

une macro sous excel, puis je vais voir son code, que je
recopie par

copier-coller dans mon module Access. Ce code est le
suivant :



Dim App As Excel.Application

Set App = CreateObject("Excel.Application")

App.Workbooks.Open "C:test.csv"

App.Columns("A:A").Select
App.Selection.Replace What:=",", Replacement:=";",
LookAt:=xlPart, _

SearchOrder:=xlByColumns,
MatchCase:úlse,SearchFormat:úlse,_

ReplaceFormat:úlse

App.Workbook.Close

App.Quit

Set App=Nothing


C'est grave docteur ?

.



Avatar
Stéphane CROZETIERE

A propos, CSV, est-ce que ça ne signifie plus Comma
Separated Values, donc valeurs séparées par des virgules ?

Cela étant, c'est vrai que l'interface utilisateur
d'Access propose, comme celle d'Excel, quelque chose de
très bien, avec sélection du caractère séparateur et tout
et tout, mais pour faire l'équivalent avec
DoCmd.TransferText, en tout cas sous Access 95, j'avoue
que je trouve l'aide un peu sèche.

On a toujours la solution de développer soi-même son usine
à gaz, mais ça fait un peu "ballot" ...

Alors si tu as réussi à obtenir un fichier avec des
virgules et que tu veux des points-virgules à la place,
sous Access la moulinette pourrait ressembler à

Sub ConvertText()
Dim Chaine As String
Dim csVirg As String, csPointVirg As String
'selon les versions d'Access
'des constantes peuvent être plus appropriées
'pour une gestion optimale des ressources
csVirg = ","
csPointVirg = ";"

'ne pas oublier de préciser le répertoire
'ainsi que l'unité par défaut (ChDir, ChDrive)
Open "FichierEntree.CSV" For Input As #1
Open "FichierSortie.txt" For Output As #2
While Not EOF(1)
Line Input #1, Chaine
Write #2, fstrTran(Chaine, csVirg, csPointVirg)
Debug.Print Chaine 'pas obligé, cette ligne-là
Wend
Close #1
Close #2
End Sub

Etant entendu qu'il faut aller chercher le texte de
fstrTran là :
http://www.mvps.org/accessfr/strings/str0004.htm

Attention avec l'ouverture d'un fichier à champs délimités
par Excel, le fractionnement en colonnes peut s'avérer
automatique ou pas selon les cas, donc ça fait un point à
surveiller.

Bon, maintenant, tu veux faire quoi, avec Automation ?


-----Message d'origine-----
Bonjour à tous,

Voila mon problème.
J'exporte les données d'une table vers un fichier excel.
Puis, par automation, j'ouvre ce fichier et je le


convertis au format csv.

Comme dans ce fichier csv, les champs sont séparés par


des virgules, et

non par des points virgules (ce que je ne comprends pas,


quelqu'un a

peut-être une solution), j'ai décidé, par automation, de


remplacer ces

virgules par des points virgules. ET CA NE MARCHE PAS !

Pour obtenir le code qui permet de faire ce remplacement,


j'enregistre

une macro sous excel, puis je vais voir son code, que je


recopie par

copier-coller dans mon module Access. Ce code est le


suivant :


Dim App As Excel.Application

Set App = CreateObject("Excel.Application")

App.Workbooks.Open "C:test.csv"

App.Columns("A:A").Select
App.Selection.Replace What:=",", Replacement:=";",


LookAt:=xlPart, _

SearchOrder:=xlByColumns,


MatchCase:úlse,SearchFormat:úlse,_

ReplaceFormat:úlse

App.Workbook.Close

App.Quit

Set App=Nothing


C'est grave docteur ?

.


Merci pour ton aide. En attendant de tester ça, je trouve quand même


étonnant que l'export au format .csv sous excel 97 et 2000 donne des
point virgules, alors que sous XP (c'est mon cas), ça donne des virgules.


Avatar
Daniel Carollo
Bonjour tout le monde!

Une facon de resoudre l'export que Stephane desire serait de faire tout ca
dans une requete:

SELECT Champ1 & "; " & Champ2 & "; " & Format([Champ3], LeBonFormat) etc.
AS Resultat
FROM MaTableOuRequete

Cette requete aura donc un seul champ de type chaine de caracteres. Il
suffit d'exporter ca, il n'y a meme plus de separateurs...

Bonne journee a tous.

Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Stéphane CROZETIERE" wrote in message
news:
Bonjour à tous,

Voila mon problème.
J'exporte les données d'une table vers un fichier excel.
Puis, par automation, j'ouvre ce fichier et je le convertis au format csv.
Comme dans ce fichier csv, les champs sont séparés par des virgules, et
non par des points virgules (ce que je ne comprends pas, quelqu'un a
peut-être une solution), j'ai décidé, par automation, de remplacer ces
virgules par des points virgules. ET CA NE MARCHE PAS !

Pour obtenir le code qui permet de faire ce remplacement, j'enregistre
une macro sous excel, puis je vais voir son code, que je recopie par
copier-coller dans mon module Access. Ce code est le suivant :


Dim App As Excel.Application

Set App = CreateObject("Excel.Application")

App.Workbooks.Open "C:test.csv"

App.Columns("A:A").Select
App.Selection.Replace What:=",", Replacement:=";", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:úlse,SearchFormat:úlse,_
ReplaceFormat:úlse

App.Workbook.Close

App.Quit

Set App=Nothing


C'est grave docteur ?



Avatar
Stéphane CROZETIERE
Bonjour tout le monde!

Une facon de resoudre l'export que Stephane desire serait de faire tout ca
dans une requete:

SELECT Champ1 & "; " & Champ2 & "; " & Format([Champ3], LeBonFormat) etc.
AS Resultat
FROM MaTableOuRequete

Cette requete aura donc un seul champ de type chaine de caracteres. Il
suffit d'exporter ca, il n'y a meme plus de separateurs...

Bonne journee a tous.

Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Stéphane CROZETIERE" wrote in message
news:

Bonjour à tous,

Voila mon problème.
J'exporte les données d'une table vers un fichier excel.
Puis, par automation, j'ouvre ce fichier et je le convertis au format csv.
Comme dans ce fichier csv, les champs sont séparés par des virgules, et
non par des points virgules (ce que je ne comprends pas, quelqu'un a
peut-être une solution), j'ai décidé, par automation, de remplacer ces
virgules par des points virgules. ET CA NE MARCHE PAS !

Pour obtenir le code qui permet de faire ce remplacement, j'enregistre
une macro sous excel, puis je vais voir son code, que je recopie par
copier-coller dans mon module Access. Ce code est le suivant :


Dim App As Excel.Application

Set App = CreateObject("Excel.Application")

App.Workbooks.Open "C:test.csv"

App.Columns("A:A").Select
App.Selection.Replace What:=",", Replacement:=";", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:úlse,SearchFormat:úlse,_
ReplaceFormat:úlse

App.Workbook.Close

App.Quit

Set App=Nothing


C'est grave docteur ?





Merci !