Génération fichier textes formatés depuis VB Excel

Génération fichier textes formatés depuis VB Excel - VB/VBA/VBS - Programmation

Marsh Posté le 20-12-2007 à 09:59:15    

Bonjour,
 
Je suis un peu en lute avec Visual Basic excel... Voici ce que je cherche à faire.
 
Récupérer des données dans des cellules pour les mettre dans un fichier texte.
Jusqu'ici rien de réellement problématique...
 
Mais les données dans le fichiers txt doivent être placées de manière précise :
Cellule B1 du caractère 1 à 10,
Un espace de 20 caractères,
Cellule B2 du caractère 30 à 45... Ect
 
Le problème c'est que la cellule B1 ne fait pas forcement 10 caractère et en fonction de la cellule je peux choisir de combler à gauche ou à droite par des espaces ou des caractères.
 
Je suis bloqué sur cette partie la.  
 
Pour info je suis un noob sur VB (au cas ou vous n'auriez pas remarqué  :D  )
 
Benjam
 
Merci d'avance pour votre aide

Reply

Marsh Posté le 20-12-2007 à 09:59:15   

Reply

Marsh Posté le 20-12-2007 à 12:59:27    

Jour Bon, une ébauche à toi de l'affiner et adapter


Option Explicit
 
Sub Tst()
Dim Fichier As Variant
    ChDrive ThisWorkbook.Path
    ChDir ThisWorkbook.Path
    If IsEmpty(ShDatas.UsedRange) Then
        MsgBox "Feuille Vide : Rien à enregistrer", vbOKOnly + vbInformation, "Info"
        Exit Sub
    End If
    Fichier = Application.GetSaveAsFilename(InitialFileName:="Essai", fileFilter:="Fichier Txt (*.txt), *.txt" )
    If Fichier <> False Then Ecrire Fichier
End Sub
 
Private Sub Ecrire(ByVal NomFichier As String)
Dim Chaine As String
Dim r As Long, c As Integer
Dim NumFichier As Integer
Dim FirstRow As Long, FirstCol As Integer
Dim LastRow As Long, LastCol As Integer
 
    With ShDatas
        FirstRow = .Cells.Find("*", .Cells(.Cells.Count), xlFormulas, xlWhole, xlByRows, xlNext).Row
        LastRow = .Cells.Find("*", .Cells(.Cells.Count), xlFormulas, xlWhole, xlByRows, xlPrevious).Row
        FirstCol = .Cells.Find("*", .Cells(.Cells.Count), xlFormulas, xlWhole, xlByColumns, xlNext).Column
        LastCol = .Cells.Find("*", .Cells(.Cells.Count), xlFormulas, xlWhole, xlByColumns, xlPrevious).Column
    End With
     
    Close
    NumFichier = FreeFile
 
    Open NomFichier For Output As #NumFichier
        For r = FirstRow To LastRow
            Chaine = ""
            For c = FirstCol To LastCol
                Chaine = Chaine & Cells(r, c) & String(20 - Len(Cells(r, c)), " " )
            Next c
            Print #NumFichier, Chaine
        Next r
    Close #NumFichier
End Sub


Message édité par kiki29 le 20-12-2007 à 14:02:07
Reply

Marsh Posté le 20-12-2007 à 14:50:41    

Jou Bon à toi Kiki,
 
(j'avais pourtant dit que j'étais un noob)
 
 :whistle:  
 
Je n'ai pas tout compris.
 
Par contre ce qui est sur c'est que j'ai repéré des bouts de codes qui vont m'être bien utiles !
 
Quand au reste je pense que l'aide VB y répondra ;-)
 
Merci encore pour ton aide,
 
 :hello:  
 
Bye
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed