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 :

IF avec opérateur dans une variable [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Par défaut IF avec opérateur dans une variable
    Bonjour,

    je voudrai créer un IF then avec les conditions dans des variables.

    Je m'explique:

    Je suis en train de développer un macro qui manipule une base de donnée dans un classeur excel.
    Je voudrai permettre à l'utilisateur de créer des conditions de modification de la base.
    Pour cela ils peuvent saisir dans des cellules la variable à modifier et la condition.
    Cells(1,1) : Variable à modifier
    Cells(1,2) : Variable à copier OU donnée (exemple : 10 , "TOTO")
    cells(1,3) : variable condition
    cells(1,4) : Opérateur de condition
    cells(1,5) : Valeur Condition

    Avec un exemple ca donne dans l'ordre ci-dessus : SECTEUR, MARQUE , MARQUE , <> , "".
    Je voudrai pouvoir faire : IF MARQUE<>"" then SECTEUR=MARQUE

    J'ai essayé de mettre toutes les variables, qui récupèrent les conditions ci-dessus, dans une variable string et d'exécuter : IF VARSTRING then.
    Mais ca ne fonctionne pas.

    Comment puis-je faire?

    merci

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Désolé mais, contrairement à d'autres langages, il n'est pas possible en VBA de créer des méta-variables.

    Ce que tu pourrais faire, c'est de mettre en tes 3 première cellule, un indice correspondant à celui d'un vecteur de variables.
    Quant au contenu de la cellule 4, ça pourrait être géré avec un Select Case.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Par défaut
    Merci Menhir,

    j'étais justement en train de tester un case mais j'ai un peu de mal avec.
    Tu pourrai m'aider stp?
    voici mon code :
    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
    'Modification
    For i = 2 To nbli_MODIF_VAR
     
        For j_RES = 1 To nbcol_RES
            If Workbooks(NMASK).Worksheets("Résultats").Cells(1, j_RES) = Workbooks(NMACRO).Worksheets(1).Cells(i, 13) Then VAR1 = j_RES 'VAR à modifier
            If Workbooks(NMASK).Worksheets("Résultats").Cells(1, j_RES) = Workbooks(NMACRO).Worksheets(1).Cells(i, 14) Then VAR2 = j_RES 'VAR à copier
            If Workbooks(NMASK).Worksheets("Résultats").Cells(1, j_RES) = Workbooks(NMACRO).Worksheets(1).Cells(i, 15) Then VAR3 = j_RES 'VAR CONDITION
        Next j_RES
     
        For i_RES = 2 To nbli_RES
        Select Case Workbooks(NMACRO).Worksheets(1).Cells(i, 16).Value
        Case "="
        CONDI = Workbooks(NMASK).Worksheets("Résultats").Cells(i_RES, VAR3) = Workbooks(NMACRO).Worksheets("Résultats").Cells(i, 17)
        Case "<>"
        CONDI = Workbooks(NMASK).Worksheets("Résultats").Cells(i_RES, VAR3) <> Workbooks(NMACRO).Worksheets("Résultats").Cells(i, 17)
        Case "<"
        CONDI = Workbooks(NMASK).Worksheets("Résultats").Cells(i_RES, VAR3) < Workbooks(NMACRO).Worksheets("Résultats").Cells(i, 17)
        Case "<="
        CONDI = Workbooks(NMASK).Worksheets("Résultats").Cells(i_RES, VAR3) <= Workbooks(NMACRO).Worksheets("Résultats").Cells(i, 17)
        Case ">"
        CONDI = Workbooks(NMASK).Worksheets("Résultats").Cells(i_RES, VAR3) > Workbooks(NMACRO).Worksheets("Résultats").Cells(i, 17)
        Case ">="
        CONDI = Workbooks(NMASK).Worksheets("Résultats").Cells(i_RES, VAR3) >= Workbooks(NMACRO).Worksheets("Résultats").Cells(i, 17)
        End Select
            If CONDI=true Then
            Workbooks(NMASK).Worksheets("Résultats").Cells(i_RES, VAR1) = Workbooks(NMASK).Worksheets("Résultats").Cells(i_RES, VAR2)
            End If
        Next i_RES
    Next i
    Je n'ai jamais utilisé de case. Je me suis dis qu'un booléan était ce qu'il me fallait mais ca ne fonctionne pas.
    Merci de ton aide.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Par défaut
    C'est bon en faite ca fonctionne.
    J'avais oublié que j'avais déclaré mes variables VAR1,VAR2 et VAR3 en string.
    Du coup avec un val(VAR1) ca fonctionne.

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    ton "=true" est inutile puisque ta variable est booléenne.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je comprends pas vraiment mais bon!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Operateur="="
    If Evaluate(1 & Operateur & 2) Then
        Workbooks(NMASK).Worksheets("Résultats").Cells(i_RES, VAR1) = Workbooks(NMASK).Worksheets("Résultats").Cells(i_RES, VAR2)
    End If

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Par défaut
    dysorthographie,

    J'avais essayé avec evaluate mais ca ne fonctionnait pas.
    Je n'ai pas du bien l'employer.
    Je le garde en mémoire pour une prochaine fois.
    Merci.

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

Discussions similaires

  1. Copier coller image d'un graphique avec stockage dans une variable
    Par antonysansh dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/02/2017, 16h00
  2. [2012] numeric avec précision dans une variable
    Par robv dans le forum Développement
    Réponses: 3
    Dernier message: 10/12/2013, 10h23
  3. Requête SQL dynamique avec nom de table dans une variable
    Par jonjack dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 15/09/2011, 14h37
  4. Sommer avec conditions dans une variable
    Par nmicoud dans le forum iReport
    Réponses: 1
    Dernier message: 15/07/2009, 14h34
  5. Critères avec opérateurs dans une requête avec des champs calculés
    Par lmollard dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/05/2008, 18h53

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