Xls-fichier .lin pour données

  • Initiateur de la discussion Initiateur de la discussion gatti
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

gatti

Guest
Bonjour,
j’ai un fichier excel avec plein de données que j’aimerais importer dans un programme professionnel au format lin.

Le fichier xls contient 7 colones
Nom A B C D E F

J’aimerais trouver une macro qui :
1) lise la table et crée pour chaque ligne un fichier (txt ou lin)
2) avoir une possibilité d’ajouter automatiquement des données (constantes)

Je ne sais pas si c’est réalisable…

Pour le point 2 voila un exemple de la structure :

Fichier intitulé : cc1.lin (suivants : cc2.lin, cc3.lin, ...)
L’Nom’

K K X valeurA Y valeurB Z valeurC K 2
K M X valeurD Y valeurE Z valeurF K 2

E

Merci d’avance !
 

Pièces jointes

Re : Xls-fichier .lin pour données

Merci 🙂

Mais dis moi si je veux "imbriquer" e fonction If... then... Else (if...then...else) comment faire?
Car j'aimerais que le programme teste si il n'y a rien en Bi (collone B ligne i) il "goto next i" et saut ainsi tous le traitement de la ligne!

VBA c'est bien mais c'est un case tête chinois des fois!^^
 
Re : Xls-fichier .lin pour données

re:

C'est deja prévu, si le montant est à Zéro, le traitement de la ligne est simple elle est remise à ""

partie du code :
Code:
        For j = 1 To 6 ' Il y a 6 valeurs, 3 KK et KM
            decal = decal + 1 ' Incrementation du decalage
            If Cells(i, j + 1) = 0 Then ' Si la valeur = 0
                ligne(j) = "" ' remise à zero de la ligne
            Else
Maintenant si tu ne veux pas des lignes blanches dans le fichier c'est là :
Code:
For j = 1 To 6: Print #1, ligne(j): Next j ' Mise en place dans le fichier des lignes Construites
à modifier comme cela
Code:
For j = 1 To 6
     if ligne(j) > "" then Print #1, ligne(j)
Next j

Une question, les fichiers générés sont il exploitables ??
 
Re : Xls-fichier .lin pour données

Salut, justement je dois avoir un pack de donnée complétés (boucler la boucle en quelques sortes) pour voir vérifier car sinon le programme refuse de continuer.

Le problème des ligne je pensais au fichier excel si FX, FY, FZ, MX, MY et MZ sont vide ou = 0 il ne doit pas y avoir de fichier.
 
Re : Xls-fichier .lin pour données

re:

Ok, j'ai compris mais je ne pensais pas que toutes les valeur pouvaient etre à zero

voici la macro, avec en rouge les lignes à modifier, desolé, je n'aime pas le GOTO, et je les evite au maximum

Code:
Sub Bouton3_QuandClic()
    Dim i As Long, j As Integer, decal As Integer, valeur As Double, ligne(1 To 6), neg As Boolean
    For i = 4 To Range("A65536").End(xlUp).Row ' Je commence à la ligne 4 jusqu'à la dernier ligne
[COLOR="red"]        For j = 1 To 6
            If Cells(i, j + 1) <> 0 Then Exit Sub
        Next
        If j < 7 Then[/COLOR]
            Open ThisWorkbook.Path & "\" & Range("A" & i) & ".lin" For Output As #1 ' Ouverture du fichier en ecriture
            Print #1, Range("tete") ' J'ecris l'entete dans le fichier
            Print #1, Chr(13) ' j'ecris une ligne vierge
            decal = 0 ' Decalage pour la position de la valeur, mettre les 0.0 (6 valeur, 2 groupes de 3
            For j = 1 To 6 ' Il y a 6 valeurs, 3 KK et KM
                decal = decal + 1 ' Incrementation du decalage
                If Cells(i, j + 1) = 0 Then ' Si la valeur = 0
                    ligne(j) = "" ' remise à zero de la ligne
                Else
                    If j > 3 Then ligne(j) = "K M " Else ligne(j) = "K K " ' Entete de la ligne en fonction de la valeur
                    valeur = Cells(i, j + 1) ' recuperation de la valeur de la cellule
                    If valeur < 0 Then neg = True Else neg = False ' Mise en place de neg = true si valeur negative
                    valeur = Abs(valeur) * 100 ' Prendre la valeur absolu et * 100 pour enlever la virgule
                    ligne(j) = ligne(j) & Left("0.0 0.0 0.0 ", (decal - 1) * 4) ' mise en place des 0.0
                    If neg Then ligne(j) = ligne(j) & "-" ' ajout du signe si valeur negative
                ' Ajout des Zeros derieres pour avoir un valeur sur 10 chiffres
                    ligne(j) = ligne(j) & Left(CStr(valeur) & "00000000000", 10)
                ' Mise en place de l'Exposant E- (12 - le nombre de caracteres dans valeur)
                    ligne(j) = ligne(j) & "E-" & CStr(12 - Len(CStr(valeur))) & " "
                ' Ajour des series de Zero
                    ligne(j) = ligne(j) & Left("0.0 0.0 0.0 ", (3 - decal) * 4)
                ' Mise en^place des valeurs nules
                    ligne(j) = ligne(j) & "0000000000+E0 0000000000+E0 0000000000+E0"
                    If j = 3 Then decal = 0 ' Reinitialisation du decalage pour 2eme serie
                End If
            Next j ' Traitement de la valeur suivante
            
            For j = 1 To 6: Print #1, ligne(j): Next j ' Mise en place dans le fichier des lignes Construites
            Print #1, Range("pied") ' Ecriture du pied de page
            Close #1 ' Fermeture du fichier
    '        MsgBox "Fichier  : " & ThisWorkbook.Path & "\" & Range("A" & i) & ".lin" & vbCrLf & vbCrLf & _
            Range("tete") & vbCrLf & vbCrLf & ligne(1) & vbCrLf & ligne(2) & vbCrLf & ligne(3) & _
            vbCrLf & ligne(4) & vbCrLf & ligne(5) & vbCrLf & ligne(6) & vbCrLf & Range("pied")
        [COLOR="Red"]End If[/COLOR]
    Next i ' Ligne de la base suivante
End Sub
 
Re : Xls-fichier .lin pour données

re:

Pardonne moi, trop fatigué le Wil, (J'ai travaille cette nuit de 19:00 à 7:00 et le matin je n'arrive pas à dormir) 🙁

Je suis confus, erreur grossiere, ton fichier en retour

J'ai ecrit exit sub au lieu de exit for (et en plus je ne l'ai meme pas vu de suite)
 

Pièces jointes

Re : Xls-fichier .lin pour données

re:

Je ne vois pas de Guillemets dans les fichiers, je viens de refaire un essai, il n'y a aucun guillemet en tant que s'éparateur de valeur

Maitenant si tu parles de la 1ere ligne, c'est un copier coller que j'ai recupéré de ton fichier et que j'ai mise dans la feuille param en B1, cellule nommée tete

je te fais parvenir les fichiers générés par la macro
 

Pièces jointes

Re : Xls-fichier .lin pour données

Oui oui wil, je ne te jette pas la pierre c'est moi qui me suit trompé.

Mais le programme se plante quand il lit le fichier...

L'erreur est résolue c'est le <<'>> l'apostrophe qui pose problème 😀 sisi regarde bien il ne sont pas les même avant P1[...] et après [...](MyMax) .

je profite encore une fios pour te remercier!

PS: dois-je marqué mon topic comme résolu?
 
Re : Xls-fichier .lin pour données

re gatti

Il n'y a pas de resolu dans ce forum, j'ai vu plusieurs post de mois voire d'années anterieures etre relancés pour des questions tres proches ou des precisions.

Quand c'est coché Résolu, on y fait moins attention...........

Donc pas de resolu

L'inconvenient est que l'on ne sait pas si le post est resolu et que ca oblige à aller voir mais...

L'interet c'est qu'un post ancien peut etre revisité à cause d'une nouvelle question et avoir d'autres solutions plus interressantes que nos propres habitudes 😀
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
570
Retour