Ouvrir un fichier csv en VBA

  • Initiateur de la discussion Initiateur de la discussion DJ SKOT
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

DJ SKOT

Guest
Bonsoir à TOUS !
Je me lance depuis très peu dans le VBA.
Et voilà que je trouve une application à réaliser.

Sans VBA
J'ai un fichier "EXEMPLES.XLS" lié à "TEST.XLS" lié à un autre fichier "TEST.CSV", cependant pour faire ma mise à jour dans "EXEMPLES.XLS", je dois obligatoirement ouvrir le fichier csv sinon pas de mise à jour de tous mes liens.

Avec VBA
Afin de compensé ce problème, je souhaite ajouté un bouton de commande "Mise à Jour" qui effectura la tache suivante :
1 - Ouvrir TEST.CSV
2 - Ouvrir TEST.XLS
3 - Enregistrer TEST.XLS
4 - Fermer TEST.XLS
5 - Fermer TEST.CSV

Oui, mais avec la fonction "Workbooks.Open" que j'utilise pour ouvrir le fichier TEST.CSV,celui-ci s'ouvre avec aucune délimitation de colonne et j'obtiens n'importe quoi dans mes liens.

A priori cela semble bcp plus difficile que prévu pour ouvrir les fichiers CSV.
S'il vous plaît pouvez vous m'aider à réaliser ce projet ?
Merci d'avance
 
Bonsoir DJ skot,

Je ne vois pas de difficulté pour ouvrir un fichier au format CSV avec l'instruction Workbooks.Open.

Sinon est-ce que ce CSV est construit par Excel ou un autre programme ?

J'ai différentes solution pour importer du TXT avec n'importe quel séparateurs mais il faut connaitre la structure du fichier à importer. Il serait peut-être interressant que tu zip un exemple de ce fichier CSV (sans données confidentielles)...


Bonne soirée
@+Thierry
 
il n'y a pas de difficulté à ouvrir un csv, mais il y en a par contre à récupérer les données de ceux-ci en fonction de la machine sur laquelle cela est fait. D'une machine à l'autre (je l'ai expérimenté chez moi, entre 2 de mes ordinateurs) les paramètres ne sont pas forcément les mêmes et sur une machine, les "." seront considérés comme séparateurs décimaux, alors que sur l'autre ce seront les "," alors que, dans mes paramètres systèmes, il n'y a bien sûr pas de différences. Idem pour les séparateurs de champs qui peuvent être des virgules ou des points-virgules.

En bref, en ce qui me concerne (n'est-ce pas Celeda), j'évite autant que possible les csv pour des programmes prévus pour tourner sur des configurations différentes.
 
Bonjour Ti, DJ Skot, le Forum

Oui j'ai remarqué aussi ce problème Ti, mais en fait je crois que tout dépend du programme qui a créé le CSV. Pour exemple, j'ai un compte à La Poste et je télécharge toutes mes opérations en format CSV. (seul dispo)

Pour autant que le PC soit bien en FR pour les paramètres régionaux (séparateur de champs ";" et séparateurs décimaux ","), je n'ai aucun souci particulier sur toutes les machines et depuis des années (sous Win 95 / Win NT et Excel 97, Win NT / 2000 et Excel 2000 et maintenant Win 2000 / XP et Excel XP)

Donc j'en arrive à la conclusion que La Poste a bien trouvé le moyen de faire des CSV "conformes" 'et "standards", par contre je ne peux pas poster un exemple ;-)

Bonne Journée
@+Thierry
 
personnellement, après avoir observé ce phénomène, j'ai exporté un tableau en csv depuis Excel. Ensuite j'ai importé ce fichier par macro. Résultat, ce qui fonctionne dans une machine (XL 98 Win 98) ne fonctionne plus dans l'autre(XL XP Win XP) et vice-versa.
Bon je n'ai pas poussé plus loin, il serait possible de faire des tests plus avancés pour déterminer le format à adopter mais je ne l'ai pas fait...
 
Bonjour,

En fait, lorsque j'ouvre le fichier CSV directement de l'explorateur ou d'excel, pas de souci les séparateurs de champs ";" sont bien séparer en colonne.

Par contre lorsque c'est la macro qui execute l'ouverture du fichier, les séparateurs de champs ";" ne sont pas respectés.

Le fichier csv est provient de la caisse epargne, mais vous trouverez ci-joint les fichiers non confidentielles afin de mieux comprendre ce qui se passe.

Merci d'avance pour votre aide

Bonne journée
 

Pièces jointes

Bonsoir,

Ca y est ! j'ai trouvé un code capable de faire le boulot et il fonctionne !
voir ci-dessous ca peut servir.
En fait, il faut bien paramétrer l'ouverture du fichier avec la fonction "TextToColumns"

A bientot !

Sub MiseAjour()
Dim wb As Workbook

With Application
.ScreenUpdating = False
.DisplayAlerts = False

Set wb = .Workbooks.Open("C:\test.csv")
wb.Sheets(1).Columns(1).TextToColumns Range("A1"), xlTextQualifierDoubleQuote, , False, , , , , True, ";", Array(1, 4)
.ScreenUpdating = True
.DisplayAlerts = False
End With

Workbooks.Open "C:\test.xls"
ActiveWorkbook.Save
ActiveWorkbook.Close
ActiveWorkbook.Close
End Sub
 
SAlut DJ Skot, Ti, le Forum

Heureux que tu aies pu te dépatouiller tout seul ;-) et surtout encore plus heureux que tu aies la gentillesse de venir faire partager ta solution dans le Forum.

Bonne Journée
@+Thierry
 
Salut les gars !

Il y a quelques mois, nous avions déjà débattu un peu du sujet.

Il y a un aussi un petit hic avec l'ouverture des Csv.

En effet, si vous ouvrez Excel, puis demander l'ouverture d'un fichier Csv par le menu Fichier / Ouvrir...., il ne s'ouvre pas de la même façon que si vous ouvrez ce même fichier en double-cliquant directement dessus.

Pourquoi ça ?

Il est vrai que nous avions aussi constaté que parfois le problème venait du logiciel qui avait créé ce fichier Csv.

En tout cas, voici la macro simple que j'utilise et qui fonctionne parfaitement :

Workbooks.Open Filename:="D:\Foot\13T-733-34320.csv"


Après plusieurs contacts avec les auteurs des logiciels, créant des Csv, il s'est avéré qu'il y aurait plusieurs façons pour ces concepteurs de créer des Csv et que selon...eh bien Excel plante ou non.

@ +

Moa
 
Hello Moa, le Fil, le Forum

Moi je vous le dis, un bon vieux TXT y a que çà de vrai !!

Le CSV prend de la place (alors qu'il ne peut contenir rien de plus qu'un TXT) et en plus si c'est pas fiable à l'ouverture ;-)

Bonne Soirée
@+Thierry
 
Bonsoir Ti, Moa, Dj et le Forum


Heuh je reviens à la charge ...

Je viens de me rendre compte qu'Excel XP (2002) gère les séparateurs un peu comme ce bon vieux Excel 5... C'est à dire indifféremment des Régional Settings....

Sous XP il existe une option du style "UseRegionalSettings" <<<< Attention pas forcément Syntax exacte car je ne suis pas sous XP là... (menu Outils/Options/International ou un truc du genre)

Je pense que certaines différences de traitement peuvent aussi provenir de là !!

C'est assez primordial comme différence !! lol

Bonne nuit
@+Thierry
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour