Enregistrer sous bloc note ouvert par vba

kyasteph

XLDnaute Occasionnel
Bonjour,

Apres avoir longtemps cherché sur le forum,j'ai trouvé un code qui fait exactement ce que je veux:il copie une plage excel et le colle exactement dans un fichier texte.Jusque là pas de probleme.
Mais je souhaite pouvoir fermer automatiquement le fichier bloc note ouvert en l'enregistrant sous un nom bien précis exemple "toto" et à un emplacement précis par exemple sur le bureau .

Voici le code :
Code:
Sub Test()
 Range("A1:A2").Select
    Selection.Copy
Dim RetVal
RetVal = Shell("notepad.exe", 3)
SendKeys ("^v"), True
SendKeys ("%{tab}"), True
End Sub
ci joint un fichier pour mieux me faire comprendre.

Merci de m'aider s'il vous plait.

PS:Apres un long moment d'absence me voici de retour sur le forum; veuillez m'excuser j'ai une discussion non terminée je reviendrai tres bientot avec toutes les autres informations nécessaires;merci.
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Re : Enregistrer sous bloc note ouvert par vba

Bonsoir.

Pourquoi diable passer par le Bloc-Note dans ce cas ?
VB:
Sub Test()
Dim Cel As Range
Open ThisWorkbook.Path & "\Toto.Txt" For Output Access Write As #1
For Each Cel In Range("A1:A2")
   Print #1, CStr(Cel.Value): Next Cel
Close #1
End Sub
 

kyasteph

XLDnaute Occasionnel
Re : Enregistrer sous bloc note ouvert par vba

Bonsoir,
Merci pour votre réponse mais cela ne résoud pas mon probleme car les données du bloc note créé ne s'affiche pas comme celles de la source excel.
Comme je l'ai dis plus haut,le bloc note créé par mon code fait exactement ce que je veux (les données sont alignées comme dans le fichier source excel.
En effet apres j'ai un code qui me permet de les importer et cela marche.
Il me faut donc le bout de code pour enregistrer le fichier texte ainsi créé.

Merci de m'aider s'il vous plait
 

Staple1600

XLDnaute Barbatruc
Re : Enregistrer sous bloc note ouvert par vba

Bonsoir à tous

Même interrogation que Dranreb
Pourquoi passer par le bloc-notes?

Car j'ai testé ton code et celui-ci
Code:
Sub a()
Worksheets(1).Copy
With ActiveWorkbook.Sheets(1)
.SaveAs "C:\Temp\xls2txt.txt", xlTextMSDOS
.Parent.Close False
End With
End Sub
Avec en A1: TEXTE1 et en A2 TEXTE2
et le résultat si on ouvre les deux fichiers texte dans le bloc-notes sont identiques, non ?
(en tout cas, c'est la cas sur mon pc)
 

Dranreb

XLDnaute Barbatruc
Re : Enregistrer sous bloc note ouvert par vba

Alors essayez comme ça:
VB:
Sub Test2()
TxtPlage "Toto.txt", [A1:B2]
End Sub
Sub TxtPlage(ByVal RéfFic As String, ByVal Plg As Range)
Dim Te(), Ts() As String, L&, C&
Te = Plg.Value: ReDim Ts(1 To UBound(Te, 2))
Open RéfFic For Output Access Write As #1
For L = 1 To UBound(Te, 1)
   For C = 1 To UBound(Te, 2): Ts(C) = Te(L, C): Next C
   Print #1, Join(Ts, vbTab): Next L
Close #1
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Enregistrer sous bloc note ouvert par vba

Re


Dranreb
C'est A1:A2* ou A1:B2 ?

Et que pensez-vous de ma proposition dans mon message précédent ?

(*Dans le premier message de kyasteph, on lit A1:A2)
 

Dranreb

XLDnaute Barbatruc
Re : Enregistrer sous bloc note ouvert par vba

Oui c'est vrai Stapple. Des cellules dans une seule colonne ça ne devrait pas poser de mystérieux problème d'alignement évoqué au #3, c'est seulement s'il y a plusieurs colonnes.
 

Staple1600

XLDnaute Barbatruc
Re : Enregistrer sous bloc note ouvert par vba

Re


Même avec plusieurs colonnes, pas de problème d'alignement avec le code du message #4
(testé avec cette formule en A1 recopiée vers la droite 17 fois et vers le bas 21 fois
=CAR(64+COLONNE())&COLONNE()*LIGNE()

Le fichier texte généré sépare bien chaque colonne et contient bien les valeurs que renvoyaient les formules.
 

kyasteph

XLDnaute Occasionnel
Re : Enregistrer sous bloc note ouvert par vba

Bonsoir à tous
Merci pour l'interet que vous portez à mon probleme.Le code proposé par Dranreb me satisfait fort bien.
En effet je l'ai testé avec plusieurs colonnes ( 9 par exemple) et cela marche.
je peux ainsi importer les données du fichier texte dans des plages excel à souhait.

Merci encore vous etes formidables;
Longue vie au forum
 

kyasteph

XLDnaute Occasionnel
Re : Enregistrer sous bloc note ouvert par vba

Bonsoir,
Merci Dranreb,mais pourrait tu commenté le code car ça marche certes mais je souhaiterais comprendre.
Aussi comment enregistrer le fichier texte à un emplacement précis sur le bureau par exemple car le fichier se loge dans les "documents".

Merci de m'aider s'il vous plait
 

Dranreb

XLDnaute Barbatruc
Re : Enregistrer sous bloc note ouvert par vba

Fournir en 1er argument à la procédure TxtPlage la référence complète du fichier à créer ou alors faire préalablement un ChDrive de l'unité puis un ChDir du dossier sur cette unité.
VB:
Sub TxtPlage(ByVal RéfFic As String, ByVal Plg As Range)
Dim Te(), Ts() As String, L&, C&
Te = Plg.Value ' Charge les valeurs de la plage dans le tableau d'entrée.
ReDim Ts(1 To UBound(Te, 2)) ' Dimensionne ce tableau au nombre de colonnes
Open RéfFic For Output Access Write As #1 ' Ouverture fichier texte
For L = 1 To UBound(Te, 1) ' Pour chaque ligne :
   For C = 1 To UBound(Te, 2): Ts(C) = Te(L, C): Next C ' L'inscrit dans le tableau de travail
   Print #1, Join(Ts, vbTab): Next L ' En écrit les éléments reliés par des tabulations
Close #1 ' Ferme le fichier.
End Sub
 

kyasteph

XLDnaute Occasionnel
Re : Enregistrer sous bloc note ouvert par vba

Bonsoir
Mille fois merci encore,je comprends grace à tes commentaires Dranreb;et je peux maintenant placé mon fichier texte créé ou je veux.
Bon week end
Longue vie au forum
 

Staple1600

XLDnaute Barbatruc
Re : Enregistrer sous bloc note ouvert par vba

Bonjour à tous


kyasteph
Tu peux expliquer pourquoi tu n'as pas pris le temps (et la courtoisie) de tester ma macro ?
Il est toujours très sympathique de proposer son aide sur le forum et de voir celle-ci totalement ignorée par le demandeur...:rolleyes:

[note à moi-même et pour plus tard]
Bien choisir les questions avant d'y répondre...
[/note à moi-même et pour plus tard]
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Enregistrer sous bloc note ouvert par vba

Bonjour Stapple1600.
Puis je me risquer (à la place du demandeur) peut être à y objecter que ta solution, une fois adaptée à le faire pour une plage extraite de n'importe où dans une feuille, passe par un nouveau classeur temporaire, qui, techniquement, est un support pratiquement aussi lourd qu'une page de Bloc-note ?…
 

Staple1600

XLDnaute Barbatruc
Re : Enregistrer sous bloc note ouvert par vba

Bonjour Dranreb

[aparté]
Il n'est pas question pour moi de savoir si telle ou telle solution de tel ou tel contributeur est plus ou moins ceci ou plus ou moins cela.
Je parlais simplement de courtoisie ;)
Courtoisie de saluer, lire, tester tous les participants d'un fil.
[/aparté]

PS: Je précise que j'ai testé tes codes.
Simplement n'étant pas l'initiateur du fil, je ne l'ai pas commenté.
Et il va de soi, qu'à l'usage, c'est ton code que je choisirai mais là n'était pas le sujet ;) de mon précédent message.
 
Dernière édition:

kyasteph

XLDnaute Occasionnel
Re : Enregistrer sous bloc note ouvert par vba

Bonjour Stapple1600
Je vous présente toutes mes excuses si vous avez eu l'impression que je n'ai pas testé votre code.
En effet je l'ai testé (code proposé au #4) en meme temps que celui de Dranreb avec plusieurs colonnes.
Le votre me donnait un message d'erreur (à ce niveau: .SaveAs "C:\Temp\xls2txt.txt", xlTextMSDOS).
Peut etre que je n'ai pas su l'adapter,mais bon comme le code de Dranreb rendait bien ce que je voulais ;je ne suis pas revenu sur le votre.(je n'ai plus tenu compte de la proposition au #8)
Une fois de plus toutes mes excuses,mais rassurez vous je l'ai testé.

Merci pour votre comprehension.
 

Staple1600

XLDnaute Barbatruc
Re : Enregistrer sous bloc note ouvert par vba

Bonsoir kyasteph

Merci pour cet éclaircissement ;)

Sinon pour l'erreur, c'est sans doute parce qu'il n'existe pas de répertoire C:\Temp sur ton disque dur
Il faut donc adapter avec le chemin et le nom d'un dossier existant.

Mais comme nous l'avons tout deux mentionnés, c'est le code de Dranreb que nous retiendrons à l'usage ;)
 

kyasteph

XLDnaute Occasionnel
Re : Enregistrer sous bloc note ouvert par vba

Bonjour Stapple1600.
Je vous présente toutes mes excuses si vous avez eu l'impression que je n'ai pas testé votre code.
En effet je l'ai testé (code proposé au #4) en meme temps que celui de Dranreb.
Le votre me présentait une erreur (à ce niveau :.SaveAs "C:\Temp\xls2txt.txt", xlTextMSDOS) et créait un nouveau classeur.;et comme le code de Dranreb résolvait mon probleme,je ne suis plus revenu sur le votre et n'ai plus tenu compte de la solution au poste #8.
Encore une fois toutes mes excuses,rassurez vous je l'ai testé.

Merci pour votre compréhension.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas