Exporter des données d'excel vers un autre fichier en ".txt"
Nona
-
Nona -
Nona -
Bonjour,
j'aimerais exporter des colonnes qui ne sont pas côte à côte vers un fichier ".txt". Le problème qui se pose est que mon code doit être global, c'est-à-dire applicable à un autre fichier qui contient un nombre différent de colonnes. Je veux toujours exporter la première et l'avant dernière colonne. Voici mon code:
Sub generer_nom_fichier()
Dim Export As String
Dim confirmation As Long
Select Case Application.Caller
Case "Bouton 3"
nom_fichier = "tgt_P_MGN.txt" 'nomme le fichier généré
confirmation = MsgBox("Do you really want to push the information for UPDATE?", vbYesNo)
If confirmation = 6 Then
GenererFichierPlatSLT (nom_fichier)
Else
MsgBox "Operation Cancelled by User"
End If
nom_fichier = "tgt_P_MGN.end" 'nomme le 2ème fichier généré
confirmation = MsgBox("Do you really want to push the information for UPDATE?", vbYesNo)
If confirmation = 6 Then
GenererFichierPlatSLT (nom_fichier)
Else
MsgBox "Operation Cancelled by User"
End If
End Select
End Sub
Function GenererFichierPlatSLT(nom_fichier As String)
Dim file_directory As String
Dim ligne_tableau As String
Dim nbreColTableau As Integer
Dim nbreLignesTableau As Integer
Dim nbreLignes As Integer
'Récupération du chemin de destination du fichier plat (situé dans la feuille "parameterExport")
For Each Feuille In ActiveWorkbook.Sheets
If Feuille.Name = "parameterExport" Then
Feuille.Activate
Range("D2:D5000").Select
file_directory = ActiveCell.Value
Exit For
Range("D655363").End(xlUp).Rows.Activate
For l = 1 To nbreLignes
If ActiveCell.Value <> "" Then 'permet de passer en revue les différents fichiers de parameterExport
Range("D2:D5000").Copy Destination:=ActiveCell.Offset(1, 0) 'permet de passer à la ligne suivante
End If
Next l
End If
Next Feuille
ActiveWorkbook.Worksheets(6).Activate
ActiveSheet.Range("A1:Z5000").Select
'nbreColTableau = 2
'nbreColTableau = Columns(1).Copy
nbreLignesTableau = 5000
'Récupération et écriture dans le fichier nom_fichier.txt de chaque ligne du tableau
Open file_directory & nom_fichier For Output As #1
MsgBox (Range("R_MAT_GRP_LV2").Columns.Count)
n = Range("R_MAT_GRP_LV2").Columns.Count
If n <> "" Then
For i = 1 To nbreLignesTableau
If Cells(i, n) = "UPDATE" Then 'on sélectionne la troisième colonne
For j = 1 To nbreColTableau
If j < nbreColTableau Then
ligne_tableau = ligne_tableau & Cells(i, j).Value & ";" 'on sélectionne la ligne où il y a UPDATE
Else
ligne_tableau = ligne_tableau & Cells(i, j).Value 'on enlève la virgule pour la dernière ligne du tableau
End If
Next j
Print #1, ligne_tableau 'on copie dans le dossier Export2
ligne_tableau = ""
End If
Next i
Close #1
End If
MsgBox ("File " & file_directory & nom_fichier & " successfully created")
End Function
J'ai un problème pour exporter les colonnes que je veux et pour variabiliser mon code à n'importe quel fichier ayant un nombre de colonnes différents.
Merci d'avance
j'aimerais exporter des colonnes qui ne sont pas côte à côte vers un fichier ".txt". Le problème qui se pose est que mon code doit être global, c'est-à-dire applicable à un autre fichier qui contient un nombre différent de colonnes. Je veux toujours exporter la première et l'avant dernière colonne. Voici mon code:
Sub generer_nom_fichier()
Dim Export As String
Dim confirmation As Long
Select Case Application.Caller
Case "Bouton 3"
nom_fichier = "tgt_P_MGN.txt" 'nomme le fichier généré
confirmation = MsgBox("Do you really want to push the information for UPDATE?", vbYesNo)
If confirmation = 6 Then
GenererFichierPlatSLT (nom_fichier)
Else
MsgBox "Operation Cancelled by User"
End If
nom_fichier = "tgt_P_MGN.end" 'nomme le 2ème fichier généré
confirmation = MsgBox("Do you really want to push the information for UPDATE?", vbYesNo)
If confirmation = 6 Then
GenererFichierPlatSLT (nom_fichier)
Else
MsgBox "Operation Cancelled by User"
End If
End Select
End Sub
Function GenererFichierPlatSLT(nom_fichier As String)
Dim file_directory As String
Dim ligne_tableau As String
Dim nbreColTableau As Integer
Dim nbreLignesTableau As Integer
Dim nbreLignes As Integer
'Récupération du chemin de destination du fichier plat (situé dans la feuille "parameterExport")
For Each Feuille In ActiveWorkbook.Sheets
If Feuille.Name = "parameterExport" Then
Feuille.Activate
Range("D2:D5000").Select
file_directory = ActiveCell.Value
Exit For
Range("D655363").End(xlUp).Rows.Activate
For l = 1 To nbreLignes
If ActiveCell.Value <> "" Then 'permet de passer en revue les différents fichiers de parameterExport
Range("D2:D5000").Copy Destination:=ActiveCell.Offset(1, 0) 'permet de passer à la ligne suivante
End If
Next l
End If
Next Feuille
ActiveWorkbook.Worksheets(6).Activate
ActiveSheet.Range("A1:Z5000").Select
'nbreColTableau = 2
'nbreColTableau = Columns(1).Copy
nbreLignesTableau = 5000
'Récupération et écriture dans le fichier nom_fichier.txt de chaque ligne du tableau
Open file_directory & nom_fichier For Output As #1
MsgBox (Range("R_MAT_GRP_LV2").Columns.Count)
n = Range("R_MAT_GRP_LV2").Columns.Count
If n <> "" Then
For i = 1 To nbreLignesTableau
If Cells(i, n) = "UPDATE" Then 'on sélectionne la troisième colonne
For j = 1 To nbreColTableau
If j < nbreColTableau Then
ligne_tableau = ligne_tableau & Cells(i, j).Value & ";" 'on sélectionne la ligne où il y a UPDATE
Else
ligne_tableau = ligne_tableau & Cells(i, j).Value 'on enlève la virgule pour la dernière ligne du tableau
End If
Next j
Print #1, ligne_tableau 'on copie dans le dossier Export2
ligne_tableau = ""
End If
Next i
Close #1
End If
MsgBox ("File " & file_directory & nom_fichier & " successfully created")
End Function
J'ai un problème pour exporter les colonnes que je veux et pour variabiliser mon code à n'importe quel fichier ayant un nombre de colonnes différents.
Merci d'avance
A voir également:
- Exporter des données d'excel vers un autre fichier en ".txt"
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Trier des données excel - Guide
5 réponses
Bonjour
alor la si tu ne donne pas un example de ton fichier excel et ton txt dur
A voir comment faire
A+
Maurice
alor la si tu ne donne pas un example de ton fichier excel et ton txt dur
A voir comment faire
A+
Maurice
Bonjour
Ci-dessous La procédure
Pour transmettre un fichier, il faut passer par un site de pièce jointe tel que cjoint.com
Va sur ce site : http://cjoint.com
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse
A+
Maurice
Ci-dessous La procédure
Pour transmettre un fichier, il faut passer par un site de pièce jointe tel que cjoint.com
Va sur ce site : http://cjoint.com
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse
A+
Maurice
Bonjour
je ne maitrise pas du tout l'anglais HI
mes voila 2 macro TxT
1 Cumul sur le meme fichier
2 Creation Fichier
A toi de choisir
A+
Maurice
je ne maitrise pas du tout l'anglais HI
mes voila 2 macro TxT
1 Cumul sur le meme fichier
2 Creation Fichier
Sub CumulTxt() Dim Plage As Range Chemin = ActiveWorkbook.Path & "\" Non = ActiveSheet.Name & "Tes" Ext = ".txt" Fichier = Non & Ext CheminFiche = Chemin & "\" & Fichier Sep = ";" Set Plage = Range("A2:F" & Cells(Rows.Count, 1).End(xlUp).Row) Set Plage = Range(Cells(1, 1), Cells(Nlig, 5)) Open CheminFiche For Append As #1 For Each Lig In Plage.Rows Tmp = "" For Each Cel In Lig.Cells Tmp = Tmp & CStr(Cel.Text) & Sep Next Print #1, Tmp Next Close Set Plage = Nothing MsgBox "Votre fichier TXT a été Transferer avec succès!" End Sub Sub CreationTxt() Dim Plage As Range Non = ActiveSheet.Name & "Tes" Ext = ".txt" Fichier = Non & Ext CheminFiche = Chemin & "\" & Fichier Sep = ";" Nlig = Cells(Rows.Count, 1).End(xlUp).Row Set Plage = Range("A1:F" & Cells(Rows.Count, 1).End(xlUp).Row) Open CheminFiche For Output As #1 For Each Lig In Plage.Rows Tmp = "" For Each Cel In Lig.Cells Tmp = Tmp & CStr(Cel.Text) & Sep Next Print #1, Tmp Next Close Set Plage = Nothing MsgBox "Votre fichier TXT a été créé avec succès!" End Sub
A toi de choisir
A+
Maurice
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question