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

Export depuis Excel dans un fichier texte

9 réponses
Avatar
Steph
Bonjour,

Depuis un fichier Excel je crée un fichier texte en vue d'une importation
dans un autre logiciel et j'ai besoin que lorque la valeur de la 29 ème
colonne est égale à "toto" les 5 colonnes suivantes ne soient pas prises en
compte. Ne serait alors exporté pour la ligne où toto apparaît aue les
colonnes 1 à 28 et 34 à 59 mais je ne sais comment le spécifier.

Merci de votre aide

Steph


DestFile = "C:\" & monfichier & ".txt"
f = FreeFile
Open DestFile For Append As #f
With Range("A1").Select

macolonne = Range("A1").CurrentRegion.Rows.Count

For r = 1 To macolonne
For c = 1 To 59

valeur = Cells.Item(r, 28)

If valeur = "toto" Then

??? Print #f, Cells(r, c + 5).Text

Else

Print #f, Cells(r, c).Text

End If

Next c
Next r

9 réponses

Avatar
MichDenis
Bonjour Steph,

| que lorque la valeur de la 29 ème colonne est égale à "toto"

Tu veux bien spécifier ce que cela veut dire ? Toto est dans quelle cellule ? N'importe où sur la 29 lignes ?


Salutations!






"Steph" a écrit dans le message de news:
Bonjour,

Depuis un fichier Excel je crée un fichier texte en vue d'une importation
dans un autre logiciel et j'ai besoin que lorque la valeur de la 29 ème
colonne est égale à "toto" les 5 colonnes suivantes ne soient pas prises en
compte. Ne serait alors exporté pour la ligne où toto apparaît aue les
colonnes 1 à 28 et 34 à 59 mais je ne sais comment le spécifier.

Merci de votre aide

Steph


DestFile = "C:" & monfichier & ".txt"
f = FreeFile
Open DestFile For Append As #f
With Range("A1").Select

macolonne = Range("A1").CurrentRegion.Rows.Count

For r = 1 To macolonne
For c = 1 To 59

valeur = Cells.Item(r, 28)

If valeur = "toto" Then

??? Print #f, Cells(r, c + 5).Text

Else

Print #f, Cells(r, c).Text

End If

Next c
Next r
Avatar
MichDenis
M'oubliais, Et quel est le séparateur décimal que tu utilises dans ton fichier texte ?


Salutations!


"Steph" a écrit dans le message de news:
Bonjour,

Depuis un fichier Excel je crée un fichier texte en vue d'une importation
dans un autre logiciel et j'ai besoin que lorque la valeur de la 29 ème
colonne est égale à "toto" les 5 colonnes suivantes ne soient pas prises en
compte. Ne serait alors exporté pour la ligne où toto apparaît aue les
colonnes 1 à 28 et 34 à 59 mais je ne sais comment le spécifier.

Merci de votre aide

Steph


DestFile = "C:" & monfichier & ".txt"
f = FreeFile
Open DestFile For Append As #f
With Range("A1").Select

macolonne = Range("A1").CurrentRegion.Rows.Count

For r = 1 To macolonne
For c = 1 To 59

valeur = Cells.Item(r, 28)

If valeur = "toto" Then

??? Print #f, Cells(r, c + 5).Text

Else

Print #f, Cells(r, c).Text

End If

Next c
Next r
Avatar
Steph
Bonjour Denis,

En ce qui concerne le séparateur décimal, c'est le point "."

Pour la valeur toto, dès lors qu'elle apparaît sur une ligne dans la 29ème
colonne alors je ne souhaite exporter que les cellules des colonnes 1 à 28 et
34 à 59 de la ligne considérée. Si toto n'apparaît pas alors j'exporte tous
les champs de la ligne (colonne 1 à 59). Et ce contrôle s'effectuera pour
chaque ligne.

Est-ce + clair ?



M'oubliais, Et quel est le séparateur décimal que tu utilises dans ton fichier texte ?


Salutations!


"Steph" a écrit dans le message de news:
Bonjour,

Depuis un fichier Excel je crée un fichier texte en vue d'une importation
dans un autre logiciel et j'ai besoin que lorque la valeur de la 29 ème
colonne est égale à "toto" les 5 colonnes suivantes ne soient pas prises en
compte. Ne serait alors exporté pour la ligne où toto apparaît aue les
colonnes 1 à 28 et 34 à 59 mais je ne sais comment le spécifier.

Merci de votre aide

Steph


DestFile = "C:" & monfichier & ".txt"
f = FreeFile
Open DestFile For Append As #f
With Range("A1").Select

macolonne = Range("A1").CurrentRegion.Rows.Count

For r = 1 To macolonne
For c = 1 To 59

valeur = Cells.Item(r, 28)

If valeur = "toto" Then

??? Print #f, Cells(r, c + 5).Text

Else

Print #f, Cells(r, c).Text

End If

Next c
Next r





Avatar
MichDenis
Bonjour Steph,

Essaie ceci :

'-------------------------------
Sub CréerFichierTexte()

Dim DestFile As String, F As Long
Dim Rg As Range, C As Range
Dim MonFichier As String
Dim Separateur As String, B As Long
Dim Ligne As String, A As Long, C As Variant

Separateur = "." ' à déterminer
MonFichier = "denis" ' à déterminer

DestFile = "C:" & MonFichier & ".txt"
F = FreeFile
Open DestFile For Append As #F

With Worksheets("Feuil1") ' à déterminer
Set Rg = .Range(.Cells(1, 1), .Cells(59, _
.Cells(1, 256).End(xlToLeft).Column))
End With

On Error Resume Next
B = Rg.Rows.Count
For A = 1 To B
If A = 29 Then
C = WorksheetFunction.Match("toto", R, 0)
If Err <> 0 Then
Err = 0
A = A + 5
End If
End If
For Each C In Rg.Rows(A).Cells
Ligne = Ligne & C.Text & Separateur
Next
Ligne = Left(Ligne, Len(Ligne) - 1)
Print #F, Ligne
Ligne = ""
Next
Close #F

End Sub
'-------------------------------


Salutations!



"Steph" a écrit dans le message de news:
Bonjour Denis,

En ce qui concerne le séparateur décimal, c'est le point "."

Pour la valeur toto, dès lors qu'elle apparaît sur une ligne dans la 29ème
colonne alors je ne souhaite exporter que les cellules des colonnes 1 à 28 et
34 à 59 de la ligne considérée. Si toto n'apparaît pas alors j'exporte tous
les champs de la ligne (colonne 1 à 59). Et ce contrôle s'effectuera pour
chaque ligne.

Est-ce + clair ?



M'oubliais, Et quel est le séparateur décimal que tu utilises dans ton fichier texte ?


Salutations!


"Steph" a écrit dans le message de news:
Bonjour,

Depuis un fichier Excel je crée un fichier texte en vue d'une importation
dans un autre logiciel et j'ai besoin que lorque la valeur de la 29 ème
colonne est égale à "toto" les 5 colonnes suivantes ne soient pas prises en
compte. Ne serait alors exporté pour la ligne où toto apparaît aue les
colonnes 1 à 28 et 34 à 59 mais je ne sais comment le spécifier.

Merci de votre aide

Steph


DestFile = "C:" & monfichier & ".txt"
f = FreeFile
Open DestFile For Append As #f
With Range("A1").Select

macolonne = Range("A1").CurrentRegion.Rows.Count

For r = 1 To macolonne
For c = 1 To 59

valeur = Cells.Item(r, 28)

If valeur = "toto" Then

??? Print #f, Cells(r, c + 5).Text

Else

Print #f, Cells(r, c).Text

End If

Next c
Next r





Avatar
MichDenis
La même macro, + une correction ...



Sub CréerFichierTexte()

Dim DestFile As String, F As Long
Dim Rg As Range, C As Variant
Dim MonFichier As String
Dim Separateur As String, B As Long
Dim Ligne As String, A As Long

Separateur = "." ' à déterminer
MonFichier = "denis" ' à déterminer

DestFile = "C:" & MonFichier & ".txt"
F = FreeFile
Open DestFile For Append As #F

With Worksheets("Feuil1") ' à déterminer
Set Rg = .Range(.Cells(1, 1), .Cells(59, _
.Cells(1, 256).End(xlToLeft).Column))
End With

On Error Resume Next
B = Rg.Rows.Count
For A = 1 To B
If A = 3 Then
C = WorksheetFunction.Match("toto", Rg.Rows(A).Cells, 0)
If Err <> 0 Then
Err = 0
A = A + 5
End If
End If
For Each C In Rg.Rows(A).Cells
Ligne = Ligne & C.Text & Separateur
Next
Ligne = Left(Ligne, Len(Ligne) - 1)
Print #F, Ligne
Ligne = ""
Next
Close #F

End Sub


Saluttions!
Avatar
MichDenis
Petite correction ....


Sub CréerFichierTexte()

Dim DestFile As String, F As Long
Dim Rg As Range, C As Variant
Dim MonFichier As String
Dim Separateur As String, B As Long
Dim Ligne As String, A As Long

Separateur = "." ' à déterminer
MonFichier = "denis" ' à déterminer

DestFile = "C:" & MonFichier & ".txt"
F = FreeFile
Open DestFile For Append As #F

With Worksheets("Feuil1") ' à déterminer
Set Rg = .Range(.Cells(1, 1), .Cells(59, _
.Cells(1, 256).End(xlToLeft).Column))
End With

On Error Resume Next
B = Rg.Rows.Count
For A = 1 To B
If A = 29 Then
C = WorksheetFunction.Match("toto", Rg.Rows(A).Cells, 0)
If Err <> 0 Then
Err = 0
A = A + 5
End If
End If
For Each C In Rg.Rows(A).Cells
Ligne = Ligne & C.Text & Separateur
Next
Ligne = Left(Ligne, Len(Ligne) - 1)
Print #F, Ligne
Ligne = ""
Next
Close #F

End Sub
Avatar
Steph
Merci beaucoup Denis


Petite correction ....


Sub CréerFichierTexte()

Dim DestFile As String, F As Long
Dim Rg As Range, C As Variant
Dim MonFichier As String
Dim Separateur As String, B As Long
Dim Ligne As String, A As Long

Separateur = "." ' à déterminer
MonFichier = "denis" ' à déterminer

DestFile = "C:" & MonFichier & ".txt"
F = FreeFile
Open DestFile For Append As #F

With Worksheets("Feuil1") ' à déterminer
Set Rg = .Range(.Cells(1, 1), .Cells(59, _
.Cells(1, 256).End(xlToLeft).Column))
End With

On Error Resume Next
B = Rg.Rows.Count
For A = 1 To B
If A = 29 Then
C = WorksheetFunction.Match("toto", Rg.Rows(A).Cells, 0)
If Err <> 0 Then
Err = 0
A = A + 5
End If
End If
For Each C In Rg.Rows(A).Cells
Ligne = Ligne & C.Text & Separateur
Next
Ligne = Left(Ligne, Len(Ligne) - 1)
Print #F, Ligne
Ligne = ""
Next
Close #F

End Sub





Avatar
MichDenis
Bonsoir Steph,

Pour tester si toto fait parti de la ligne 29, il y avait plus simple !

'-----------------------------------
Sub CréerFichierTexte()

Dim DestFile As String, F As Long
Dim Rg As Range, C As Variant
Dim MonFichier As String
Dim Separateur As String, B As Long
Dim Ligne As String, A As Long

Separateur = "." ' à déterminer
MonFichier = "denis" ' à déterminer

DestFile = "C:" & MonFichier & ".txt"
F = FreeFile
Open DestFile For Append As #F

With Worksheets("Feuil1") ' à déterminer
Set Rg = .Range(.Cells(1, 1), .Cells(59, _
.Cells(1, 256).End(xlToLeft).Column))
End With

B = Rg.Rows.Count
For A = 1 To B
If A = 3 Then
If WorksheetFunction.CountIf(Rg.Rows(A).Cells, "toto") > 0 Then
A = A + 5
End If
End If
For Each C In Rg.Rows(A).Cells
Ligne = Ligne & C.Text & Separateur
Next
Ligne = Left(Ligne, Len(Ligne) - 1)
Print #F, Ligne
Ligne = ""
Next
Close #F

End Sub
'-----------------------------------


Salutations!




"Steph" a écrit dans le message de news:
Merci beaucoup Denis


Petite correction ....


Sub CréerFichierTexte()

Dim DestFile As String, F As Long
Dim Rg As Range, C As Variant
Dim MonFichier As String
Dim Separateur As String, B As Long
Dim Ligne As String, A As Long

Separateur = "." ' à déterminer
MonFichier = "denis" ' à déterminer

DestFile = "C:" & MonFichier & ".txt"
F = FreeFile
Open DestFile For Append As #F

With Worksheets("Feuil1") ' à déterminer
Set Rg = .Range(.Cells(1, 1), .Cells(59, _
.Cells(1, 256).End(xlToLeft).Column))
End With

On Error Resume Next
B = Rg.Rows.Count
For A = 1 To B
If A = 29 Then
C = WorksheetFunction.Match("toto", Rg.Rows(A).Cells, 0)
If Err <> 0 Then
Err = 0
A = A + 5
End If
End If
For Each C In Rg.Rows(A).Cells
Ligne = Ligne & C.Text & Separateur
Next
Ligne = Left(Ligne, Len(Ligne) - 1)
Print #F, Ligne
Ligne = ""
Next
Close #F

End Sub





Avatar
Steph
Denis,

J'ai trouvé quelque chose de très simple, il me suffit après un test sur la
valeur d'un champs de décider d'exporter tous les champs ou simplement les
champs 1 à 27 puis 33 à 59.

C'est génial, j'ai trouvé une solution par moi-même.

Merci pour ton aide

Steph

DestFile = "C:" & MonFichier & ".txt"
F = FreeFile
Open DestFile For Append As #F
With Range("A1").Select

macolonne = Range("A1").CurrentRegion.Rows.Count

Print #F, "#FLG 000"
Print #F, "#VER 8"
Print #F, "#DEV EUR"

For R = 1 To macolonne
For C = 1 To 59
If Left(Cells(R, 8).Value, 1) <> "4" Then

Print #F, Cells(R, C).Text

Else

For D = 1 To 27
Print #F, Cells(R, D).Text
Next D

For E = 33 To 59
Print #F, Cells(R, E).Text
Next E

C = C + 58

End If

Next C
Next R

Print #F, "#FIN"

End With

Close #F


Bonsoir Steph,

Pour tester si toto fait parti de la ligne 29, il y avait plus simple !

'-----------------------------------
Sub CréerFichierTexte()

Dim DestFile As String, F As Long
Dim Rg As Range, C As Variant
Dim MonFichier As String
Dim Separateur As String, B As Long
Dim Ligne As String, A As Long

Separateur = "." ' à déterminer
MonFichier = "denis" ' à déterminer

DestFile = "C:" & MonFichier & ".txt"
F = FreeFile
Open DestFile For Append As #F

With Worksheets("Feuil1") ' à déterminer
Set Rg = .Range(.Cells(1, 1), .Cells(59, _
.Cells(1, 256).End(xlToLeft).Column))
End With

B = Rg.Rows.Count
For A = 1 To B
If A = 3 Then
If WorksheetFunction.CountIf(Rg.Rows(A).Cells, "toto") > 0 Then
A = A + 5
End If
End If
For Each C In Rg.Rows(A).Cells
Ligne = Ligne & C.Text & Separateur
Next
Ligne = Left(Ligne, Len(Ligne) - 1)
Print #F, Ligne
Ligne = ""
Next
Close #F

End Sub
'-----------------------------------


Salutations!




"Steph" a écrit dans le message de news:
Merci beaucoup Denis


Petite correction ....


Sub CréerFichierTexte()

Dim DestFile As String, F As Long
Dim Rg As Range, C As Variant
Dim MonFichier As String
Dim Separateur As String, B As Long
Dim Ligne As String, A As Long

Separateur = "." ' à déterminer
MonFichier = "denis" ' à déterminer

DestFile = "C:" & MonFichier & ".txt"
F = FreeFile
Open DestFile For Append As #F

With Worksheets("Feuil1") ' à déterminer
Set Rg = .Range(.Cells(1, 1), .Cells(59, _
.Cells(1, 256).End(xlToLeft).Column))
End With

On Error Resume Next
B = Rg.Rows.Count
For A = 1 To B
If A = 29 Then
C = WorksheetFunction.Match("toto", Rg.Rows(A).Cells, 0)
If Err <> 0 Then
Err = 0
A = A + 5
End If
End If
For Each C In Rg.Rows(A).Cells
Ligne = Ligne & C.Text & Separateur
Next
Ligne = Left(Ligne, Len(Ligne) - 1)
Print #F, Ligne
Ligne = ""
Next
Close #F

End Sub