Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Valeur "0" non affichée


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Valeur "0" non affichée
    Bonjour.

    Je m'arrache les cheveux depuis ce matin pour un problème ridicule, illustré par la copie ci-dessous :



    Ces 5 cases obéissent au même calcul que voici, et c'est celle en italique qui me pose souci :

    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
    If Total_Planifie <> 0 Then
        ActiveCell.Offset(0, 23).Value = Format(Total_Reel / Total_Planifie, "0.00%")
    End If
    If AWD_Planifie <> 0 Then
        ActiveCell.Offset(0, 24).Value = Format(AWD_Reel / AWD_Planifie, "0.00%")
    End If
    If MOED_Planifie <> 0 Then
        ActiveCell.Offset(0, 25).Value = Format(MOED_Reel / MOED_Planifie, "0.00%")
    End If
    If ESI_33_Planifie <> 0 Then
        ActiveCell.Offset(0, 26).Value = Format(ESI_33_Reel / ESI_33_Planifie, "0.00%")
    End If
    If ESI_63_CF_Planifie <> 0 Then
        ActiveCell.Offset(0, 27).Value = Format(ESI_63_CF_Reel / ESI_63_CF_Planifie, "0.00%")
    End If


    Pourquoi la valeur calculée (zéro en l’occurrence) n'apparait pas dans le tableau alors que ses voisines, calculées exactement de la même façon affichent bien la valeur ?
    Les formats de cellule sont identiques et les valeurs MOED_Planifie, ESI_33_Planifie et ESI_63_CF_Planifie sont toutes égales à zéro au moment du passage de la macro.
    De plus, dans la barre des valeurs, on voit que les cellules de droite contiennent bien "0" alors que pour l'autre, il n'y a rien, la case est vide, comme si aucun calcul n'était effectué.

    Merci.

    PS : J'ai voulu remplacer les "IF THEN" par des IIf, mais j'ai eu des messages de "Dépassement de capacité", alors que mes variables sont toutes en type single et que pour plus de sécurité, j'ai déclaré la variable OPTION EXPLICIT...

  2. #2
    Rédacteur

    Bonjour,
    N'est-ce pas un problème de formatage ?
    As-tu essayé manuellement de taper une valeur alphanumérique quelconque dans cette cellule puis ensuite une valeur nulle (numérique)

    Ceci étant dit, ce n'est pas une bonne idée d'écrire dans une cellule de cette manière car tu forces une valeur qui devrait être numérique à s'écrire en alphanumérique, ce qui peut perturber Excel

    Voir sur un sujet identique ces réponses fil #20 et fil #22 dans une autre discussion
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  3. #3
    Expert confirmé
    Bonjour,

    J'ajouterais qu'a chaque fois, il faut 2 lignes distinctes dans l'ordre :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.Offset(0, 23).NumberFormat = "0.00%"
    ActiveCell.Offset(0, 23).Value = Total_Reel / Total_Planifie
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  4. #4
    Futur Membre du Club
    Bonjour et merci de la réponse...

    J'ai modifié ma macro de départ et pour ces colonnes là, je force au préalable le format "pourcentage".
    Cela m'évite des conversions effectivement "hasardeuses"..

    Par contre, mon problème n'est toujours pas réglé..

    Je laisse tomber pour l'instant, je reviendrai dessus quand tout le programme sera terminé.

  5. #5
    Rédacteur

    Bonjour,
    As-tu effectué le test tel que je l'ai suggéré ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  6. #6
    Futur Membre du Club
    Oui, bien sûr....

    Pardon de ne pas y avoir fait allusion..

    Après le traitement, j'ai entré un nombre manuellement dans la case et un zéro ensuite, et il n'y a eu aucun souci...

    Je pense que dans mon code, il y a une bouse quelque part.

    Mais je vais finir le reste de la confection du tableau et je reviendrai là dessus quand ce sera finalisé.
    C'est vraiment une bricole..

    Merci de vous intéresser à mon cas....

    Et merci aussi à Patrice dont je ne viens de voir la réponse que maintenant. Je garde bien au chaud tous vos conseils !!!!!!

  7. #7
    Rédacteur

    Bonjour,
    PS : J'ai voulu remplacer les "IF THEN" par des IIf, mais j'ai eu des messages de "Dépassement de capacité", alors que mes variables sont toutes en type single et que pour plus de sécurité, j'ai déclaré la variable OPTION EXPLICIT...
    Je viens de relire ton premier message et tout particulièrement le PS[/B que je n'avais sans doute pas du lire convenablement. Le fait que tu reçoives un message de dépassement de capacité lorsque tu utilises [B]IIF est intéressant et il serait utile de visualiser la formule en question avec le IIF parce-que contrairement au If...Then...Else, le IIF évalue les deux arguments

    A titre accessoire, pourquoi utiliser Single au lieu de Double ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  8. #8
    Futur Membre du Club
    Merci du message.

    Je vous répondrai demain.... c'est l'heure de l'apéro..

    Passez une bonne soirée !

  9. #9
    Futur Membre du Club
    Bonjour.

    Si je n'ai pas mis les variables en "double", c'est parce qu'il s'agit de petits nombres, qui ne nécessitent pas une grande précision décimale.

    Je n'ai pas modifié mon code d'hier, j'avance sur une autre partie du boulot.

    Pour l'erreur de "IIf" je retenterai le coup et je vous ferai part du résultat.

    Son codage était :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ActiveCell.Offset(0, 24).Value = IIf(AWD_Planifie <> 0, AWD_Valide/AWD_Planifie, 0)