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 :

Question de compréhension : Condition If différent de "" ou #N/A [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut Question de compréhension : Condition If différent de "" ou #N/A
    Bonjour à tous,

    Juste une question de compréhension :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        If Not IsError(cell_ori.Offset(0, col_ori - cell_ori.Column)) Then
            If cell_ori.Offset(0, col_ori - cell_ori.Column).Value <> "" Then
                cell_des.Offset(i, col_des - cell_des.Column) = cell_ori.Offset(0, col_ori - cell_ori.Column)
            End If
        End If
    Ce code fonctionne. Je test d'abord si je n'ai pas une erreur et après si la cellule n'est pas vide.

    J'ai forcément écrit ceci la première fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        If Not IsError(cell_ori.Offset(0, col_ori - cell_ori.Column)) And cell_ori.Offset(0, col_ori - cell_ori.Column).Value <> "" Then
            cell_des.Offset(i, col_des - cell_des.Column) = cell_ori.Offset(0, col_ori - cell_ori.Column)
        End If
    en changeant l'ordre dans le If, sachant pertinament que ça n'enlèverait pas l'erreur 13 : Incompatibilité de type.

    Je conçois bien qu'une erreur ne peut pas être évaluée/comparée à un <> "", cependant, je voulais savoir s'il n'y avait pas une autre manière de procéder que le code que j'ai écrit fonctionnant actuellement (j'ai horreur d'imbriquer des "If"... ^^ ).

    Je ne sais pas si j'ai été suffisament clair dans ma question de compréhension et d'optimisation.

    Je vous remercie par avance si vous avez une réponse.

    Kimy

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 566
    Par défaut
    Bonjour

    Quel que soit l'ordre des conditions, elles sont toutes évaluées.
    Donc on ne peut les mettre dans un même if.

    On peut éventuellement utiliser case, qui n'évalue pas les autres conditions, il me semble, si la première est satisfaite.

    La meilleure solution est de gérer les erreurs en amont : laisser des formules qui renvoient des erreurs n'est jamais bon.

  3. #3
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Je ne peux gérer les erreurs en amont puisque c'est un souhait d'avoir des "#N/A" pour toutes les cellules qui ne peuvent être calculé.
    Exemple :
    =SI(L133=0; #N/A; M133/L133)
    pour empécher un "#DIV/0".

    Bref, je te remercie pour ta réponse !

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 566
    Par défaut
    Bonjour

    Pourquoi pas tous simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(L133=0; 0; M133/L133)
    ou une autre valeur que 0 selon le contexte ?

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Car mes courbes tracées automatiquement ne doivent pas prendre en compte les points divisés par zéro.

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 566
    Par défaut
    Bonjour

    Tu aurais du dire tout de suite que c'était un graph, je n'aurais pas insisté !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Question de compréhension
    Par Invité2 dans le forum C++
    Réponses: 4
    Dernier message: 10/02/2008, 20h14
  2. [VBA] question de compréhension
    Par dalmasma dans le forum VBA Access
    Réponses: 4
    Dernier message: 25/07/2007, 19h12
  3. Réponses: 11
    Dernier message: 01/05/2007, 00h15
  4. Question sur une condition d'un exemple de la FAQ
    Par Bleys dans le forum Delphi
    Réponses: 3
    Dernier message: 08/08/2006, 12h43
  5. [Ireport] Condition avec différents types
    Par louveteau02 dans le forum iReport
    Réponses: 1
    Dernier message: 12/07/2006, 10h32

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