Conversion xls -> txt avec longueur fixe

Gortack

XLDnaute Nouveau
Bonjour à tous,

Je travaille sur une base de données (sous foxpro) qui permet l'exportation des données uniquement sous excel. Cette BDD comporte des champs classiques tels que des noms, prénoms, adresse etc

Afin de réaliser l'impression d'un document personnalisé, l'imprimeur avec lequel je travaille souhaite avoir un fichier txt avec des champs de longueur défini.

L'exportation de mon logiciel de gestion vers xls ne pose pas de souci particulier.

Seulement excel ne semble pas pouvoir exporter ce fichier après dans le format souhaité par cet imprimeur.

Grosso modo, pour réussir l'exportation il faudrait un fichier txt ou chaque champ serait compris dans un espace fixé (par exemple de 30 caractères). Les différents champs se suivraient donc, sans séparateur, juste cette longueur fixé qui permettrait à ce logiciel de publipostage de savoir quand changer de champ.

Avez vous connaissance de telles possibilités ? Si oui, une petite aide me serait d'un très grand secours :)

Avec mes remerciements par avance ;)
 

Hervé

XLDnaute Barbatruc
Re : Conversion xls -> txt avec longueur fixe

bonjour

peut etre une solution à travers ce code :

Code:
Sub Bouton1_QuandClic()
Dim plage As Range
Dim i As Integer
Dim j As Integer
Dim t As String, texte As String

Set plage = Range("a1").CurrentRegion

Open "c:\test.txt" For Output As #1
For i = 1 To plage.Rows.Count
    For j = 1 To plage.Columns.Count
        t = Space(30 - Len(plage(i, j))) & plage(i, j)
        texte = texte & t
    Next j
Next i

Print #1, texte
Close
End Sub

ce code crée un fichier txt (test.txt) en c:\

exemple en piece jointe.

salut
 

Pièces jointes

  • Classeur3.zip
    6.6 KB · Affichages: 453
  • Classeur3.zip
    6.6 KB · Affichages: 435
  • Classeur3.zip
    6.6 KB · Affichages: 456

ODVJ

XLDnaute Impliqué
Re : Conversion xls -> txt avec longueur fixe

Bonjour à tous,

j'ai repris le fichier d'Hervé et j'ai ajouté un 2ème onglet sans macro avec la possibilité de choisir la largeur de blocage des champs.

par contre, il faut adapter les formules et terminer par du collage valeur.

en bref, c'est plus long et c'est moins bien.

A+
 

Pièces jointes

  • xld_Classeur3.xls
    28 KB · Affichages: 463

chris

XLDnaute Barbatruc
Re : Conversion xls -> txt avec longueur fixe

Bonjour

Si j'ai bonne mémoire il y a aussi une solution manuelle :
  • compléter chaque valeur ou titre de la 1ère ligne par des espaces de façon à obtenir la longueur voulue
  • enregistrer en format prn.
 

Youpla

XLDnaute Nouveau
Re : Conversion xls -> txt avec longueur fixe

Bonjour,
je sait que ce sujet est vieux . Mais il m'a bien servi donc je le remonte et j'en profite pour partager la macro citée ci-dessus que j'ai modifiée.

Maintenant elle comporte: 2 onglets,
  • onglet 1: vous mettez vos données ici
  • onglet 2: vous pouvez définir:
    1. le nom du fichier à générer,
    2. son emplacement,
    3. le nombre de colonnes de votre fichier
    4. La taille de chaque colonne

Sur l'onglet 1 vous avez un bouton "Exécuter" qui génèrera le fichier au non et au chemin spécifié.

A savoir: le programme s'arrêtera à la première cellule vide dans la colonne A de l'onglet 1
 

Pièces jointes

  • FichierALongeurFixe.xls
    39 KB · Affichages: 1 063
Dernière édition:

IClement

XLDnaute Nouveau
Re : Conversion xls -> txt avec longueur fixe

Bonjour à tous,

Je remonte le sujet car je fais face au même problème que ce qui a déjà été évoqué mais d'une façon un peu plus poussée.

En effet, je dispose d'un tableau composé de 70 champs (de largeur variable) à partir duquel je dois exporter un fichier txt à longueur fixe.
J'ai bien lu vos précédent messages, mais ils sont globalement axés sur des champs de largeur fixe, ainsi que le fichier proposé par Youpla (qui semble parfaitement répondre à ma problématique), mais malheureusement il semble ne pas fonctionner.

Je joint le fichier sur lequel je travaille en espérant que vous pourrez me donner quelques pistes.

Merci d'avance pour votre aide : )
 

Pièces jointes

  • Fic_Long_Fixe.xls
    70 KB · Affichages: 482

Youpla

XLDnaute Nouveau
Re : Conversion xls -> txt avec longueur fixe

J'ai regardé ton fichier et le problème est simple:

la macro excel n'est pas faite pour avoir une ligne d'entête.
Donc si la taille d'un texte est superieur à la taille spécifiée dans l'onglet 2 ça plante.

Dans ton cas tu dis que la première colonne a une taille de 9 alors que le champ A2 à une taille supérieur à 9.

Pour que la macro fonctionne respecte simplement la règle suivante:
Taille du champ inférieur où égale à la taille demandée.
 

IClement

XLDnaute Nouveau
Re : Conversion xls -> txt avec longueur fixe

Effectivement, je n'avais tout simplement pas pris en compte que les cellules 1 et 2 (qui me servent de repère) étaient prise en compte pour la génération du fichier.

À présent tout fonctionne, merci pour ton aide ;-)
 

stephix

XLDnaute Nouveau
Re : Conversion xls -> txt avec longueur fixe

Bjr Youpla ... j'ai essayer d'exécuter ton fichier mais ça me sort un message d'erreur à ce niveau...

t = t & Space(Tableau(i - 1) - Len(Cells(ligne, i).Value))

capture.png
 

Pièces jointes

  • capture.png
    capture.png
    17.2 KB · Affichages: 278
  • capture.png
    capture.png
    17.2 KB · Affichages: 236

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 069
Messages
2 085 042
Membres
102 765
dernier inscrit
richdi