A voir également:
- Résultat incohérent avec excel en VBA
- Liste déroulante excel - Guide
- Mise en forme conditionnelle excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
3 réponses
Utilisateur anonyme
Modifié par emeraldas1 le 2/02/2014 à 23:57
Modifié par emeraldas1 le 2/02/2014 à 23:57
Salut,
Deja il doit y a des erreurs dans ton prog (j'ai mis en gras 3 erreurs je pense)
(dsl si la mise en forme est pourrie, pas réussie à la garder)
If moy_apart > moy_apart2 Then 'appart hotel
Cells(11, 7) = "+ " & Abs(diff_moy_apart) & " €"
Cells(11, 7).Font.ColorIndex = 10
ElseIf moy_apart < moy_apart2 Then
Cells(11, 7) = "- " & Abs(diff_moy_apart) & " €"
Cells(11, 7).Font.ColorIndex = 3
ElseIf moy_apart = moy_apart2 Then
Cells(11, 7) = "/"
End If
If moy_adagio > moy_adagio2 Then 'adagio
Cells(11, 8) = "+ " & Abs(diff_moy_adagio) & " €"
Cells(11, 8).Font.ColorIndex = 10
ElseIf moy_adagio < moy_adagio2 Then
Cells(11, 8) = "- " & Abs(diff_moy_adagio) & " €"
Cells(11, 8).Font.ColorIndex = 3
ElseIf moy_adagio = moy_adagio2 Then
Cells(11, 8) = "/"
Deja il doit y a des erreurs dans ton prog (j'ai mis en gras 3 erreurs je pense)
(dsl si la mise en forme est pourrie, pas réussie à la garder)
If moy_apart > moy_apart2 Then 'appart hotel
Cells(11, 7) = "+ " & Abs(diff_moy_apart) & " €"
Cells(11, 7).Font.ColorIndex = 10
ElseIf moy_apart < moy_apart2 Then
Cells(11, 7) = "- " & Abs(diff_moy_apart) & " €"
Cells(11, 7).Font.ColorIndex = 3
ElseIf moy_apart = moy_apart2 Then
Cells(11, 7) = "/"
End If
If moy_adagio > moy_adagio2 Then 'adagio
Cells(11, 8) = "+ " & Abs(diff_moy_adagio) & " €"
Cells(11, 8).Font.ColorIndex = 10
ElseIf moy_adagio < moy_adagio2 Then
Cells(11, 8) = "- " & Abs(diff_moy_adagio) & " €"
Cells(11, 8).Font.ColorIndex = 3
ElseIf moy_adagio = moy_adagio2 Then
Cells(11, 8) = "/"
pourquoi ca serait des erreurs ?
si je suis la logique de son programme, je trouve cela incohérent.
Et quand tu l'éxécutes, les cases 11.7 et 11.8 donnent à mon avis pas le bon résultat
Il compare B9-B10 et met résultat en B11 (je passe les onglets différents)
Idem pour colonne C-D-E-F et I
Pour colonne G et H (7 et 8), pourquoi le code serait-il différent ?
Et quand tu l'éxécutes, les cases 11.7 et 11.8 donnent à mon avis pas le bon résultat
Il compare B9-B10 et met résultat en B11 (je passe les onglets différents)
Idem pour colonne C-D-E-F et I
Pour colonne G et H (7 et 8), pourquoi le code serait-il différent ?
Je pense avoir trouvé ton soucis (je suis pas pro en vba)
Ton problème vient de la déclaration en single.
Les nombres à virgule de type single stockent une approximation d'un nombre réel
https://docs.microsoft.com/fr-fr/dotnet/visual-basic/programming-guide/language-features/data-types/troubleshooting-data-types
exemple :
Si tu convertis une valeur 8 en single, ca affiche 8
Si tu convertis 5.03 par contre , la valeur stockée en single est 5,03000020980834
Soit tu changes de type de variable soit tu formates tes valeurs de sortie pour n'avoir que les 2 derniers chiffres après la virgule
exemple : Cells(11, 2) = "+ " & Abs(arrondi(diff_moy_ibis_orleans;2)) & " €"
Regarde la partie de ton code des if pour apart et adago, je pense qu'il y a quand meme 3 erreurs (voir au dessus)
Je peux me tromper mais je trouverai ca + logique au vu des autres parties de code.
Ton problème vient de la déclaration en single.
Les nombres à virgule de type single stockent une approximation d'un nombre réel
https://docs.microsoft.com/fr-fr/dotnet/visual-basic/programming-guide/language-features/data-types/troubleshooting-data-types
exemple :
Si tu convertis une valeur 8 en single, ca affiche 8
Si tu convertis 5.03 par contre , la valeur stockée en single est 5,03000020980834
Soit tu changes de type de variable soit tu formates tes valeurs de sortie pour n'avoir que les 2 derniers chiffres après la virgule
exemple : Cells(11, 2) = "+ " & Abs(arrondi(diff_moy_ibis_orleans;2)) & " €"
Regarde la partie de ton code des if pour apart et adago, je pense qu'il y a quand meme 3 erreurs (voir au dessus)
Je peux me tromper mais je trouverai ca + logique au vu des autres parties de code.