[vba][excel]multi-condition

Résolu
ttb Messages postés 2 Statut Membre -  
ttb Messages postés 2 Statut Membre -
bonjour forum
je fais mon stage et je me lance donc a corp perdu dans le vbe pour faire du reporting

Et la pb!!!, je veux faire une triple condition, le calcul se fait(une simpe addition si aucune des cellules n'est egale à #N/A. Mais lors de l'apparition d'une cellule #N/A, ça bug. Je ne compte plus le nombre de fois ou j'ai retourner mon code.

Merci de votre aide

If Range("M4").Value <> "#N/A" Then
If Range("N4").Value <> "#N/A" Then
If Range("O4").Value <> "#N/A" Then
Range("P4").Value = Range("M4").Value + Range("N4").Value + Range("O4").Value
Else: MsgBox "la cellule O4 n'est pas rempli"
End If
Else: MsgBox "la cellule N4 n'est pas rempli"
End If
Else: MsgBox "la cellule M4 n'est pas rempli"
End If

1 réponse

  1. masterseb
     
    Salut ttb,

    Il est normal que ça bug quand tu as un #N/A dans une cellule car cette expression n'est pas un texte mais un erreur, et vba la considère aussi comme une erreur.

    Donc tu dois remplacer ton code par celui-ci :

    If IsError (Range("M4").Value) = False Then
    If IsError (Range("N4").Value) = False Then
    If IsError (Range("O4").Value) = False Then
    Range("P4").Value = Range("M4").Value + Range("N4").Value + Range("O4").Value
    Else: MsgBox "la cellule O4 n'est pas rempli"
    End If
    Else: MsgBox "la cellule N4 n'est pas rempli"
    End If
    Else: MsgBox "la cellule M4 n'est pas rempli"
    End If


    Attention, ce code va intervenir sur toutes les erreurs et pas seulement sur l'erreur #N/A. Donc, je te joint également le référencement des erreurs d'excel pour vba (tableau reprenant la constante, le numéro d'erreur et la valeur erreur cellule).
    xlErrDiv0 2007 #DIV/0!
    XlErrNA 2042 #N/A
    xlErrName 2029 #NAME ?
    XlErrNull 2000 #NULL!
    XlErrNum 2036 #NUM!
    XlErrRef 2023 #REF!
    XlErrValue 2015 #VALUE!

    a+

    seb
    2
    1. ttb Messages postés 2 Statut Membre
       
      merci pour ta réponse ainsi que pour référencement...et désolé pour ma nomenclature
      0