Bonjour,
J'ai parcouru les news =E0 la recherche d'une solution simple et je ne
suis pas tomb=E9 dessus.
Mon besoin est le suivant :
Parcours d'une plage de cellules :
FOR i=3D1 To 500
WITH Worksheets(1)
vValeur=3D.Cells(i,1).Value
'Ecriture dans fichier plat
Open "C:\TEST.txt" FOR Append AS #1
PRINT #1 vValeur; .Cells(i,2).Value;
Close #1
END WITH
NEXT i
Le but est le suivant :
1. Parcours d'une plage de 500 lignes
2. Si cellule est non vide =A6 =E9criture dans fichier plat d'une cellule,
puis d'une autre cellule. Le tout s=E9par=E9 par des points virgules
Probl=E8me :
Quelles instructions utiliser pour =E9crire dans un fichier plat la
suite des valeurs souhait=E9es (vColonne1;vColonne2;vColonne3) ?
Comment faire un retour chariot afin d'indiquer que cela concerne une
nouvelle ligne et non la suite ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel.C
Bonjour. Tu n'écris que la première cellule de chaque ligne, donc pas besoin de séparateur ?
With Worksheets(1) Open "e:donneesdanielmpferesultp.txt" For Append As #1 For i = 1 To 500 If .Cells(i, 1).Value <> "" Then vValeur = .Cells(i, 1).Value 'Ecriture dans fichier plat Print #1, vValeur End If Next i Close #1 End With
Cordialement. Daniel "jask" a écrit dans le message de news:
Bonjour, J'ai parcouru les news à la recherche d'une solution simple et je ne suis pas tombé dessus. Mon besoin est le suivant :
Parcours d'une plage de cellules : FOR i=1 To 500 WITH Worksheets(1) vValeur=.Cells(i,1).Value 'Ecriture dans fichier plat Open "C:TEST.txt" FOR Append AS #1 PRINT #1 vValeur; .Cells(i,2).Value; Close #1 END WITH NEXT i
Le but est le suivant : 1. Parcours d'une plage de 500 lignes 2. Si cellule est non vide ¦ écriture dans fichier plat d'une cellule, puis d'une autre cellule. Le tout séparé par des points virgules
Problème : Quelles instructions utiliser pour écrire dans un fichier plat la suite des valeurs souhaitées (vColonne1;vColonne2;vColonne3) ? Comment faire un retour chariot afin d'indiquer que cela concerne une nouvelle ligne et non la suite ?
Merci beaucoup de votre aide jask
Bonjour.
Tu n'écris que la première cellule de chaque ligne, donc pas besoin de
séparateur ?
With Worksheets(1)
Open "e:donneesdanielmpferesultp.txt" For Append As #1
For i = 1 To 500
If .Cells(i, 1).Value <> "" Then
vValeur = .Cells(i, 1).Value
'Ecriture dans fichier plat
Print #1, vValeur
End If
Next i
Close #1
End With
Cordialement.
Daniel
"jask" <loic.newsletter@bluewin.ch> a écrit dans le message de news:
f88daa58-3310-455f-a239-979b9037a9e3@m3g2000hsc.googlegroups.com...
Bonjour,
J'ai parcouru les news à la recherche d'une solution simple et je ne
suis pas tombé dessus.
Mon besoin est le suivant :
Parcours d'une plage de cellules :
FOR i=1 To 500
WITH Worksheets(1)
vValeur=.Cells(i,1).Value
'Ecriture dans fichier plat
Open "C:TEST.txt" FOR Append AS #1
PRINT #1 vValeur; .Cells(i,2).Value;
Close #1
END WITH
NEXT i
Le but est le suivant :
1. Parcours d'une plage de 500 lignes
2. Si cellule est non vide ¦ écriture dans fichier plat d'une cellule,
puis d'une autre cellule. Le tout séparé par des points virgules
Problème :
Quelles instructions utiliser pour écrire dans un fichier plat la
suite des valeurs souhaitées (vColonne1;vColonne2;vColonne3) ?
Comment faire un retour chariot afin d'indiquer que cela concerne une
nouvelle ligne et non la suite ?
Bonjour. Tu n'écris que la première cellule de chaque ligne, donc pas besoin de séparateur ?
With Worksheets(1) Open "e:donneesdanielmpferesultp.txt" For Append As #1 For i = 1 To 500 If .Cells(i, 1).Value <> "" Then vValeur = .Cells(i, 1).Value 'Ecriture dans fichier plat Print #1, vValeur End If Next i Close #1 End With
Cordialement. Daniel "jask" a écrit dans le message de news:
Bonjour, J'ai parcouru les news à la recherche d'une solution simple et je ne suis pas tombé dessus. Mon besoin est le suivant :
Parcours d'une plage de cellules : FOR i=1 To 500 WITH Worksheets(1) vValeur=.Cells(i,1).Value 'Ecriture dans fichier plat Open "C:TEST.txt" FOR Append AS #1 PRINT #1 vValeur; .Cells(i,2).Value; Close #1 END WITH NEXT i
Le but est le suivant : 1. Parcours d'une plage de 500 lignes 2. Si cellule est non vide ¦ écriture dans fichier plat d'une cellule, puis d'une autre cellule. Le tout séparé par des points virgules
Problème : Quelles instructions utiliser pour écrire dans un fichier plat la suite des valeurs souhaitées (vColonne1;vColonne2;vColonne3) ? Comment faire un retour chariot afin d'indiquer que cela concerne une nouvelle ligne et non la suite ?
Merci beaucoup de votre aide jask
PMO
Bonjour,
Une piste avec le code ci-dessous.
Sélectionnez la plage à traiter avant de lancer la macro "EcrireFichierPlat"
'************* Sub EcrireFichierPlat() Dim var Dim T$() Dim i& Dim j& Dim k& Dim A$ Dim canal& If TypeName(Selection) <> "Range" Then MsgBox "La sélection ne correspond pas à une plage" Exit Sub End If If Selection.Rows.Count = 1 And _ Selection.Columns.Count = 1 Then MsgBox "La sélection ne contient qu'une seule cellule" Exit Sub End If var = Selection For i& = 1 To UBound(var, 1) A$ = "" For j& = 1 To UBound(var, 2) If var(i&, j&) <> "" Then A$ = A$ & var(i&, j&) & ";" Next j& If A$ <> "" Then k& = k& + 1 ReDim Preserve T$(1 To k&) T$(k&) = Mid(A$, 1, Len(A$) - 1) End If Next i& If k& = 0 Then MsgBox "La sélection ne contient aucune donnée" Exit Sub End If canal& = FreeFile Open "C:TEST.txt" For Append As #canal& For i& = 1 To UBound(T$) Print #canal&, T$(i&) Next i& Close #1 End Sub '*************
Cordialement.
PMO Patrick Morange
Bonjour,
Une piste avec le code ci-dessous.
Sélectionnez la plage à traiter avant de lancer
la macro "EcrireFichierPlat"
'*************
Sub EcrireFichierPlat()
Dim var
Dim T$()
Dim i&
Dim j&
Dim k&
Dim A$
Dim canal&
If TypeName(Selection) <> "Range" Then
MsgBox "La sélection ne correspond pas à une plage"
Exit Sub
End If
If Selection.Rows.Count = 1 And _
Selection.Columns.Count = 1 Then
MsgBox "La sélection ne contient qu'une seule cellule"
Exit Sub
End If
var = Selection
For i& = 1 To UBound(var, 1)
A$ = ""
For j& = 1 To UBound(var, 2)
If var(i&, j&) <> "" Then A$ = A$ & var(i&, j&) & ";"
Next j&
If A$ <> "" Then
k& = k& + 1
ReDim Preserve T$(1 To k&)
T$(k&) = Mid(A$, 1, Len(A$) - 1)
End If
Next i&
If k& = 0 Then
MsgBox "La sélection ne contient aucune donnée"
Exit Sub
End If
canal& = FreeFile
Open "C:TEST.txt" For Append As #canal&
For i& = 1 To UBound(T$)
Print #canal&, T$(i&)
Next i&
Close #1
End Sub
'*************
Sélectionnez la plage à traiter avant de lancer la macro "EcrireFichierPlat"
'************* Sub EcrireFichierPlat() Dim var Dim T$() Dim i& Dim j& Dim k& Dim A$ Dim canal& If TypeName(Selection) <> "Range" Then MsgBox "La sélection ne correspond pas à une plage" Exit Sub End If If Selection.Rows.Count = 1 And _ Selection.Columns.Count = 1 Then MsgBox "La sélection ne contient qu'une seule cellule" Exit Sub End If var = Selection For i& = 1 To UBound(var, 1) A$ = "" For j& = 1 To UBound(var, 2) If var(i&, j&) <> "" Then A$ = A$ & var(i&, j&) & ";" Next j& If A$ <> "" Then k& = k& + 1 ReDim Preserve T$(1 To k&) T$(k&) = Mid(A$, 1, Len(A$) - 1) End If Next i& If k& = 0 Then MsgBox "La sélection ne contient aucune donnée" Exit Sub End If canal& = FreeFile Open "C:TEST.txt" For Append As #canal& For i& = 1 To UBound(T$) Print #canal&, T$(i&) Next i& Close #1 End Sub '*************