Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Transfert de xls vers txt

5 réponses
Avatar
EliotNaiss
Bonjour à toutes et tous.
A partir d'un classeur excel, par vba, je désire :
1. créer un nouveau fichier texte (wordpad)
2. écrire une phrase du genre "Liste des personnels"
3. puis transférer le contenu d'une plage de cellules en gardant la forme de
tableau; peut-être en séparant les colonnes par un séparateur tiret (?)

Question : comment piloter Wordpad à partir d'Excel ?
PS : cela serait l'idéal de créer un nouveau fichier .txt (nommé
MonTest.txt) et de le "remplir" de manière invisible (sans ouvrir le
fichier). Je demande peut-être l'impossible ??
Mais je connais la compétence de certains/certaines !!

Merci par avance de l'aide et du temps accordé.
Cordialement

Eliot

5 réponses

Avatar
MichDenis
Un petit exemple :

'--------------------------------
Dim C As Variant
Dim fFilename As String
Dim a As Integer, b As Integer
Dim tmP As String

'La plage à copier
With Worksheets("Feuil1")
C = .Range("A1:b10")
End With

'Lieu et création du fichier texte
fFilename = "c:MonTest.txt"

'Ouverture du fichier texte
Open fFilename For Output As #1

For a = 1 To UBound(C, 1)
tmP = ""
For b = 1 To UBound(C, 2)
If tmP > "" Then
tmP = tmP & Chr(45) & C(a, b)
Else
tmP = C(a, b)
End If
Next
Print #1, tmP
Next
Close #1
End Sub
'--------------------------------



"EliotNaiss" a écrit dans le message de news:

Bonjour à toutes et tous.
A partir d'un classeur excel, par vba, je désire :
1. créer un nouveau fichier texte (wordpad)
2. écrire une phrase du genre "Liste des personnels"
3. puis transférer le contenu d'une plage de cellules en gardant la forme de
tableau; peut-être en séparant les colonnes par un séparateur tiret (?)

Question : comment piloter Wordpad à partir d'Excel ?
PS : cela serait l'idéal de créer un nouveau fichier .txt (nommé
MonTest.txt) et de le "remplir" de manière invisible (sans ouvrir le
fichier). Je demande peut-être l'impossible ??
Mais je connais la compétence de certains/certaines !!

Merci par avance de l'aide et du temps accordé.
Cordialement

Eliot
Avatar
EliotNaiss
Bonjour et merci Michdenis.
J'apprécie la rapidité de réponse et surtout l'efficacité !
Je n'ai plus qu'à eplucher le code, en tout cas le peu que j'ai "modifié"
m'a sérieusement aidé !
Encore merci
Cordialement
Eliot
"MichDenis" a écrit dans le message de news:
uTJ%
Un petit exemple :

'--------------------------------
Dim C As Variant
Dim fFilename As String
Dim a As Integer, b As Integer
Dim tmP As String

'La plage à copier
With Worksheets("Feuil1")
C = .Range("A1:b10")
End With

'Lieu et création du fichier texte
fFilename = "c:MonTest.txt"

'Ouverture du fichier texte
Open fFilename For Output As #1

For a = 1 To UBound(C, 1)
tmP = ""
For b = 1 To UBound(C, 2)
If tmP > "" Then
tmP = tmP & Chr(45) & C(a, b)
Else
tmP = C(a, b)
End If
Next
Print #1, tmP
Next
Close #1
End Sub
'--------------------------------



"EliotNaiss" a écrit dans le message de news:

Bonjour à toutes et tous.
A partir d'un classeur excel, par vba, je désire :
1. créer un nouveau fichier texte (wordpad)
2. écrire une phrase du genre "Liste des personnels"
3. puis transférer le contenu d'une plage de cellules en gardant la forme
de
tableau; peut-être en séparant les colonnes par un séparateur tiret (?)

Question : comment piloter Wordpad à partir d'Excel ?
PS : cela serait l'idéal de créer un nouveau fichier .txt (nommé
MonTest.txt) et de le "remplir" de manière invisible (sans ouvrir le
fichier). Je demande peut-être l'impossible ??
Mais je connais la compétence de certains/certaines !!

Merci par avance de l'aide et du temps accordé.
Cordialement

Eliot





Avatar
EliotNaiss
Une petite question,
comment modifier le libellé de : fFilename = "c:MonTest.txt"
pour que ce fichier soit créé dans le dossier mes documents de l'utilisateur
connecté ? (au lieu de c:)
merci
"EliotNaiss" a écrit dans le message de news:

Bonjour et merci Michdenis.
J'apprécie la rapidité de réponse et surtout l'efficacité !
Je n'ai plus qu'à eplucher le code, en tout cas le peu que j'ai "modifié"
m'a sérieusement aidé !
Encore merci
Cordialement
Eliot
"MichDenis" a écrit dans le message de news:
uTJ%
Un petit exemple :

'--------------------------------
Dim C As Variant
Dim fFilename As String
Dim a As Integer, b As Integer
Dim tmP As String

'La plage à copier
With Worksheets("Feuil1")
C = .Range("A1:b10")
End With

'Lieu et création du fichier texte
fFilename = "c:MonTest.txt"

'Ouverture du fichier texte
Open fFilename For Output As #1

For a = 1 To UBound(C, 1)
tmP = ""
For b = 1 To UBound(C, 2)
If tmP > "" Then
tmP = tmP & Chr(45) & C(a, b)
Else
tmP = C(a, b)
End If
Next
Print #1, tmP
Next
Close #1
End Sub
'--------------------------------



"EliotNaiss" a écrit dans le message de news:

Bonjour à toutes et tous.
A partir d'un classeur excel, par vba, je désire :
1. créer un nouveau fichier texte (wordpad)
2. écrire une phrase du genre "Liste des personnels"
3. puis transférer le contenu d'une plage de cellules en gardant la forme
de
tableau; peut-être en séparant les colonnes par un séparateur tiret (?)

Question : comment piloter Wordpad à partir d'Excel ?
PS : cela serait l'idéal de créer un nouveau fichier .txt (nommé
MonTest.txt) et de le "remplir" de manière invisible (sans ouvrir le
fichier). Je demande peut-être l'impossible ??
Mais je connais la compétence de certains/certaines !!

Merci par avance de l'aide et du temps accordé.
Cordialement

Eliot









Avatar
MichDenis
'Déclaration des API et Constantes dans le haut d'un module Standard
'-----------------------
Public Const NOERROR = 0
Public Const MAXPATH = 260
Public Const FldrMyDocuments = &H5

Public Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As Long) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32" _
(ByVal pidList As Long, ByVal lpBuffer As String) As Long
'-----------------------
Public Function GetSpecialFolder(CSIDL As Long) As String
Dim Result As Long
Dim sPath As String
Dim pidl As Long
Result = SHGetSpecialFolderLocation(0, CSIDL, pidl)
If Result = NOERROR Then
sPath = Space(MAXPATH)
Result = SHGetPathFromIDList(ByVal pidl, ByVal sPath)
If Result Then
GetSpecialFolder = Left(sPath, InStr(sPath, Chr(0)) - 1)
End If
End If
End Function
'-----------------------

Sub CopierRangeVersTxt()
Dim C As Variant
Dim fFilename As String
Dim a As Integer, b As Integer
Dim tmP As String

'La plage à copier
With Worksheets("Feuil1")
C = .Range("A1:b10")
End With

'Lieu et création du fichier texte
fFilename = GetSpecialFolder(FldrMyDocuments) & "MonTest.txt"

'Ouverture du fichier texte
Open fFilename For Output As #1

For a = 1 To UBound(C, 1)
tmP = ""
For b = 1 To UBound(C, 2)
If tmP > "" Then
tmP = tmP & Chr(45) & C(a, b)
Else
tmP = C(a, b)
End If
Next
Print #1, tmP
Next
Close #1
End Sub
'--------------------------------




"EliotNaiss" a écrit dans le message de news:

Une petite question,
comment modifier le libellé de : fFilename = "c:MonTest.txt"
pour que ce fichier soit créé dans le dossier mes documents de l'utilisateur
connecté ? (au lieu de c:)
merci
"EliotNaiss" a écrit dans le message de news:

Bonjour et merci Michdenis.
J'apprécie la rapidité de réponse et surtout l'efficacité !
Je n'ai plus qu'à eplucher le code, en tout cas le peu que j'ai "modifié"
m'a sérieusement aidé !
Encore merci
Cordialement
Eliot
"MichDenis" a écrit dans le message de news:
uTJ%
Un petit exemple :

'--------------------------------
Dim C As Variant
Dim fFilename As String
Dim a As Integer, b As Integer
Dim tmP As String

'La plage à copier
With Worksheets("Feuil1")
C = .Range("A1:b10")
End With

'Lieu et création du fichier texte
fFilename = "c:MonTest.txt"

'Ouverture du fichier texte
Open fFilename For Output As #1

For a = 1 To UBound(C, 1)
tmP = ""
For b = 1 To UBound(C, 2)
If tmP > "" Then
tmP = tmP & Chr(45) & C(a, b)
Else
tmP = C(a, b)
End If
Next
Print #1, tmP
Next
Close #1
End Sub
'--------------------------------



"EliotNaiss" a écrit dans le message de news:

Bonjour à toutes et tous.
A partir d'un classeur excel, par vba, je désire :
1. créer un nouveau fichier texte (wordpad)
2. écrire une phrase du genre "Liste des personnels"
3. puis transférer le contenu d'une plage de cellules en gardant la forme
de
tableau; peut-être en séparant les colonnes par un séparateur tiret (?)

Question : comment piloter Wordpad à partir d'Excel ?
PS : cela serait l'idéal de créer un nouveau fichier .txt (nommé
MonTest.txt) et de le "remplir" de manière invisible (sans ouvrir le
fichier). Je demande peut-être l'impossible ??
Mais je connais la compétence de certains/certaines !!

Merci par avance de l'aide et du temps accordé.
Cordialement

Eliot









Avatar
EliotNaiss
Ahh, tout cà !
c 'est bien, merci bcp !
bonne continuation.
Cordialement
Eliot

"MichDenis" a écrit dans le message de news:

'Déclaration des API et Constantes dans le haut d'un module Standard
'-----------------------
Public Const NOERROR = 0
Public Const MAXPATH = 260
Public Const FldrMyDocuments = &H5

Public Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As Long) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32" _
(ByVal pidList As Long, ByVal lpBuffer As String) As Long
'-----------------------
Public Function GetSpecialFolder(CSIDL As Long) As String
Dim Result As Long
Dim sPath As String
Dim pidl As Long
Result = SHGetSpecialFolderLocation(0, CSIDL, pidl)
If Result = NOERROR Then
sPath = Space(MAXPATH)
Result = SHGetPathFromIDList(ByVal pidl, ByVal sPath)
If Result Then
GetSpecialFolder = Left(sPath, InStr(sPath, Chr(0)) - 1)
End If
End If
End Function
'-----------------------

Sub CopierRangeVersTxt()
Dim C As Variant
Dim fFilename As String
Dim a As Integer, b As Integer
Dim tmP As String

'La plage à copier
With Worksheets("Feuil1")
C = .Range("A1:b10")
End With

'Lieu et création du fichier texte
fFilename = GetSpecialFolder(FldrMyDocuments) & "MonTest.txt"

'Ouverture du fichier texte
Open fFilename For Output As #1

For a = 1 To UBound(C, 1)
tmP = ""
For b = 1 To UBound(C, 2)
If tmP > "" Then
tmP = tmP & Chr(45) & C(a, b)
Else
tmP = C(a, b)
End If
Next
Print #1, tmP
Next
Close #1
End Sub
'--------------------------------




"EliotNaiss" a écrit dans le message de news:

Une petite question,
comment modifier le libellé de : fFilename = "c:MonTest.txt"
pour que ce fichier soit créé dans le dossier mes documents de
l'utilisateur
connecté ? (au lieu de c:)
merci
"EliotNaiss" a écrit dans le message de news:

Bonjour et merci Michdenis.
J'apprécie la rapidité de réponse et surtout l'efficacité !
Je n'ai plus qu'à eplucher le code, en tout cas le peu que j'ai "modifié"
m'a sérieusement aidé !
Encore merci
Cordialement
Eliot
"MichDenis" a écrit dans le message de news:
uTJ%
Un petit exemple :

'--------------------------------
Dim C As Variant
Dim fFilename As String
Dim a As Integer, b As Integer
Dim tmP As String

'La plage à copier
With Worksheets("Feuil1")
C = .Range("A1:b10")
End With

'Lieu et création du fichier texte
fFilename = "c:MonTest.txt"

'Ouverture du fichier texte
Open fFilename For Output As #1

For a = 1 To UBound(C, 1)
tmP = ""
For b = 1 To UBound(C, 2)
If tmP > "" Then
tmP = tmP & Chr(45) & C(a, b)
Else
tmP = C(a, b)
End If
Next
Print #1, tmP
Next
Close #1
End Sub
'--------------------------------



"EliotNaiss" a écrit dans le message de news:

Bonjour à toutes et tous.
A partir d'un classeur excel, par vba, je désire :
1. créer un nouveau fichier texte (wordpad)
2. écrire une phrase du genre "Liste des personnels"
3. puis transférer le contenu d'une plage de cellules en gardant la
forme
de
tableau; peut-être en séparant les colonnes par un séparateur tiret (?)

Question : comment piloter Wordpad à partir d'Excel ?
PS : cela serait l'idéal de créer un nouveau fichier .txt (nommé
MonTest.txt) et de le "remplir" de manière invisible (sans ouvrir le
fichier). Je demande peut-être l'impossible ??
Mais je connais la compétence de certains/certaines !!

Merci par avance de l'aide et du temps accordé.
Cordialement

Eliot