Bonjour,

Je souhaite à partir un fichier excel (où des infos sont récupérées, mettre en forme sous notes en respectant un certain format. Voilà ce que cela devrait donner :

0000165978LVY8 01910691860188MR MACHIN 0048516395020100129201101317085422 196787,10388900700 0600000015 30000,0020100202MR MACHIN 140 12
en d'autres termes 8 caratères +6 caractères collés + 8 espaces+11 caractère+le nom. A la 66ème position 16 caractères ( deux dates format yyyymmdd) et à la 136ème position un montant format 00000,00)

J'ai essayé d'écrire cela en formule excel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
=TEXTE(Feuil1!A4;"00000000") & Feuil1!B4 &  REPT(" ";8) & TEXTE(Feuil1!C4;"00000000000") & Feuil1!D4 & REPT(" "; 32-NBCAR(Feuil1!D4))&  REPT(" ";11) & Feuil1!E4 & Feuil1!F4 & REPT(" ";54 - NBCAR(TEXTE(Feuil1!G4;"0,00"))) & TEXTE(Feuil1!G4;"0,00")
et sous vba :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 i = 2
    While WS.Cells(i, 1).Text <> ""
        Temp(1) = Left(WS.Cells(i, 1).Text + Space(8), 8)
        Temp(2) = Left(WS.Cells(i, 2).Text + Space(11), 11)
        Temp(3) = Left(WS.Cells(i, 3).Text + Space(11), 11)
        Temp(4) = Left(WS.Cells(i, 4).Text + Space(32), 32)
        Temp(5) = WS.Cells(i, 8).Text + Right("00" + WS.Cells(i, 9).Text, 2) + Right("00" + WS.Cells(i, 10).Text, 2)
        Temp(6) = WS.Cells(i, 5).Text + Right("00" + WS.Cells(i, 6).Text, 2) + Right("00" + WS.Cells(i, 7).Text, 2)
        Temp(7) = Right(Space(13) + WS.Cells(i, 11).Text, 13)
        Line = Temp(1) + Temp(2) + Space(3) + Temp(3) + Temp(4) + Space(11) + Temp(5) + Temp(6) + Space(41) + Temp(7)
        Print #1, Line
        i = i + 1
    Wend
 
    Close #1
 
    WB.Close
Le problème c'est qu'aucune des deux formules ne fonctionne correctement, sous vba il ne prend le montant. Pouvez vous m'aider ?