Construire un Format Excel et format TXT

Sylvie

XLDnaute Accro
Bonjour,

je souhaite importer un fichier au format TXT dans un logiciel spécifique de paie.
Je connais la structure de ce fichier Txt mais je ne sais pas comment adapter cette structure sous Excel le but étant de saisir mes informations sous Excel, d'enregistrer le fichier en Txt et enfin d'importer ce fichier dans mon logiciel

Formats des fichiers
Les fichiers importés doivent impérativement respecter les structures suivantes :

Position Longueur Type Cf. note Désignation
1 2 A VS
3 13 1 Matricule
16 1 N * Type de ventilation
17 13 2 Section analytique
30 10 N Pourcentage
40 4 3 Zone réservée
44 15 N Nombre d'heures


Légende Type
A : Alphanumérique cadré à gauche
N : Numérique cadré à droite et complété à gauche le cas échéant par des zéros ou des blancs
1 Matricule : Entier numérique (4 caractères) cadrage droite
2 Section anlytique : format alphanumerique (8 caractères maxi) carage gauche

Le format Txt ressemble à cela Pour le matricule 0006. 1964,2400, 2469 et 2474 sont des sections analytiques. Le 0 avant la section représente le type de ventilation
VS0006 01964 54,835 0 0,000
VS0006 02400 7,726 0 0,000
VS0006 02469 23,556 0 0,000
VS0006 02474 13,883 0 0,000


Merci d'avance à tous ceux qui voudront bien m'aider
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Olympia, le Forum

Pour avoir une base de travail je te conseil de regarder ce fil de discussion où j'ai eu à faire le même style de job pour quelqu'un travaillant sous SAP...

=> Lien supprimé

Tu y trouveras l'aboutissement de mon travail avec 'Daga75'

Ce fil lui-même contient des liens vers d'autres démos...
Lien supprimé


Tiens nous au courant..

Bon Dimanche
@+Thierry
 

chris

XLDnaute Barbatruc
Bonjour
Une solution consiste à créer une ligne bidon dont chaque valeur correspond à la longueur maxi admise dans la colonne puis d'ajuster les largeurs des colonnes aux données.
Ensuite enregistrersous et choisir le format texte prn : on obtient une longueur fixe basée sur la première ligne.
Reste à jeter la 1ère ligne avec un éditeur de texte avant d'importer.
 

Sylvie

XLDnaute Accro
Bonjour Thierry et merci pour la rapidité de ta réponse.

Je ne suis hélas que super débutante en VBA et je sens pourtant que ton fichier est LA solution à bon nombre de mes problèmes.
Tu me pardonneras pour mes questions basiques mais je vais profiter de ta science .
Où dois je définir les largeurs de mes colonnes ? Faut il que je modifie ta macro ?

Ton aide me serait extrèmenent précieuse
Merci encore
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonjour Olympia, Bonjour Chris (Miss Super Astuce)

Je tiens à te dire de suite, Olympia, que tu risque d'avoir un peu de formation intensive et accélérée en VBA avec moi !!!

Non disons que pour démarrer on peut voir si tu t'en sors pour adpter cette démo toute seule...

Fichier Démo Téléchargeable => Lien supprimé

Donc dans cette démo, dans le Private Module du UserForm (Click Droit depuis Explorateur de Projet de VBE (Visual Basic Editor)

Tu dois trouver ceci :
Private Sub UserForm_Initialize()
Dim CTRL As Control


For Each CTRL In Me.Controls
   
If TypeOf CTRL Is MSForms.SpinButton Then
       
With CTRL
            .Max = 50
            .Min = 0
            .Value = 20
       
End With
   
End If
Next


Que tu vas remplacer par celà :
Private Sub UserForm_Initialize()
Dim CTRL As Control


With Me
    .SpinButton1.Value = 10
    .SpinButton2.Value = 5
    .SpinButton3.Value = 15
    .SpinButton4.Value = 25
End With

Attention ne touches pas au reste du code pour l'instant... Et reviens me dire si tu as les valeur que tu veux, of course, 10, 5, 15 et 25 sont là pour être changé à ta guise, c'est juste pour initialiser les SpinButtons à la valeurs que tu souhaites et pas tous à 20 comme dans la démo initiale...

Voilà pour l'instant, ça te fera passer un premier 'Test d'Aptitude Thierry's Démo Trafiqueuse Certified' lol

Reviens nous dire
@+Thierry

EDITION !! (Soucis de mise en Forme du Post)

Message édité par: _Thierry, à: 03/04/2005 17:20
 

Sylvie

XLDnaute Accro
Thierry, Je suis sure que tu ressembles un peu au père Noel !!

J'ai appliqué à la lettre tes instructions en me payant le luxe d'adapter la largeur de mes 4 colonnes à la dimension voulue et tout fonctionne très bien.
J'ai fait l'import dans mon logiciel de paie et je semble tout près du but. Il me manque 'juste' une cinquième colonne (qui contiendra du format nombre à 3 decimales).

OH Père Noel, Thierry, peux tu m'aider à rajouter ma cinquième colonne ??

Mille Merci !!!
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bravo Olympia,

Je ne suis pas le père Noël, mais j'aime bien aider et ma récompense c'est de voir que grace à mes explications tu t'en sors comme une Chef !

Par contre il ya pas des alignements droite et gauche à faire aussi ?

Et donc les valeur numériques, sont elles forrmattées comme il faut avec deux décimales etc ?

L'idéal serait que tu me postes un exemple réel avec une feuille Excel, et un txt fini... même avec qu'une seule ligne sans donnée confidentielle (of course)

je t'attends
@+Thierry
 

Sylvie

XLDnaute Accro
Thierry,

je te joins en zip :
- un extrait de l'aide de mon logiciel détaillant la structure du fichier txt.
- le fichier excel fait avec 4 tes colonnes. J'ai fait un essai sur 2 salariés (les matricules 0006 et 0009 et cela semble marcher super).
Il ne manque plus que d'importer les nombres en face de chaque section analytique (ou numéros de chantiers si cela peut être plus clair)
Bizarrement je n'ai aucun problème de cadrage ! mais ca va peut être venir avce la 5 eme colonne
- un exemple de fichier txt exporté de mon logiciel concernant trois salariés (matricules 0008, 0009,0024).

Les deux dernières colonnes qui sont à 0 dans le fichier txt ne m'interessent pas et je peux donc me limiter aux 5 premières colonnes.

Le but ultime est de permettre une ventilation de mon côut salarial par salarié (identifié par leur matricule) en fonction des chantiers (appelés sections analytiques) suivant une ventilation en pourcentage que j'aurais au préalable fait dans excel et que je recopierai donc dans ton tableau magique !

RE mille merci (ca doit déjà faire 2.000)

[file name=Analytique TXT_20050403193500.zip size=23278]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Analytique TXT_20050403193500.zip[/file]
 

Pièces jointes

  • Analytique TXT_20050403193500.zip
    22.7 KB · Affichages: 26

_Thierry

XLDnaute Barbatruc
Repose en paix
=> DEMO Export TXT Fixed Lenght avec Cadrage

Bonsoir Olympia, Chris, le Forum

Bon alors c'est bien comme ça, on peut avancer sur de bonnes bases, car dans ce genres de programmes très précis à rédiger c'est très embêtant d'avoir un interlocuteur ou une interlocutrice qui s'explique mal et ne comprend pas mes explications, ...voir certain fils de la journée (Wooouarf).

Avec toi c'est un plaisir, en plus tu as passé le 'Thierry's Démo Trafiqueuse Certified'

Par contre la suite aurait été plus longue à t'expliquer qu'à faire moi même et en plus je suis sorti un moment...

Mais c'est parfait ce que tu m'a envoyé, ça permet de te faire une mini (mimi aussi) application pour tes besoins (et les miens aussi car j'arrête pas de faire ce genre de trucs pour le boulot et le coup de traiter des champs cadré à droite/gauche etc est interressant)

J'ai traité tous les champs (les Septs), car en général les Programmes d'Imports de données de logiciel n'aime pas avec des champs vide vide, il leur faut au minimum des espaces... Normalement je devrais être bon du premier coup, j'ai fait pas mals de tests, mais on ne sait jamais...

Voilà donc Olympia, te voici si ce n'est au sommet de l'Acropole, au sommet d'un 'Téyxté' prèt à importer.

Bonne Soirée
@+Thierry

PS sans faire une pub exagérée, mais par curiosité c'est quoi ton Soft de Compta ?
[file name=USF_Export_TXT-Fixed-Lenght_20050403223148.zip size=37192]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/USF_Export_TXT-Fixed-Lenght_20050403223148.zip[/file]
 

Pièces jointes

  • USF_Export_TXT-Fixed-Lenght_20050403223148.zip
    36.3 KB · Affichages: 176

Sylvie

XLDnaute Accro
Re:=> DEMO Export TXT Fixed Lenght avec Cadrage

Re bonsoir Thierry,

ce que tu as pondu est tout simplement génial !
Tout y est !! Et bien plus encore que ce que je pouvais espérer !
Non, vraiment c'est fantastique et tu n'imagines pas le temps que tu vas me faire gagner.
Je viens de tester le tout et c'est tout bonnement parfait !
J'aimerais avoir le 1/3 du quart de tes connaissances mais meme mon ouvrage de chevet (VBA pour les nuls) n'y suffira pas !

Vraiment merci !
Je te dois une fière chandelle !

Tu viens de faire une passerelle entre Excel et le logiciel de paie édité par Sage (ligne 100) avec récupération directe dans les bulletins salariés d'une ventilation analytqiue que je m'évertue à faire tous les mois sur Excel pour les quelques 80 salariés d'une TPE (80 c'est en période haute et pécisemment cette période commence ! ) qui travaillent respectivement sur 1 à 8 chantiers par mois. Je te laisse imaginer le boulot surtout si je te dis que je ressaisissais scrupuleusement pour chaque salarié (et chaque mois) dans le logiciel Sage la ventilation que je venais de faire sous Excel (car impossible de la faire directement sous Sage). Il faut juste que ma section analytique ait été créée dans Sage sinon j'ai un message d'erreur mais c'est pinuts compte tenu du temps que tu viens de me faire gagner.

Chapeau Bas Monsieur Thierry !

(ps : je sais désormais à quelle porte frapper )

:)

Bonsoir
Olympia
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:=> DEMO Export TXT Fixed Lenght avec Cadrage

Bonjour le Forum, Bonjour Olympia, Bonjour Chris

Ahhh Ben Voilà un Gentil Post qui va bien me faire Commencer la Semaine !!!


Merci d'être revenue pour me préciser aussi que c'est pour Sage...
En plus, je te le donne en mille... Tu connais le Logiciel de Paie de ma Boite.... C'est Sage !!! Comme quoi !

Bonne Journée
@+Thierry

Message édité par: _Thierry, à: 04/04/2005 08:07
 

Jsveh

XLDnaute Nouveau
Re:=> DEMO Export TXT Fixed Lenght avec Cadrage

Bonjour,

Tout d'abord merci et bravo à Thierry, car j'ai moi même profité de son fichier et il m'a été bien utile.... :)

Par contre, je me demandais, s'il était possible d'intégrer (en plus de pouvoir régler la taille des colonnes) un séparateur de type ';' ???

Car pour pouvoir réintégrer des données dans un progiciel de gestion interne, je dois créer un fichier texte (à 7 colonnes) avec des tailles de colonnes réglables par moi même, mais surtout ayant un séparateur ';'.

En cherchant un peu dans le forum, j'ai vu que Thierry avait proposé une solution pour les séparateurs, mais le réglage de la taille n'était pas proposé

Y-a-t-il une solution ???

Merci et bonne journée
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:=> DEMO Export TXT Fixed Lenght avec Cadrage

Bonjour Jsveh, Olympia, le Forum

En fait Jsveh, ta question me semble vraiment bizarre, car si on force des espaces pour des 'Fixed Lenght' pour chaque champs, c'est qu'en général le logiciel de destination 'comprend' ce qu'il doit lire à différents numéros de colonnes précis... Donc il n'y a pas de Séparateur !

Enfin 'le client est Roi' en reprenant la démo que j'ai faite pour Olympia et son Soft Sage, voici ce qu'il faudrait faire pour avoir un séparateur ';' aligné en fin de chacun des Sept Champs

Sub BuildTXT()
Dim Plage As Object, Line As Object
Dim TheText As String, ThePath As String, TmpString As String
Dim TheFile As Variant
Dim L As Integer
Dim C As Byte, X As Byte, i As Integer
Dim FichierTXT As String
Dim Separator As String

Separator = Chr(59)
'=> ';'

With UserForm1
FichierTXT = .TextBox8 & .ListBox1 & .ListBox2
End With

ThePath = ThisWorkbook.Path & '\\' & FichierTXT
TheFile = Application.GetSaveAsFilename(ThePath, 'Fichier,*.txt')
If TheFile = False Then Exit Sub
L = 4
   
   
Set Plage = TXT.Range('A5:D' & TXT.Range('A65536').End(xlUp).Row)
   
Open TheFile For Output As #1

   
For Each Line In Plage.Rows
    L = L + 1
    TheText = ''
       
       
For C = 1 To 7
       
Select Case C
           
Case 1
                TmpString = ''
               
For i = Len(CStr(TXT.Cells(L, C).Text)) To UserForm1.TextBox1 - 1
                TmpString = TmpString & Chr(32)
               
Next
                TheText = TheText & Left(CStr(TXT.Cells(L, C).Text), UserForm1.TextBox1) & TmpString & Separator
           
Case 2
                TmpString = ''
               
For i = Len(CStr(TXT.Cells(L, C).Text)) To UserForm1.TextBox2 - 1
                TmpString = TmpString & Chr(32)
               
Next
                TheText = TheText & Left(CStr(TXT.Cells(L, C).Text), UserForm1.TextBox2) & TmpString & Separator
           
Case 3
                TmpString = ''
               
For i = Len(CStr(TXT.Cells(L, C).Text)) To UserForm1.TextBox3 - 1
                TmpString = TmpString & Chr(32)
               
Next
                TheText = TheText & Left(CStr(TXT.Cells(L, C).Text), UserForm1.TextBox3) & TmpString & Separator
           
Case 4
                TmpString = ''
               
For i = Len(CStr(TXT.Cells(L, C).Text)) To UserForm1.TextBox4 - 1
                TmpString = TmpString & Chr(32)
               
Next
                TheText = TheText & Left(CStr(TXT.Cells(L, C).Text), UserForm1.TextBox4) & TmpString & Separator
           
Case 5
                TmpString = ''
               
For i = Len(CStr(TXT.Cells(L, C).Text)) To UserForm1.TextBox5 - 1
                TmpString = Chr(32) & TmpString
               
Next
                TheText = TheText & TmpString & CStr(TXT.Cells(L, C).Text) & Separator
           
Case 6
                TmpString = ''
               
For i = Len(CStr(TXT.Cells(L, C).Text)) To UserForm1.TextBox6 - 1
                TmpString = TmpString & Chr(32)
               
Next
                TheText = TheText & TmpString & CStr(TXT.Cells(L, C).Text) & Separator
           
Case 7
                TmpString = ''
               
For i = Len(CStr(TXT.Cells(L, C).Text)) To UserForm1.TextBox7 - 1
                TmpString = TmpString & Chr(32)
               
Next
                TheText = TheText & TmpString & CStr(TXT.Cells(L, C).Text) & Separator
       
End Select
       
Next
   
Print #1, TheText
 
Next
 
Close #1

Set Plage = Nothing
Unload UserForm1
End Sub

Bonne Journée
@+Thierry
 

Sylvie

XLDnaute Accro
Re:=> DEMO Export TXT Fixed Lenght avec Cadrage

Bonjour le Forum,

les heures et les jours passent et Thierry fait preuve d'un brio sans faille.

Respect Monsieur Thierry.... sans oublier tous les autres bien sur; vous contribuez tous à nous sortir de situations parfois complexes (enfin pour certains seulement) et à la fois vous nous requinquez, vous nous redonnez espoir en nous faisant croire que tous nos problèmes ont sans doute une solution.


Merci à tous ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 989
dernier inscrit
jralonso