Ecriture de valeur en utilisant les formats d'écriture du fortran

Contenu du snippet

Ce module à été developpé pour :
-traduire des sources fortran en visual basic
-utiliser les possibilités du formatage fortran que je n'ai pas retrouvé dans la fonction format() à savoir l'affichage des nombres et textes avec une longueur fixe
Ceci permet surtout de créer des fichiers texte avec un alignement vertical des valeurs.

Source / Exemple :


Function fFormat(ByVal valeur As Variant, strFormat As String) As String
' mise en forme du type fortran In, In.m, Fn.m, An
'
' permet l'écriture d'une valeur avec une longueur fixe
'
Dim nbCar As Integer, nbDeci As Integer, posPoint As Integer, nbZero As Integer

posPoint = InStr(1, strFormat, ".")
If posPoint > 0 Then
   nbCar = Val(Mid(Left(strFormat, posPoint - 1), 2))
   nbDeci = Val(Mid(strFormat, posPoint + 1))
Else
   nbCar = Val(Mid(strFormat, posPoint + 2))
   nbDeci = 0
End If
If Left(strFormat, 1) = "I" Then
   '--- mise en forme des entiers ---
'   3 possibilités :
'   In : chaine de caractères de longueur n tronquée à droite si necessaire
'   I  : chaine de longueur égale à la longueur de la chaine à mettre en forme
'
   fFormat = Format(valeur, "0")
   If nbDeci > nbCar Then nbDeci = nbCar
   If strFormat <> "I" Then
      If Len(fFormat) > nbCar Then
         fFormat = String(nbCar, "*")
      Else
         If nbDeci > 0 Then
            nbZero = nbDeci - Len(fFormat)
            If nbZero < 0 Then nbZero = 0
            fFormat = String(nbZero, "0") & fFormat
         End If
         fFormat = String(nbCar - Len(fFormat), " ") & fFormat
      End If
   End If
ElseIf Left(strFormat, 1) = "F" Then
   '--- mise en forme des réels ---
   fFormat = Format(valeur, "#." & String(nbDeci, "0"))
   If Len(fFormat) > nbCar Then
      fFormat = String(nbCar, "*")
   Else
      fFormat = String(nbCar - Len(fFormat), " ") & fFormat
   End If
ElseIf Left(strFormat, 1) = "A" Then
'   --- mise en forme des textes ---
'   2 possibilités :
'   An : chaine de caractères de longueur n tronquée à droite si necessaire
'   A  : chaine de longueur égale à la longueur de la chaine à mettre en forme
'
   If strFormat <> "A" Then
      If Len(valeur) > nbCar Then
         'chaine de longueur > longueur d'écriture autorisée -> troncation
         fFormat = Left(valeur, nbCar)
      Else
         'ajout de blancs pour atteindre la longueur voulue
         fFormat = valeur & String(nbCar - Len(valeur), " ")
      End If
   Else
      fFormat = valeur
   End If
ElseIf Right(strFormat, 1) = "X" Then
'   --- mise en forme d'espaces ---
'   nX : chaine composée de n espaces
   fFormat = String(Val(Left(strFormat, Len(strFormat) - 1)), " ")
Else
   fFormat = ""
End If
End Function

Conclusion :


en espérant que cela aidera quelqu'un

exemple: ":" & fFormat(11.25,"F6.2") & ":" --> : 11.25:
":" & fFormat(12,"I6.6") & ":" -->:000012:
":" & fFormat(12,"I6") & ":" -->: 12:

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.