IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Macros et VBA Excel Discussion :

erreur 2007 de division par 0


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 96
    Points : 45
    Points
    45
    Par défaut erreur 2007 de division par 0
    bonjour à tous, je suis bloqué sur un problème de résultat qui me donne l'expression: "#DIV/0". J'aimerais pouvoir affecter à cette valeur du "vide", en gros que je fasse comme s'il n'y avait rien.
    j'ai essayé le code suivant, mais celui ci m'affiche "#DIV/0" pour la première variable et ne me "teste" pas la seconde de plus, je n'arrive pas à effectuer ensuite mon changement de page. Quelqu'un pourrait il m'aider s'il vous plait? merci à vous et bonne journée.

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    For LigneIndic = 16 To 16 + 4 * NbEnsemble Step 4
        'on stocke le pointeur de la ligne de l'ensemble:
        pointeur = Cells(LigneIndic, 11).Value
        'pour chaque ensembles, on va chercher l'objectif, et les 2 MTBF/ du dernier mois:
        Sheets(OngletTCDyn).Select
        Objectif_Ensemble = Cells(pointeur + 4, DernièreColonne_TCDyn).Value
        'pour gérer l'erreur 2007 de divisqion par 0: en cas d'erreur on gardera la dernière valeur des MTBF, donc on les vides avant de tester:
        On Error Resume Next
        MTBF_3mois_ensemble = ""
        MTBF_12mois_ensemble = ""
        MTBF_3mois_ensemble = Cells(pointeur + 2, DernièreColonne_TCDyn).Value
        MTBF_12mois_ensemble = Cells(pointeur + 3, DernièreColonne_TCDyn).Value
     
        'on les met dans la feuille Bilan:
        Sheets(OngletBilan).Select
        Cells(LigneIndic, 5).Value = Objectif_Ensemble
        Cells(LigneIndic + 1, 5).Value = MTBF_3mois_ensemble
        Cells(LigneIndic + 2, 5).Value = MTBF_12mois_ensemble
     
     
        'on compare la valeur des MTBF à l'objectif:
        'MTBF_3mois:
        If Objectif < MTBF_3mois Then
            's'il est supérieur on le met en vert:
            Cells(LigneIndic + 1, 5).Select
            Selection.Font.ColorIndex = 10
        Else
            'on le met en rouge:
            Cells(LigneIndic + 1, 5).Select
            Selection.Font.ColorIndex = 3
        End If
        'MTBF_12mois:
        If Objectif < MTBF_12mois Then
            's'il est supérieur on le met en vert:
            Cells(pointeur + 3, DernièreColonne_TCDyn).Select
            Selection.Font.ColorIndex = 10
        Else
            'on le met en rouge:
            Cells(pointeur + 3, DernièreColonne_TCDyn).Select
            Selection.Font.ColorIndex = 3
        End If
     
    Next LigneIndic

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    en fait mon problème vient du test suivant: ma valeur du MTBF_3mois est "#DIV/0!" et je n'arrive pas à sauter ce test dans ce cas là.Si quelqu'un a une idée...merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        'on compare la valeur des MTBF à l'objectif:
        'MTBF_3mois:
        If Objectif_Ensemble < MTBF_3mois_Ensemble Then
            's'il est supérieur on le met en vert:
            Cells(LigneIndic + 1, 5).Select
            Selection.Font.ColorIndex = 10
        Else
            'on le met en rouge:
            Cells(LigneIndic + 1, 5).Select
            Selection.Font.ColorIndex = 3
        End If

  3. #3
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,


    Il me semble que tu avais dèja posé la quesiton ici

    2 remarques : tu peux tester le texte de la cellule et tu auras bien "#DIV/0!", ajoutes un espion dans le debuggeur et tu verras tout ce que tu peux tester sur la cellule

    Ne peux tu pas tester quelque chose avant de faire la division par 0

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    Dans l 'idée de ce que vous m'avez suggéré, j'ai tenté le test suivant, dans un premier temps avec "#DIV/0!" qui n'a pas marché, puis avec la valeur de la cellule que j'ai obtenue grâce à l'espion (à savoir "Erreur 2007"). Cela ne fonctionne pas non plus. Quelqu'un saurait il pourquoi par hasard?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'gestion des divisions par 0 avant d'effectuer le test de comparaison Objectifs/MTBF:
        If Cells(LigneIndic + 1, 5).Value = "Erreur 2007" Then
            Cells(LigneIndic + 1, 5).Value = "0"
        End If
        If Cells(LigneIndic + 2, 5).Value = "Erreur 2007" Then
            Cells(LigneIndic + 2, 5).Value = "0"
        End If

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut babou466 et le forum
    je suis bloqué sur un problème de résultat qui me donne l'expression: "#DIV/0". J'aimerais pouvoir affecter à cette valeur du "vide", en gros que je fasse comme s'il n'y avait rien.
    Dans excel, refais tes formules pour que les cellules ne l'affiche plus. Si =formule affiche #Div/0,
    - Teste avant le dénominateur : =si(dénominateur =0;"";formule)
    - ou efface les erreurs : =si(esterr(formule);"";formule)
    Tu peux utiliser le même genre de logique avec l'instruction IsError, mais comme dans le code donné tu n'as pas de division...

    On Error Resume Next ne permet pas de gérer un erreur, simplement de faire qu'excel continue le code et ne s'arrête pas. C'est comme enlever la lampe rouge qui te signale une panne. Comme ça, t'es plus gêné par l'allumage de la lampe... mais je doute que ça tévite de passer au garage
    A+

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    d'accord! merci beaucoup!en fait j'avais utilisé resume next lors d'une somme de valeur,l'expression me permettait en effet de poursuivre "en ignorant" l'erreur "#DIV/0!"
    je voudrais maintenant remplacer mes valeurs "#DIV/0!" par des "0" je ne sais pas vraiment comment procéder...

  7. #7
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    je voudrais maintenant remplacer mes valeurs "#DIV/0!" par des "0" je ne sais pas vraiment comment procéder...
    Comme te la dit Gorfael, dans ta feuille excel au lieu de mettre simplement ta formule tu mets :
    =si(dénominateur =0;0;formule)

    Cela signifie si le dénominateur (la tu mets la l'expression de ton dénomionateur) = 0 alors le résultat vaut 0 sinon le résultat vaut formule (là tu mets ta formule de calcul)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    merci beaucoup! vous n'imaginez pas tout ce que j'apprend grace à vous!

  9. #9
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Teste avant le dénominateur : =si(dénominateur =0;"";formule)
    Entièrement d'accord avec Gorfael et Krovax mieux vaut en général anticiper les erreurs.

    j'ai tenté le test suivant, dans un premier temps avec "#DIV/0!" qui n'a pas marché
    As tu vraiment testé avec car j'avais testé avant de poster.

Discussions similaires

  1. Erreur division par zero
    Par nancy38 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/03/2013, 13h00
  2. [QReport] Erreur "division par zero en virgule flottante"
    Par dj_techno dans le forum QuickReport
    Réponses: 6
    Dernier message: 26/09/2008, 18h05
  3. Erreur divisée par zero
    Par winow dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/09/2007, 21h44
  4. division par 0 dans une requête donne #Erreur
    Par bugprog dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 29/05/2007, 09h57
  5. Erreur de division par 0 (MMX_FLAG)
    Par Harry dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 23/09/2005, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo