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 :

Tester une expression Excel en VBA [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 159
    Par défaut Tester une expression Excel en VBA
    Bonjour,

    Alors voila j'aimerais faire une page excel contenant toute les erreur de mon Excel ou les test a effectuer seront sur une autre page Excel avec leur expression au format excel.

    Comment tester ca dans VBA?

    Ex:
    Dans mon page de test j'ai une ligne qui contient:

    Le champs que je dois tester : Sheets("BI").Cells(135,2).Value

    et le test suivant:
    AND((Sheets("BI").Cells(135,2).Value>0);(Sheets("BI").Cells(112,2).Value<2000))

    Puis le message a affiché si c'est pas ok: "Donnée incorrecte"

    Et donc dans ma page erreur j'aimerais que si la condition est fausse j'affiche le text ainsi que le champs qui provoque sont erreur!

    Mon problème est seulement de savoir si je peux ou pas tester ma condition EXcel (tel quelle) en VBA? Si oui comment je peux faire ca? Sinon comment je pourrais procéder?

    Le but est que ces test puisse être modifier par les utilisateurs qui eux ne connaisse que la facon de faire des condition sous excel...

    Merci pour vos réponses

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 51
    Par défaut
    Le message affiché "Donnée incorrecte" est affiché dans quoi ? une cellule ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 159
    Par défaut
    Merci pour la réponse

    Dans une cellule mais c'est pas vraiment important car ca je sais comment faire

    Moi ce qui m'intéresse c'est de savoir si j'arrive à tester la condition "Excelisé" dans VBA? Car je le répète mes utilisateurs savent faire des conditions dans Excel mais pas en VBA... Le but c'est que la feuille puisse évoluer sans que je doive a chaque fois la corriger.

    Genre :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(AND((Sheets("BI").Cells(135,2).Value>0);(Sheets("BI").Cells(112,2).Value<2000)) = false) Then 
    cells(x,y).text= Donnée incorrecte

    Pour cette exemple le formule est déjà retravailler par mon code.
    Eux dans la feuille calcul il saisiront:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND((B135>0);(B112<2000))
    Enfaite je doit transformer cette condition Excel en quelque chose de compréhensible par VBA... Es-ce que c'est possible?

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 51
    Par défaut
    Je ne connais malheureusement pas grand chose a ce genre de formules sous excel.

    Tu affiches "Données incorrecte" quand ta formule (avec le AND) est fausse.

    Tu peux peut-être tester un truc genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if cells(x,y) = "Donnée incorrecte" then
       ' Ici le code quand ta condition est fausse
    endif
    Après l'utilisateur peut changer la formule, dans tous les cas si la formule est fausse (quel que soit la formule) tu passera dans ton if cells(x,y)...
    Par contre (à vérifier) je crois que c'est cells(y,x)

    edit: J'ai peut-être compris, tu veux afficher "Données incorrecte" si la formule est fausse ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 159
    Par défaut
    Oublie cette histoire de texte car ce n'est pas du tout ma demande... Sans vouloir te vexer biensur

    Donc on recommence depuis le début.

    Ce que je veux c'est que mon utilisateur puisse dynamiquement saisir des controle de validation qui seront effectué via un code VBA.

    Donc mon utilisateur saisi ceci dans une cellule de ma feuille excel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND((B135>0);(B112<2000))
    Et moi sur un clic bouton je doit controler si ce controle de validation est ok oui ou non!
    Biensur il s'agirais de faire une boucle qui va aller lire toute les ligne et tester une a une les conditions.

    Après biensur je veux reporté les erreur sur une autre feuille, mais ca je sais faire pas de souci

    Moi ce que j'aimerais savoir c'est si on peut oui ou non tester des expressions de validation de Excel dans VBA dans cette forme la? ou en les transformant un peu? Et surtout si c'est possible comment faire pour obtenir un true ou false?

    Genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND((Sheets("BI").Cells(135,2).Value>0);(Sheets("BI").Cells(112,2).Value<2000))
    Le but est de trouver un moyen simple pour que mes utilisateurs puisse saisir leur controle de cohérence tout ca de facon structuré et surtout facile a retrouver et corrigé.

    J'espère que ce coup-ci je suis clair?

    Merci

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Dans E1 est écrit ce texte: AND(B5>0,B6<2000)
    Ce code fait le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CommandButton1_Click()
    Dim strValid As String
     
    strValid = Range("E1").Value
    If Not Evaluate(strValid) Then MsgBox "données non valides"
    End Sub
    Au cas où les plages de validation émanent d'autres feuilles, on E1, on écrit AND(Feuil2!B5>0,Feuil3!B6<2000)

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

Discussions similaires

  1. Insérer une formule dans une cellule Excel via VBA
    Par *.Har(d)t dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/02/2020, 13h02
  2. Calcul du nombre de ligne d'une feuille Excel en VBA
    Par top_eagle dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/06/2007, 17h09
  3. Comment protéger une feuille excel en vba avec des paramètres?
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2007, 17h21
  4. Comment protéger une feuille excel en vba avec des paramètres?
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2007, 17h20
  5. Réponses: 9
    Dernier message: 19/02/2007, 20h33

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