Bon, je vais essayer d'être concis, mais ce n'est pas facile...
Je fais une macro VBA afin d'écrire le contenu d'une feuille dans un fichier
txt.
Le problème est que cela m'écris les lignes plusieurs fois...et en décalant
les colonnes...
Si l'un d'entre vous avait une idée, je dois dire que cela m'arrangerait
bien ! :
Sub Matrice_Facturation()
'Export de la feuille en cours vers un fichier à plat, sans séparateur et
délimitation largeur fixe
Debut:
On Error GoTo Message_Erreur
Dim Nom_Fic As Range
Range("A1").Select
Set Nom_Fic = ActiveCell
If Nom_Fic = 0 Then
MsgBox "Le numéro de dossier n'est pas renseigné, merci de le
compléter", vbInformation, "NUMERO DE DOSSIER MANQUANT"
Set Plage = Range("A1", Range("B65536").End(xlUp))
'Set Plage = Range("B10", Range("B65536").End(xlUp))
Open "c:\temp\" & Nom_Fic & ".txt" For Output As #1
For Each c In Plage
For i = 0 To 4 'Sélectionne le nombre de colonnes
st = Left(c.Offset(0, i), 20) 'détermine la longueur du champ texte
If Len(st) < 20 Then
st = st & WorksheetFunction.Rept(" ", 20 - Len(st))
End If
st = st & ";"
rec = rec & st
Next i
Write #1, rec
rec = ""
Next c
Close #1
GoTo Fin
Message_Erreur:
MsgBox "Une erreur est survenue durant le traitement. Le fichier n'a pas été
transmis.", vbCritical, "ERREUR"
Fin:
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
Fred
Je me réponds : j'ai trouvé, c'était une erreur de ma part : Set Plage = Range("A1", Range("B65536").End(xlUp)) "B65536" au lieu de "A65536" !!! Quel boulet !!
Merci pour ceux qui ont commencé à regarder.
FRED.
"Fred" a écrit dans le message de news:%
Bonjour,
Bon, je vais essayer d'être concis, mais ce n'est pas facile... Je fais une macro VBA afin d'écrire le contenu d'une feuille dans un fichier txt. Le problème est que cela m'écris les lignes plusieurs fois...et en décalant les colonnes... Si l'un d'entre vous avait une idée, je dois dire que cela m'arrangerait bien ! :
Sub Matrice_Facturation()
'Export de la feuille en cours vers un fichier à plat, sans séparateur et délimitation largeur fixe
Debut:
On Error GoTo Message_Erreur
Dim Nom_Fic As Range Range("A1").Select Set Nom_Fic = ActiveCell
If Nom_Fic = 0 Then MsgBox "Le numéro de dossier n'est pas renseigné, merci de le compléter", vbInformation, "NUMERO DE DOSSIER MANQUANT"
Set Plage = Range("A1", Range("B65536").End(xlUp)) 'Set Plage = Range("B10", Range("B65536").End(xlUp)) Open "c:temp" & Nom_Fic & ".txt" For Output As #1 For Each c In Plage For i = 0 To 4 'Sélectionne le nombre de colonnes st = Left(c.Offset(0, i), 20) 'détermine la longueur du champ texte If Len(st) < 20 Then st = st & WorksheetFunction.Rept(" ", 20 - Len(st)) End If st = st & ";" rec = rec & st Next i Write #1, rec rec = "" Next c Close #1
GoTo Fin
Message_Erreur: MsgBox "Une erreur est survenue durant le traitement. Le fichier n'a pas été transmis.", vbCritical, "ERREUR" Fin:
Je me réponds : j'ai trouvé, c'était une erreur de ma part : Set Plage =
Range("A1", Range("B65536").End(xlUp))
"B65536" au lieu de "A65536" !!!
Quel boulet !!
Merci pour ceux qui ont commencé à regarder.
FRED.
"Fred" <nospam@nospam.com> a écrit dans le message de
news:%23neX7y41JHA.4880@TK2MSFTNGP03.phx.gbl...
Bonjour,
Bon, je vais essayer d'être concis, mais ce n'est pas facile...
Je fais une macro VBA afin d'écrire le contenu d'une feuille dans un
fichier txt.
Le problème est que cela m'écris les lignes plusieurs fois...et en
décalant les colonnes...
Si l'un d'entre vous avait une idée, je dois dire que cela m'arrangerait
bien ! :
Sub Matrice_Facturation()
'Export de la feuille en cours vers un fichier à plat, sans séparateur et
délimitation largeur fixe
Debut:
On Error GoTo Message_Erreur
Dim Nom_Fic As Range
Range("A1").Select
Set Nom_Fic = ActiveCell
If Nom_Fic = 0 Then
MsgBox "Le numéro de dossier n'est pas renseigné, merci de le
compléter", vbInformation, "NUMERO DE DOSSIER MANQUANT"
Set Plage = Range("A1", Range("B65536").End(xlUp))
'Set Plage = Range("B10", Range("B65536").End(xlUp))
Open "c:temp" & Nom_Fic & ".txt" For Output As #1
For Each c In Plage
For i = 0 To 4 'Sélectionne le nombre de colonnes
st = Left(c.Offset(0, i), 20) 'détermine la longueur du champ texte
If Len(st) < 20 Then
st = st & WorksheetFunction.Rept(" ", 20 - Len(st))
End If
st = st & ";"
rec = rec & st
Next i
Write #1, rec
rec = ""
Next c
Close #1
GoTo Fin
Message_Erreur:
MsgBox "Une erreur est survenue durant le traitement. Le fichier n'a pas
été transmis.", vbCritical, "ERREUR"
Fin:
Je me réponds : j'ai trouvé, c'était une erreur de ma part : Set Plage = Range("A1", Range("B65536").End(xlUp)) "B65536" au lieu de "A65536" !!! Quel boulet !!
Merci pour ceux qui ont commencé à regarder.
FRED.
"Fred" a écrit dans le message de news:%
Bonjour,
Bon, je vais essayer d'être concis, mais ce n'est pas facile... Je fais une macro VBA afin d'écrire le contenu d'une feuille dans un fichier txt. Le problème est que cela m'écris les lignes plusieurs fois...et en décalant les colonnes... Si l'un d'entre vous avait une idée, je dois dire que cela m'arrangerait bien ! :
Sub Matrice_Facturation()
'Export de la feuille en cours vers un fichier à plat, sans séparateur et délimitation largeur fixe
Debut:
On Error GoTo Message_Erreur
Dim Nom_Fic As Range Range("A1").Select Set Nom_Fic = ActiveCell
If Nom_Fic = 0 Then MsgBox "Le numéro de dossier n'est pas renseigné, merci de le compléter", vbInformation, "NUMERO DE DOSSIER MANQUANT"
Set Plage = Range("A1", Range("B65536").End(xlUp)) 'Set Plage = Range("B10", Range("B65536").End(xlUp)) Open "c:temp" & Nom_Fic & ".txt" For Output As #1 For Each c In Plage For i = 0 To 4 'Sélectionne le nombre de colonnes st = Left(c.Offset(0, i), 20) 'détermine la longueur du champ texte If Len(st) < 20 Then st = st & WorksheetFunction.Rept(" ", 20 - Len(st)) End If st = st & ";" rec = rec & st Next i Write #1, rec rec = "" Next c Close #1
GoTo Fin
Message_Erreur: MsgBox "Une erreur est survenue durant le traitement. Le fichier n'a pas été transmis.", vbCritical, "ERREUR" Fin: