> Tous les forumsBureautique

 Enregistrer en CSV [VBA]
Statut du sujet : NON RESOLU Imprimer
 julp
  Posté le 24/07/2007 @ 16:34  
 Petit astucien


27 Messages

Bonjour,

pour mon projet j'ai besoin a un moment d'enregistrer une table (une seule) dans un fichier .CSV

Mon code est le suivant:

Sub csv_speichern()
' La macro enregistre la table "meldungen" dans un format .csv

' On choisi la table "meldungen"
Sheets("meldungen").Select

With Application

' On envoi les combinaisons de touches du clavier pour arriver au menu enregistrer sous
.SendKeys "{TAB} {DOWN 10} ~ {TAB 10}", True

' On déclare une proposition de nom sous lequel le fichier sera enregistré
xFileName = "meld_import_pcs7"

' Le Dialogue s'ouvre et l'utilisateur est invité a enregistrer son fichier
.Dialogs(xlDialogSaveAs).Show (xFileName)

End With

End Sub


Le fichier est diponible sur: www.julp.info/excel/meldungen_de.xls

Mon programme fonctionne mais le format n'est pas correct!

Je souhaiterais avoir le format ci dessous:

Le fichier est dispo sur:

Au lieu de cela j'obtient le résultat suivant:

Que dois je ajouter/modifier à mon programme?

Par avance merci,

Amicalement

Julien

 Afficher le profil de julpEnvoyer un message privé à julp
 
 
Publicité
 galopin01  Posté le 24/07/2007 à 19:35  
Astucien

4312 Messages

bonsoir,

pour moi, ça fonctionne bien. Aussi bien sous Excel que sous Wordpad : C'est bien le propre des fichiers csv de s'afficher sous forme de texte séparé par des virgules.

Si tu veux le réouvrir ensuite sous Excel pour avoir des colonnes, utilise Données / Convertir

A+

Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 galopin01  Posté le 24/07/2007 à 20:02  
Astucien

4312 Messages

... mais il est vrai qu'on peut obtenir également un type de fichier csv qui s'ouvre directement en colonne en choisissant de l'enregistrer via l'option Fichier / Enregistrer sous... + type Fichier Excel(séparateur point-virgule)*.csv

On doit pouvoir utiliser cette syntaxe (au lieu des sendkey) tout en utilisant .Dialogs(xlDialogSaveAs) mais pour récupérer le nom de fichier saisi par l'utilisateur. Ensuite tu le réintègres dans la syntaxe que tu auras récupérée par l'nregistreur.

Euh... Suis-je bien clair ?

A+

Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 galopin01  Posté le 24/07/2007 à 20:50  
Astucien

4312 Messages

Bah ! J'ai du trop fumer le VBA.

Essaie ça :

Sub test()
Sheets("meldungen").Copy
xFileName = "meld_import_pcs7"
Application.Dialogs(xlDialogSaveAs).Show xFileName, xlCSV
End Sub

Bon c'est un poil différent... il faudra compléter et fermer l'un ou l'autre... A toi de voir !

A+



Modifié par galopin01 le 24/07/2007 20:52
Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 galopin01  Posté le 24/07/2007 à 21:04  
Astucien

4312 Messages

... Toutefois il ne semble pas possible de quitter (fermer) le fichier CSV par macro sans accepter (manuellement) de sauvegarder les modifications. Toute tentative de sauvegarde automatique semble aboutir à une mise en forme stricte sous la forme d'un CSV à séparateur. Alors que si on ferme le CSV manuellement et on accepte les modifications, on arrive à conserver la mise en forme du classeur...

A+

Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 julp  Posté le 25/07/2007 à 10:53  
Petit astucien


27 Messages

Salut Galopin,

en fait la macro que tu m'as donnés me donne exactement le même résultat qu'auparavant...

Je ne souhaite pas de sauvegarde automatique, je veux inviter l'utilisateur a enregistrer le fichier la ou il le souhaite.

Justement je sais comment avoir la mise en forme une fois le fichier ouvert dans Excel ou Wordpad.

Mais je dois l'importer dans un autre logiciel que tu ne connais pas et il faux que le formatage sois fait pour que le fichier puisse être importé.

D'ou la raison de ma question...

Selon toi ce n'est pas possible de formater le texte pendant l'enregistrement? tu vois ce que je veux dire?

De facon à bien avoir une mise en forme qui ressemble à ca:

Mon ami Galopin

Amicalement,

Julien

Afficher le profil de julpEnvoyer un message privé à julp
 Revenir en haut de la page
 galopin01  Posté le 25/07/2007 à 12:21  
Astucien

4312 Messages

Bonjour,

Chez moi (Excel 2003), quand je quitte (manuellement) le fichier ainsi enregistré, j'ai une question supplémentaire : Voulez vous sauvegarder les modifications Oui / Non / Annuler ? Si je répond Oui, lors de la prochaine ouverture j'ai automatiquement une mise en forme en colonne. Dans tous les autres cas on abouti à une mise en forme en ligne...

A+

Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 julp  Posté le 27/07/2007 à 11:06  
Petit astucien


27 Messages

Salut Galopin,

Moi j'aimerais que l'utilisateur n'intervienne que pour la sauvegarde car après le fichier n'est plus utilisé par excel.

Quand j'enregistre automatiquement:

ActiveWorkbook.SaveAs Filename:="C:\diplomarbeit2007\meldungen\meldungen\test32.csv", _
FileFormat:=xlCSV, CreateBackup:=False, Local:=True

Cela fonctionne!

Quand j'invite l'utilisateur à enregistrer,

With Application

xFileName = "meld_import_pcs7"
.Dialogs(xlDialogSaveAs).Show (xFileName), xlCSV

End With

cela ne marche pas!

Il faudrait rajouter qqch non pour choisir le délimiteur?

Ou bien écrire CreateBackup:=False, Local:=True dans le cadre de With Application, et comment la est la question ^^

Amicalement

Julien

Afficher le profil de julpEnvoyer un message privé à julp
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsBureautique

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page