Excel : Fichier CSV

Signaler
Messages postés
235
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
16 mai 2011
-
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
-
Bonjour,

voilà, j'ai un gros soucis. je suis en train de faire une macro Excel (97), et j'ai besoin d'ouvrir un fichier csv dont voici une ligne:
"ID du ticket+","Date et heure de création","Date et heure d'affectation","Date et heure de clôture","Nom","Prénom","Téléphone","Mat","Libellé activité","Etat","Créateur","Groupe de Création","Affecté par","Groupe Affecté","Prise En Compte par","Groupe de Prise en Compte","Résolu par","Groupe de Résolution","Catégorie","Rubrique","Objet","Résumé","Description","Historique des Solutions","Historique","Urgence","zSolutionID"

Toutes les autres lignes sont identiques, il s'agit du contenu.

Donc , suivant les codes que j'ai trouvé, j'essaie de l'ouvrir:
        DoC = "C:\Toto\Toto.csv"
    Workbooks.Open _
        FileName:=DoC, _
        Format:=xlCSV, _
       Delimiter:=",", _
       ReadOnly:=False


Ca l'ouvre, mais, le probleme, c'est que tout est dans une seule colonne, rien n'est formaté, alors que je lui précise que le format est CSV dans la ligne format.

J'ai tout essayé, j'ai meme essayé un ShellExecute (car Excel le formate comme il faut quand on lance le fichier csv sans l'ouvrir à partir d'excel), mais le shellexecute ne lance pas le fichier excel (et je ne sais pas pourquoi, car ca ne me retourne aucune erreur):
Call ShellExecute(0&, vbNullString, DoC, vbNullString, vbNullString, vbNormalFocus)


En VB Macro, le Replace et le Split n'existe pas, quelqu'un aurait-il une solution à mon problème qui me bloque désespéremment?

Je vous remercie infiniment :)

EvilGost ;)

4 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Salut EvilGost
En effet, Excel merdouille un peu à l'ouverture des CSV :
Quand tu double-cliques sur un fichier CSV, le séparateur est souvent mal interprété (ce qui semble être ton cas).
La solution consiste à :
- Créer une nouvelle macro (Outils, Macro, Nouvelle macro)
- Ouvrir à la main le fichier CSV (Fichier/Ouvrir) en précisant qu'il s'agit d'un fichier CSV et de bien remplir les options (choix de séparateur ...)
- Arrête la macro
Ensuite, tu vas dans "Outils, Macro, Macros ...", tu sélectionnes la macro que tu viens d'enregistrer et tu cliques sur Modifier --> Tu trouveras ainsi le code à utiliser pour que le format soit correct.

Vala
Jack
Messages postés
235
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
16 mai 2011
2
Oui, j'avais déjà essayé (désolé, je l'avais pas précisé), mais lorsque l'on ouvre le fichier csv à partir d'excel et que l'on choisis de convertir (données > convertir), et bien ca m'éclate un peu tout sans donner le meme résultat que si l'on double-cliquait sur le fichier dans l'explorateur windows afin qu'il lance le fichier en ouvrant excel....

Je suis vraiment perdu...

N'existe-t-il pas une solution ormis celle-ci ou celle qui consiste à utiliser Split et Replace?

merci quand meme Jack, c sympa ;)

EvilGost ;)
Messages postés
13
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
10 novembre 2004

il faut que tu l'ouvres, en enlevant l'extension ".csv"
ex: toto.csv devient toto
en effet en l'ouvrant avec des macros, c le bordel
moi ca marche a tous les coups comme ca.

Repertoire = MenuGeneral.TxtRepertoire.Text
FicTemp = MenuGeneral.TxtFichier.Text
Nb = Len(FicTemp)
Fichier = Left(FicTemp, Nb - 4)
Adresse = Repertoire & "" & Fichier

'creation du fichier sans extansion
FileCopy Repertoire & "" & FicTemp, Adresse
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
26
Bonsoir,

J'ai fais un copier /coller de tes données, je les ai enregistrées en
fichier csv avec le bloc notes et j'ai placé ton code dans une macro
pour les récupérer dans excel. Chez moi celà fonctionne parfaitement,
chaque donnée est dans une cellule différentes.

jpleroisse