|
| 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
|
| |
| |
| 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+ |
| |
|
| 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+ |
| |
|
| 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 |
| |
|
| 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+ |
| |
|
| 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 |
| |
|
| 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+ |
| |
|
| 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 |
| |
|
|
| Haut de la page |