Enregistrer fichier - Longueur fixe, zones fixes

FREDWOOPER

XLDnaute Nouveau
Bonjour,

Après avoir lu les éléments de ce forum, j'essai de m'attaquer au formatage d'un fichier de rejet bancaire (enregistrement fixe de 240c)

Voici le format - enregistrement détail :
Code enregistrement : 34 2
N° séquentiel (=000001) 6
Code Opération OC (=88) 2
Date de création du précédent relevé JJMMAA 6
Code Chef de file Destinataire du rejet 5 (zone vide)
Code établissement destinataire 5
Code guichet destinataire 5
N° de compte du donneur d'ordre 11
Nom du client donneur d'ordre 24
N° National Emetter (NNE) 6
Code Chef de file émetteur du rejet 5 (zone vide)
Code établissement émetteur 5
Code guichet émetteur 5
N° de compte du destinataire 11
Nom du destinataire 24
Référence de la banque émettrice du rejet 6 (zone vide)
Libellé abréviatif de domiciliation 24 (zone vide)
Date de validation de l'ordre (JJMM) 4
CPOP 12
N° archivage adhésion chez le façonnier 6 (zone vide)
Nom abrégé du créancier 9 (zone vide)
Libellé 2 31 (zone vide)
Date de règlement de l'opération initiale JJMMAA 6
Réservée 4 (zone vide)
Code Centre Bancaire 2
Code motif du rejet 2
Montant compensé en centimes 12
Total de la zone : 240c

J'ai fait le code suivant en m'inspirant des exemples sur le site, mais cela ne fonctionne pas.
J'ai mon premier décalage au niveau de la zone "Nom du client donneur d'ordre" qui se termine à 72 au lieu de 66.
Je n'en trouve pas la raison, si quelqu'un peut m'aider svp...
J'avoue être plutôt niveau "débutant".

Voici mon code :
Private Sub CmdEnregistrer_Click()
Dim Compteur As Long
Dim Val_Ligne As String
Application.ScreenUpdating = False
On Error GoTo Fin
Open "c:\rejet.prn" For Output As #1
With ActiveSheet

For Compteur = 0 To .Range("A1").End(xlDown).Row - 1
Val_Ligne = Left(Format(.Range("A1").Offset(Compteur, 0).Value) & .Range("B1").Offset(Compteur, 0).Value _
& Format(.Range("C1").Offset(Compteur, 0).Value) & Format(.Range("D1").Offset(Compteur, 0).Value, "ddmmyy") _
& String(5, " ") & Format(.Range("E1").Offset(Compteur, 0).Value) & Format(.Range("F1").Offset(Compteur, 0).Value), 66) ' code banque
Val_Ligne = Val_Ligne & String(5, " ") '+ 5 blancs
Val_Ligne = Val_Ligne & Left(Format(.Range("G1").Offset(Compteur, 0).Value) & Format(.Range("H1").Offset(Compteur, 0).Value), 122) 'banque client
Val_Ligne = Val_Ligne & String(30, " ") '+ 30 blancs
Val_Ligne = Val_Ligne & Left(Format(.Range("I1").Offset(Compteur, 0).Value), 168) ' zone par défaut
Val_Ligne = Val_Ligne & String(46, " ") '+ 46 blancs
Val_Ligne = Val_Ligne & Format(.Range("J1").Offset(Compteur, 0).Value, "ddmmyy") 'date echéance
Val_Ligne = Val_Ligne & String(4, " ") '+ 4 blancs
Val_Ligne = Val_Ligne & Format(.Range("K1").Offset(Compteur, 0).Value) 'zones par défaut
Val_Ligne = Val_Ligne & Format(.Range("L1").Offset(Compteur, 0).Value, "0000000.00;0000000.00;")
Print #1,
End With
Fin:
Close #1
Si quelqu'un pouvait m'aider, cela m'enlèverait une grosse épine du pied.
Merci d'avance,
Cdt,
Wooper.
 

Pierrot93

XLDnaute Barbatruc
Re : Enregistrer fichier - Longueur fixe, zones fixes

Bonjour,

plutôt que des données et un code jetés sur un post, un petit fichier en pièce jointe, sans données confidentielles serait plus facile pour t'aider...

bonne journée
@+
 

Discussions similaires

Réponses
2
Affichages
293
Réponses
7
Affichages
390

Statistiques des forums

Discussions
312 413
Messages
2 088 199
Membres
103 764
dernier inscrit
nissassa