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

Problème VBA décalage de ligne

1 réponse
Avatar
Fred
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"

Sheets("tarif").Select
ActiveWindow.SelectedSheets.Delete
Range("A1").Select
Sheets("Feuil1").Select
Range("A1").Select

Exit Sub
Else
End If

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:

Sheets("tarif").Select
ActiveWindow.SelectedSheets.Delete

Range("A1").Select
Sheets("Feuil1").Select
Range("A1").Select

End Sub


FRED.

1 réponse

Avatar
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"

Sheets("tarif").Select
ActiveWindow.SelectedSheets.Delete
Range("A1").Select
Sheets("Feuil1").Select
Range("A1").Select

Exit Sub
Else
End If

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:

Sheets("tarif").Select
ActiveWindow.SelectedSheets.Delete

Range("A1").Select
Sheets("Feuil1").Select
Range("A1").Select

End Sub


FRED.