transfert données Excel vers txt - VB/VBA/VBS - Programmation
Marsh Posté le 27-11-2008 à 14:58:10
Si tu enregistres une macro à la main ? il t'indique quoi ?
(arf, il doit pas te faire le vrai copier coller)
Que dit l'aide sur "copy/paste" ?
Marsh Posté le 09-12-2008 à 15:55:44
Bonjour
Ca ne marche pas comme ca, tu ne peux affecter a une variable, le resultat d'un Sendkeys, qui plus est le 'collé'.
Il faut passer par une étape intermediaire, comme par exemple creer un nouveau fichier, coller ce que tu veux dedans et exporter ce dit fichier en txt/csv, ou une nouvelle feuille et exporter la feuille en txt/csv. Ou comme dans ton exemple, si tu n'as qu'une cellule, affecter à ta variable 't' la valeur de la cellule au lieu du SendKeys :
t = ActiveSheet.Range("K2" ).value
Cordialement
Marsh Posté le 09-12-2008 à 15:59:52
pour compléter ce que que dit dje... en fait, ça serait bien de dire ce que tu veux précisément "enregistrer" dans ton fichier...
Ensuite, en effet, le plus "simple" reste la création d'un nouveau fichier, et tu y ajoutes tout dedans...
Tu dois aussi pouvoir "écrire" ton fichier en ajoutant ton texte petit à petit (mais bon, là pour le coup, Excel ne va plus servir à grand chose)
EN résumé
1. création d'un nouveau classeur
2. recopiage des données dans ce classeur Excel
3. méthode saveas sur ce nouveau classeur avec les options qui t'intéressent, csv, etc...
4. fermeture/suppression de ce classeur "Excel" (vu que c'est juste le csv qui t'intéresse toi)
Marsh Posté le 27-11-2008 à 14:56:10
Bonjour,
J'ai un souci sur l'ecriture d'un petit code VB me permettant de faire un transfert de quelques données de Excel vers un fichier TXT.
voici le code:
Sub Générer_PAT()
'
' Générer_PAT Macro
'
' Touche de raccourci du clavier: Ctrl+Maj+M
' ' Declaration variables
Dim FileName, t As Integer
'Selection de la zone à copier
ActiveSheet.Range("K2" ).CurrentRegion.Select
Selection.Copy
' Demande fichier de sauvegarde
FileName = Application.GetSaveAsFilename(Nom_Fichier, "Text Files (*.txt), *.txt" )
' Ouverture fichier
Open FileName For Output As #1
t = Sendkeys "^v"
' Ecriture de la ligne dans le fichier si non vide
Print #1, t
' Fermeture fichier
Close #1
End Sub
Le retour de ce code ne fonctionne par car il m'indique à chaque fois qu'il ne reconnait pas la formule t = sendkeys "^v", c'est à dire le collage du presse papier !!! je ne suis pas expert alors si vous pouviez m'aider je vous en remercie.