en fouillant , je suis tomb=E9 sur cette macro de Charles Balch qui fait
pratiquement ce que je veux, a l'exception de 2 petites choses.
Avant de commencer, petite explication. Cette macro g=E9nere un fichier
txt avec une virgule comme s=E9parateur de colonne.
'adapter de la macro de Charles Balch.
Sub FichierTexte() 's=E9parateur de colonne "," Voir***
Dim Var As Object
Set Var =3D Application.InputBox(Prompt:=3D"S=E9lectionner votre zone:
(Ex. A1:B10) ", _
Title:=3D"S=E9lection de zone ", Default:=3D"$A$1", Type:=3D8)
If Len(Dir(FichierTXT)) > 1 Then Kill FichierTXT
Open FichierTXT For Output As 1
'cr=E9ation du fichier texte
'Print #1, "Fichier texte cr=E9e =E0 partir du tableau Excel"
'Print #1, " - D=E9part du tableau - "
'Print #1, ""
While Row < NbLigne
Row =3D Row + 1
DoEvents
Application.StatusBar =3D Str$(Int((Row / NbLigne) * 100)) & "%
achev=E9"
If (Not Var.Rows(Row).Hidden) Then
MV =3D ""
Col =3D 0
While Col < NbColonne
Col =3D Col + 1
If (Not Var.Columns(Col).Hidden) Then
CellV =3D Var.Cells(Row, Col).Text
End If
MV =3D MV & CellA & "," & CellV
'*** changer ici le s=E9parateur & ","
Wend
Print #1, MV
End If
Wend
'Print #1, ""
'Print #1, " - Fin du tableau - "
'Print #1, "Nota: Fichier g=E9n=E9r=E9 par la macro de cr=E9ation de
fichier texte "
'Print #1, "Nota: Le s=E9parateur de colonne est la virgule "
Close
DoEvents
Application.Calculation =3D CalcState
Application.StatusBar =3D ""
Application.DisplayStatusBar =3D StatusBarState
End Sub
Ce que j'aimerais :
1- Cette macro g=E9nere une virgule au commencement et il n'y a pas de
virgule a la fin de la ligne. Comment faire le contraire ?
2- est-il possible de demander la localisation du fichier et le nom que
l'on veux lui donner
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
MichDenis
Essaie ceci :
'--------------------------------------- Sub SaveAsTextFile()
Dim Rg As Range, NomFichier As String Dim Ligne As String On Error Resume Next With Worksheets("Feuil1") Set Rg = Application.InputBox(Prompt:= _ "Sélectionner votre zone:" & _ "(Ex. A1:B10)", _ Title:="Sélection de zone ", _ Default:="$A$1", Type:=8) End With If Rg Is Nothing Then Exit Sub
NomFichier = Application.GetSaveAsFilename _ (InitialFileName:="nom_par_defaut.txt", _ fileFilter:="Text Files (*.txt), *.txt") Dim c As Range Open NomFichier For Output As #1 For Each r In Rg.Rows For Each c In r.Cells Ligne = Ligne & c.Text & "," Next Print #1, Ligne Ligne = "" Next Close #1 End Sub '---------------------------------------
"FLy" a écrit dans le message de news:
bonjour
en fouillant , je suis tombé sur cette macro de Charles Balch qui fait pratiquement ce que je veux, a l'exception de 2 petites choses.
Avant de commencer, petite explication. Cette macro génere un fichier txt avec une virgule comme séparateur de colonne.
'adapter de la macro de Charles Balch. Sub FichierTexte() 'séparateur de colonne "," Voir*** Dim Var As Object Set Var = Application.InputBox(Prompt:="Sélectionner votre zone: (Ex. A1:B10) ", _ Title:="Sélection de zone ", Default:="$A$1", Type:=8)
If Len(Dir(FichierTXT)) > 1 Then Kill FichierTXT Open FichierTXT For Output As 1 'création du fichier texte 'Print #1, "Fichier texte crée à partir du tableau Excel" 'Print #1, " - Départ du tableau - " 'Print #1, ""
While Row < NbLigne Row = Row + 1 DoEvents Application.StatusBar = Str$(Int((Row / NbLigne) * 100)) & "% achevé" If (Not Var.Rows(Row).Hidden) Then MV = "" Col = 0 While Col < NbColonne Col = Col + 1 If (Not Var.Columns(Col).Hidden) Then CellV = Var.Cells(Row, Col).Text End If
MV = MV & CellA & "," & CellV '*** changer ici le séparateur & "," Wend Print #1, MV End If Wend
'Print #1, "" 'Print #1, " - Fin du tableau - " 'Print #1, "Nota: Fichier généré par la macro de création de fichier texte " 'Print #1, "Nota: Le séparateur de colonne est la virgule " Close DoEvents Application.Calculation = CalcState Application.StatusBar = "" Application.DisplayStatusBar = StatusBarState End Sub
Ce que j'aimerais : 1- Cette macro génere une virgule au commencement et il n'y a pas de virgule a la fin de la ligne. Comment faire le contraire ? 2- est-il possible de demander la localisation du fichier et le nom que l'on veux lui donner
Mille Merci
Essaie ceci :
'---------------------------------------
Sub SaveAsTextFile()
Dim Rg As Range, NomFichier As String
Dim Ligne As String
On Error Resume Next
With Worksheets("Feuil1")
Set Rg = Application.InputBox(Prompt:= _
"Sélectionner votre zone:" & _
"(Ex. A1:B10)", _
Title:="Sélection de zone ", _
Default:="$A$1", Type:=8)
End With
If Rg Is Nothing Then Exit Sub
NomFichier = Application.GetSaveAsFilename _
(InitialFileName:="nom_par_defaut.txt", _
fileFilter:="Text Files (*.txt), *.txt")
Dim c As Range
Open NomFichier For Output As #1
For Each r In Rg.Rows
For Each c In r.Cells
Ligne = Ligne & c.Text & ","
Next
Print #1, Ligne
Ligne = ""
Next
Close #1
End Sub
'---------------------------------------
"FLy" <admin@bocenor.com> a écrit dans le message de news:
1167944385.579789.7530@q40g2000cwq.googlegroups.com...
bonjour
en fouillant , je suis tombé sur cette macro de Charles Balch qui fait
pratiquement ce que je veux, a l'exception de 2 petites choses.
Avant de commencer, petite explication. Cette macro génere un fichier
txt avec une virgule comme séparateur de colonne.
'adapter de la macro de Charles Balch.
Sub FichierTexte() 'séparateur de colonne "," Voir***
Dim Var As Object
Set Var = Application.InputBox(Prompt:="Sélectionner votre zone:
(Ex. A1:B10) ", _
Title:="Sélection de zone ", Default:="$A$1", Type:=8)
If Len(Dir(FichierTXT)) > 1 Then Kill FichierTXT
Open FichierTXT For Output As 1
'création du fichier texte
'Print #1, "Fichier texte crée à partir du tableau Excel"
'Print #1, " - Départ du tableau - "
'Print #1, ""
While Row < NbLigne
Row = Row + 1
DoEvents
Application.StatusBar = Str$(Int((Row / NbLigne) * 100)) & "%
achevé"
If (Not Var.Rows(Row).Hidden) Then
MV = ""
Col = 0
While Col < NbColonne
Col = Col + 1
If (Not Var.Columns(Col).Hidden) Then
CellV = Var.Cells(Row, Col).Text
End If
MV = MV & CellA & "," & CellV
'*** changer ici le séparateur & ","
Wend
Print #1, MV
End If
Wend
'Print #1, ""
'Print #1, " - Fin du tableau - "
'Print #1, "Nota: Fichier généré par la macro de création de
fichier texte "
'Print #1, "Nota: Le séparateur de colonne est la virgule "
Close
DoEvents
Application.Calculation = CalcState
Application.StatusBar = ""
Application.DisplayStatusBar = StatusBarState
End Sub
Ce que j'aimerais :
1- Cette macro génere une virgule au commencement et il n'y a pas de
virgule a la fin de la ligne. Comment faire le contraire ?
2- est-il possible de demander la localisation du fichier et le nom que
l'on veux lui donner
'--------------------------------------- Sub SaveAsTextFile()
Dim Rg As Range, NomFichier As String Dim Ligne As String On Error Resume Next With Worksheets("Feuil1") Set Rg = Application.InputBox(Prompt:= _ "Sélectionner votre zone:" & _ "(Ex. A1:B10)", _ Title:="Sélection de zone ", _ Default:="$A$1", Type:=8) End With If Rg Is Nothing Then Exit Sub
NomFichier = Application.GetSaveAsFilename _ (InitialFileName:="nom_par_defaut.txt", _ fileFilter:="Text Files (*.txt), *.txt") Dim c As Range Open NomFichier For Output As #1 For Each r In Rg.Rows For Each c In r.Cells Ligne = Ligne & c.Text & "," Next Print #1, Ligne Ligne = "" Next Close #1 End Sub '---------------------------------------
"FLy" a écrit dans le message de news:
bonjour
en fouillant , je suis tombé sur cette macro de Charles Balch qui fait pratiquement ce que je veux, a l'exception de 2 petites choses.
Avant de commencer, petite explication. Cette macro génere un fichier txt avec une virgule comme séparateur de colonne.
'adapter de la macro de Charles Balch. Sub FichierTexte() 'séparateur de colonne "," Voir*** Dim Var As Object Set Var = Application.InputBox(Prompt:="Sélectionner votre zone: (Ex. A1:B10) ", _ Title:="Sélection de zone ", Default:="$A$1", Type:=8)
If Len(Dir(FichierTXT)) > 1 Then Kill FichierTXT Open FichierTXT For Output As 1 'création du fichier texte 'Print #1, "Fichier texte crée à partir du tableau Excel" 'Print #1, " - Départ du tableau - " 'Print #1, ""
While Row < NbLigne Row = Row + 1 DoEvents Application.StatusBar = Str$(Int((Row / NbLigne) * 100)) & "% achevé" If (Not Var.Rows(Row).Hidden) Then MV = "" Col = 0 While Col < NbColonne Col = Col + 1 If (Not Var.Columns(Col).Hidden) Then CellV = Var.Cells(Row, Col).Text End If
MV = MV & CellA & "," & CellV '*** changer ici le séparateur & "," Wend Print #1, MV End If Wend
'Print #1, "" 'Print #1, " - Fin du tableau - " 'Print #1, "Nota: Fichier généré par la macro de création de fichier texte " 'Print #1, "Nota: Le séparateur de colonne est la virgule " Close DoEvents Application.Calculation = CalcState Application.StatusBar = "" Application.DisplayStatusBar = StatusBarState End Sub
Ce que j'aimerais : 1- Cette macro génere une virgule au commencement et il n'y a pas de virgule a la fin de la ligne. Comment faire le contraire ? 2- est-il possible de demander la localisation du fichier et le nom que l'on veux lui donner
Mille Merci
FLy
Super MichDenis
Un gros MERCI . Elle fonctionne bien et elle est plus courte que l'original. Question comme ca ? Il y a surement un moyen de ne pas sélectionner les cellules manuellement.
Essaie ceci :
'--------------------------------------- Sub SaveAsTextFile()
Dim Rg As Range, NomFichier As String Dim Ligne As String On Error Resume Next With Worksheets("Feuil1") Set Rg = Application.InputBox(Prompt:= _ "Sélectionner votre zone:" & _ "(Ex. A1:B10)", _ Title:="Sélection de zone ", _ Default:="$A$1", Type:=8) End With If Rg Is Nothing Then Exit Sub
NomFichier = Application.GetSaveAsFilename _ (InitialFileName:="nom_par_defaut.txt", _ fileFilter:="Text Files (*.txt), *.txt") Dim c As Range Open NomFichier For Output As #1 For Each r In Rg.Rows For Each c In r.Cells Ligne = Ligne & c.Text & "," Next Print #1, Ligne Ligne = "" Next Close #1 End Sub '---------------------------------------
Mille Merci
Super MichDenis
Un gros MERCI . Elle fonctionne bien et elle est plus courte que
l'original. Question comme ca ? Il y a surement un moyen de ne pas
sélectionner les cellules manuellement.
Essaie ceci :
'---------------------------------------
Sub SaveAsTextFile()
Dim Rg As Range, NomFichier As String
Dim Ligne As String
On Error Resume Next
With Worksheets("Feuil1")
Set Rg = Application.InputBox(Prompt:= _
"Sélectionner votre zone:" & _
"(Ex. A1:B10)", _
Title:="Sélection de zone ", _
Default:="$A$1", Type:=8)
End With
If Rg Is Nothing Then Exit Sub
NomFichier = Application.GetSaveAsFilename _
(InitialFileName:="nom_par_defaut.txt", _
fileFilter:="Text Files (*.txt), *.txt")
Dim c As Range
Open NomFichier For Output As #1
For Each r In Rg.Rows
For Each c In r.Cells
Ligne = Ligne & c.Text & ","
Next
Print #1, Ligne
Ligne = ""
Next
Close #1
End Sub
'---------------------------------------
Un gros MERCI . Elle fonctionne bien et elle est plus courte que l'original. Question comme ca ? Il y a surement un moyen de ne pas sélectionner les cellules manuellement.
Essaie ceci :
'--------------------------------------- Sub SaveAsTextFile()
Dim Rg As Range, NomFichier As String Dim Ligne As String On Error Resume Next With Worksheets("Feuil1") Set Rg = Application.InputBox(Prompt:= _ "Sélectionner votre zone:" & _ "(Ex. A1:B10)", _ Title:="Sélection de zone ", _ Default:="$A$1", Type:=8) End With If Rg Is Nothing Then Exit Sub
NomFichier = Application.GetSaveAsFilename _ (InitialFileName:="nom_par_defaut.txt", _ fileFilter:="Text Files (*.txt), *.txt") Dim c As Range Open NomFichier For Output As #1 For Each r In Rg.Rows For Each c In r.Cells Ligne = Ligne & c.Text & "," Next Print #1, Ligne Ligne = "" Next Close #1 End Sub '---------------------------------------
Mille Merci
MichDenis
Si tu connais d'avance la plage à exporter dans ton fichier texte, essaie ceci :
'--------------------------------------- Sub SaveAsTextFile()
Dim Rg As Range, NomFichier As String Dim Ligne As String On Error Resume Next With Worksheets("Feuil1") 'nom feuille à définir Set Rg = .Range("A1:G25") 'plage à définir selon ton application End With If Rg Is Nothing Then Exit Sub
NomFichier = Application.GetSaveAsFilename _ (InitialFileName:="nom_par_defaut.txt", _ fileFilter:="Text Files (*.txt), *.txt") Dim c As Range Open NomFichier For Output As #1 For Each r In Rg.Rows For Each c In r.Cells Ligne = Ligne & c.Text & "," Next Print #1, Ligne Ligne = "" Next Close #1 End Sub '---------------------------------------
"FLy" a écrit dans le message de news:
Super MichDenis
Un gros MERCI . Elle fonctionne bien et elle est plus courte que l'original. Question comme ca ? Il y a surement un moyen de ne pas sélectionner les cellules manuellement.
Essaie ceci :
'--------------------------------------- Sub SaveAsTextFile()
Dim Rg As Range, NomFichier As String Dim Ligne As String On Error Resume Next With Worksheets("Feuil1") Set Rg = Application.InputBox(Prompt:= _ "Sélectionner votre zone:" & _ "(Ex. A1:B10)", _ Title:="Sélection de zone ", _ Default:="$A$1", Type:=8) End With If Rg Is Nothing Then Exit Sub
NomFichier = Application.GetSaveAsFilename _ (InitialFileName:="nom_par_defaut.txt", _ fileFilter:="Text Files (*.txt), *.txt") Dim c As Range Open NomFichier For Output As #1 For Each r In Rg.Rows For Each c In r.Cells Ligne = Ligne & c.Text & "," Next Print #1, Ligne Ligne = "" Next Close #1 End Sub '---------------------------------------
Mille Merci
Si tu connais d'avance la plage à exporter
dans ton fichier texte, essaie ceci :
'---------------------------------------
Sub SaveAsTextFile()
Dim Rg As Range, NomFichier As String
Dim Ligne As String
On Error Resume Next
With Worksheets("Feuil1") 'nom feuille à définir
Set Rg = .Range("A1:G25") 'plage à définir selon ton application
End With
If Rg Is Nothing Then Exit Sub
NomFichier = Application.GetSaveAsFilename _
(InitialFileName:="nom_par_defaut.txt", _
fileFilter:="Text Files (*.txt), *.txt")
Dim c As Range
Open NomFichier For Output As #1
For Each r In Rg.Rows
For Each c In r.Cells
Ligne = Ligne & c.Text & ","
Next
Print #1, Ligne
Ligne = ""
Next
Close #1
End Sub
'---------------------------------------
"FLy" <admin@bocenor.com> a écrit dans le message de news:
1168016163.058895.247580@42g2000cwt.googlegroups.com...
Super MichDenis
Un gros MERCI . Elle fonctionne bien et elle est plus courte que
l'original. Question comme ca ? Il y a surement un moyen de ne pas
sélectionner les cellules manuellement.
Essaie ceci :
'---------------------------------------
Sub SaveAsTextFile()
Dim Rg As Range, NomFichier As String
Dim Ligne As String
On Error Resume Next
With Worksheets("Feuil1")
Set Rg = Application.InputBox(Prompt:= _
"Sélectionner votre zone:" & _
"(Ex. A1:B10)", _
Title:="Sélection de zone ", _
Default:="$A$1", Type:=8)
End With
If Rg Is Nothing Then Exit Sub
NomFichier = Application.GetSaveAsFilename _
(InitialFileName:="nom_par_defaut.txt", _
fileFilter:="Text Files (*.txt), *.txt")
Dim c As Range
Open NomFichier For Output As #1
For Each r In Rg.Rows
For Each c In r.Cells
Ligne = Ligne & c.Text & ","
Next
Print #1, Ligne
Ligne = ""
Next
Close #1
End Sub
'---------------------------------------
Si tu connais d'avance la plage à exporter dans ton fichier texte, essaie ceci :
'--------------------------------------- Sub SaveAsTextFile()
Dim Rg As Range, NomFichier As String Dim Ligne As String On Error Resume Next With Worksheets("Feuil1") 'nom feuille à définir Set Rg = .Range("A1:G25") 'plage à définir selon ton application End With If Rg Is Nothing Then Exit Sub
NomFichier = Application.GetSaveAsFilename _ (InitialFileName:="nom_par_defaut.txt", _ fileFilter:="Text Files (*.txt), *.txt") Dim c As Range Open NomFichier For Output As #1 For Each r In Rg.Rows For Each c In r.Cells Ligne = Ligne & c.Text & "," Next Print #1, Ligne Ligne = "" Next Close #1 End Sub '---------------------------------------
"FLy" a écrit dans le message de news:
Super MichDenis
Un gros MERCI . Elle fonctionne bien et elle est plus courte que l'original. Question comme ca ? Il y a surement un moyen de ne pas sélectionner les cellules manuellement.
Essaie ceci :
'--------------------------------------- Sub SaveAsTextFile()
Dim Rg As Range, NomFichier As String Dim Ligne As String On Error Resume Next With Worksheets("Feuil1") Set Rg = Application.InputBox(Prompt:= _ "Sélectionner votre zone:" & _ "(Ex. A1:B10)", _ Title:="Sélection de zone ", _ Default:="$A$1", Type:=8) End With If Rg Is Nothing Then Exit Sub
NomFichier = Application.GetSaveAsFilename _ (InitialFileName:="nom_par_defaut.txt", _ fileFilter:="Text Files (*.txt), *.txt") Dim c As Range Open NomFichier For Output As #1 For Each r In Rg.Rows For Each c In r.Cells Ligne = Ligne & c.Text & "," Next Print #1, Ligne Ligne = "" Next Close #1 End Sub '---------------------------------------