Probleme avec exposants [Résolu]

fabientoupeti 9 Messages postés mercredi 21 mars 2007Date d'inscription 14 juin 2007 Dernière intervention - 17 avril 2007 à 13:04 - Dernière réponse : Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention
- 18 avril 2007 à 10:00
bonjour,
comme le dit le sujet j'ai un problème avec le e de exposant et un fichier texte.
j'utilise VB en macro avec CATIA (logiciel de CAO) donc je ne peux et je ne veux pas utiliser excel.
Pour cerner le sujet:
j'ai un fichier texte comportant 20000 env. avec en 1º colonne des valeurs allant de 0 à 100 aléatoire sauf 5, 10,15...
je lis ce fichier ligne à ligne dès que je repère un 5 je stocke le resultat d'une operation sur les colonnes 4 et 5 dans un nouveau fichier txt, on va l'appeler sum5.txt.
ensuite dans sum5.txt qui comporte une colonne avec sur chaque ligne une valeur differente, je repere la valeur maximale de  sum5.txt et je la stocke dans la variable max5

mais voilà il y a un truc que je ne comprends pas.
quand je fais mes operations sur mes colonnes 4 et 5  tant que le resultat  est  0,** la valeur dans mon fichier texte (sum5.txt) s'ecrit comme cela (0,**)
par contre quand mon resultat est 0,0** la valeur de mon fichier texte (sum5.txt) s'écrit *,**E-2

et part la suite j'ai un probleme pour trouver la valeur maximale ( le E n'est pas considéré comme exposant).

Comment puis je faire pour régler ce problème?
est ce que ça peut venir du fait que je n'ai pas préciser le type de ma variable d'operations?
Si c'est ça quels types dois-je préciser

Merci d'avance

fabientoupeti
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
fabientoupeti 9 Messages postés mercredi 21 mars 2007Date d'inscription 14 juin 2007 Dernière intervention - 17 avril 2007 à 16:06
3
Merci
Merci pour ta rapidité de réponse, c'est vraiment cool c'est forum.
c'était pour te dire que j'avais continué à chercher de mon côté et j'ai fini par trouver, en fait j'ai utiliser tout simplement la fonction Round avec un nombre de decimal et le tour est joué, je n'ai plus d'exposant et je peux comparer mes valeurs obtenus
j'ai utilisé Round juste après le résultat de l'opération de mes 2 colonnes.

voilivoilou
merci encore pour ton aide

Fabientoupeti

Merci fabientoupeti 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de fabientoupeti
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 17 avril 2007 à 14:58
0
Merci
Bonjour,
Tu écrit donc tes fichier grace à un code VB. Connais tu le fonction format? Peut être pourais tu t'en servir à l'écriture :
format(Valeur,"0.0")
Par contre attention le nombre de 0 apprés le point est important c'est ta présision ce qui veut dire que si tu fais :
format(12.12,"0.0")
Le fonction vas te sortire un 'truc' du genre 12,1 (je dis 'truc' car si c'est un point une virule ou autre séparateur décimal dépand de la configuration régional de windows) Si non tu teste le nombre de décimal que contiens ta valeur et tu crée ta chaine format en fonction.
Pour tester le nombre de décimal :

(à mettre dans un module)
Public Function NombreDec(ByVal Valeur As Double) As Long
Dim compteur As Integer
Dim TemponValeur As Double
TemponValeur = Valeur
Do While TemponValeur > 0
    compteur = compteur + 1
    TemponValeur = (TemponValeur - CInt(TemponValeur)) * 10
Loop
NombreDec = compteur - 1
End Function

du coup le format serais fais comme ça :
format(Valeur,"0." & string(NombreDec(Valeur),"0"))

Tien moi au courant si ça fais ce que tu veux.
Amicalement
Commenter la réponse de Polack77
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 17 avril 2007 à 15:06
0
Merci
Heeeeeeee, HOULA je me suis tropé (bon pas de grand chose mais bon)
Au lieu de "cint" il faux "Fix" si non tu rique des problèmes dù au arrondie. Ca donne donc :

Public Function NombreDec(ByVal Valeur As Double) As Long
Dim compteur As Integer
Dim TemponValeur As Double
TemponValeur = Valeur
Do While TemponValeur > 0
    compteur = compteur + 1
    TemponValeur = (TemponValeur - Fix(TemponValeur)) * 10
Loop
NombreDec = compteur - 1
End Function

Voili voilou
Amicalement
Commenter la réponse de Polack77
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 17 avril 2007 à 15:21
0
Merci
Heeeeeeeee, je viens de tester plus en détail la fonction que je t'ai founis et elle ne semble pas bien marché chez moi avec la valeur "12.02". C'est du à des imprésision de VB sur les double par contre elle semble ne pas avoir de problème si la valeur est inférieur à 1.
De plus ça ne marchais pas si le valeur est négative, voila la version débugé :

Public Function NombreDec(ByVal Valeur As Double) As Long
Dim compteur As Integer
Dim TemponValeur As Double
TemponValeur = abs(Valeur)
Do While TemponValeur > 0
    compteur = compteur + 1
    TemponValeur = (TemponValeur - Fix(TemponValeur)) * 10
Loop
NombreDec = compteur - 1
End Function

Amicalement
Commenter la réponse de Polack77
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 17 avril 2007 à 15:25
0
Merci
Bon ce coup ci c'est bon (j'ai contouné ce problème de VB)
<hr size="2" width="100%" />Public Function NombreDec(ByVal Valeur As Double) As Long
Dim compteur As Integer
Dim TemponValeur As Double
TemponValeur = Abs(Valeur)
Do While TemponValeur > 0
    compteur = compteur + 1
    TemponValeur = (CDec(TemponValeur) - CDec(Fix(TemponValeur))) * 10
Loop
NombreDec = compteur - 1
End Function
<hr size="2" width="100%" />
Amicalement
Commenter la réponse de Polack77
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 17 avril 2007 à 16:16
0
Merci
Pense à valider ta réponse si ton problème est
résolu (ça permet à d'autre d'en profité et évite de perdre son temps à lire
des topic résolut)

Par contre avec ta fonction round tu risque de perdre de la précision mais si
ça n'à pas d'importance alors...



Peut être A+
Amicalement
Commenter la réponse de Polack77
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 18 avril 2007 à 10:00
0
Merci
Pense à valider la réponse qui à résolu ton problème.
Pour ça tu te log puis tu à un bouton "Réponce acceptée".
Merci
Amicalement
Pensée "Réponce acceptée"
Commenter la réponse de Polack77

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.