Autres résultats differents entre formule et macro (excel 2007)

  • Initiateur de la discussion Initiateur de la discussion gh4
  • 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 !

gh4

XLDnaute Occasionnel
excel 2007
bonjour,
j'ai une différence de résultat quand je compare 2 cellules soit en macro soit en formule depuis la cellule et je ne sait pas pourquoi

par formule =SI(E2+F2-H2=B2;"OK";"ERREUR") tous les résultats sont bons
en macro certains résultats sont faux

Sub Macro3()
derniereligne = Cells(Rows.Count, 3).End(xlUp).Row
lign = derniereligne
colon = 3
27
'lign = 26
If lign = 1 Then GoTo 30


x = Cells(lign, colon + 2) + Cells(lign, colon + 3) - Cells(lign, colon + 5)
y = Cells(lign, colon - 1)
If x <> y Then
Cells(lign, colon + 4) = "ERREUR"
lign = lign - 1
GoTo 27
End If
If x = y Then
Cells(lign, colon + 4) = "OK"
lign = lign - 1
GoTo 27
End If
30
End Sub

si quelqu'un avait une idée.

par avance merci

Cordialement
 

Pièces jointes

Hello,

@laurent950 oui, mais si on veut faire un calcul avec, il faut bien la convertir à un moment ou à un autre non ?
Code:
Sub TestMultiplication()
    ' Une valeur très précise
    Dim texte As String
    texte = "0,123456789012345678901234567890"
    
    ' --- CAS 1 : LE VARIANT ---
    Dim v As Variant
    v = texte ' v contient le texte, "0,123456789012345678901234567890".
    
    ' On fait une opération mathématique neutre (x 1).
    ' VBA est FORCÉ de convertir le texte en nombre.
    ' Comme c'est un Variant "libre", il choisit le format standard : Double.
    v = v * 1
    
    ' --- CAS 2 : LE STRING + CDEC ---
    Dim d As Variant
    ' On force explicitement le meilleur format de nombre avant de calculer
    d = CDec(texte) * 1
    
    ' --- RÉSULTAT ---
    MsgBox "Variant (Auto Double) : " & v & vbCrLf & _
           "String (CDec forcé)   : " & d
          
    ' Ce que l'on vois :
    ' Variant : 0,123456789012346  (Arrêt brutal à la 15ème décimale)
    ' String  : 0,1234567890123456789012345679 (Précision conservée jusqu'à 28)
End Sub
 
Merci pour la démo, mais... Je reste septique...
Pour moi une valeur est une valeur, pas une chaine, et le fait de passer par un variant avec conversion me laisse encore plus septique

Ceci dit, j'espère que ceux qui travaille avec une précision de 28 chiffres (!!!) apprécieront la méthode.
 
bonjour,
la précision est lié à l'interprétation humaine.

le demandeur estimait que les formules lui restituaient des valeurs juste alors que chaque terme de la formule était arrondi.

c'est bien un interprétation humaine vue que VBA en revanche n'arrondissait pas et donnait des valeurs plus réalistes.

quand a descendre à 28 décimal c'est la précision du float {virgule flottante} qu'il faut mettre en doute.
 
- 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

Discussions similaires

Réponses
4
Affichages
687
Réponses
8
Affichages
742
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
428
Réponses
1
Affichages
650
Réponses
0
Affichages
638
Retour