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 :

test if then else qql soit la valeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut test if then else qql soit la valeur
    bonsoir à tous

    je realise le test suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If ComboBox1.Value <> "" Then condition1 = ComboBox1.Value Else condition1 = "Cells(ligne, 2)"
    If ComboBox2.Value <> "" Then condition2 = ComboBox2.Value Else condition2 = "Cells(ligne, 2)"
     
     
     
    If Cells(ligne, 2) = condition1 And Cells(ligne, 1) = condition2 Then coutinstallation = coutinstallation + Cells(lignefiltrestat, 22) + Cells(lignefiltrestat, 26)
    dans la partie de code suivante je cherche à dire que quelque soit la valeur trouve dans "cells(ligne,2) la condition1 sera toujours egale à la valeurs de "cells(ligne,2). donc qql soit la valeur , c'est toujours bon ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    *****Else condition1= "Cells(ligne, 2)"
    *****Else condition2 = "Cells(ligne, 20)"

    mes variables condition1 et condition2 sont de type string.

    merci de votre aide

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    SAlut
    Je comprend pas pourquoi tu veux mettre une condition
    Mets ton code complet avec les indentation, par ce que je me demande si tu utilise comme il faut If... Then .... Else ...
    A++
    Qwaz

  3. #3
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonsoir tlm,

    Bin...je capte pas tout non plus, d'autant plus que dans le code il s'agit 1x de la ligne 2, 1x de la ligne 1 et 1x de la ligne 20.

    Ce qui est certain...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ****Else condition1 = "Cells(ligne, 2)"
    ne fonctionnera pas, hormis attribuer le texte Cells(ligne, 2) à la variable condition1

    Il faudrait simplement écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ****Else condition1 = Cells(ligne, 2)
    sans les guillemets

    Reste à savoir si la déclaration des variables condition1 et 2 comme String est judicieux, que contient la Cells(ligne, 2) ?

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    SAlut
    J'suis fatigué moi ... j'avais même pas vu ces vilains guillemets...
    Bonne nuit
    Qwaz

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    bonjour à tous
    toujours pas facile de se faire comprendre

    je reprends
    mon test final est celle-ci (a savoir qui il a 8 test test1 and test2 and ...and test8)

    mais pour l'exemple j'en prends que 2 .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Cells(ligne, 2) = condition1 And Cells(ligne, 1) = condition2 Then coutinstallation = coutinstallation + Cells(lignefiltrestat, 22) + Cells(lignefiltrestat, 26)
    cells(ligne,X) sont les cellules de ma feuille dont le contenu sera comparé aux combobox.

    Comme il y a une imbriquation de condition (je me suis aidé de certains post du forum)et les combobox ne sont pas forcement renseignes(aucun choix de l'utilisateur donc combobox.value =""), j'ai cree la variable Condition de type string . cette variable condition prend la valeur via la ligne de code ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If ComboBox1.Value <> "" Then condition1 = ComboBox1.Value Else condition1 = "Cells(ligne, 2)"
    mais ou je coince , C'est si le combobox.value = "" il faut que quelque soit la valeurs de ma cells(ligne,2) le resultat du test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .....Cells(ligne, 2) = condition1
    " toujours vrai.


    peut etre un peu plus clair.

  6. #6
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Oui c'était déjà clair avant et je maintiens ma réponse...

    condition1 = "Cells(ligne, 2)" ne fonctionnera pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    If ComboBox1.Value <> "" Then condition1 = ComboBox1.Value Else condition1 = Cells(ligne, 2)
    'si Combo1 est vide alors condition1 = Cells(ligne, 2)
    If ComboBox2.Value <> "" Then condition2 = ComboBox2.Value Else condition2 = Cells(ligne, 2)
    'si Combo2 est vide alors condition2 = Cells(ligne, 2)
    Désolé mais hormis les guillemets, où est le problème ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    bonjour
    en enlevant les "" j'ai adapté le code, avec 2 conditions ,cela fonctionne.
    je vais voir avec 8 conditions.


    Voici le code , il peut etre pas optimise !
    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
     
    Private Sub filtrestatistiquecout()
    Dim lignefiltrestat As Long
    Dim coutinstallation As Long
    Dim condition1 As String, condition2 As String
    coutinstallation = 0
    lignefiltrestat = 0
    condition2 = ""
    condition1 = ""
     
    'cout de l'installation
    DerniereLigne = Range("m4").End(xlDown).Row 'derniere ligne occupee dans colonne A
     
    For lignefiltrestat = 4 To DerniereLigne
        If ComboBox24.Value <> "" Then condition1 = ComboBox24.Value Else condition1 = Cells(lignefiltrestat, 2)
        If ComboBox6.Value <> "" Then condition2 = ComboBox6.Value Else condition2 = Cells(lignefiltrestat, 1)
     
        If Cells(lignefiltrestat, 2) = condition1 And Cells(lignefiltrestat, 1) = condition2 Then coutinstallation = coutinstallation + Cells(lignefiltrestat, 22) + Cells(lignefiltrestat, 26)
    Next lignefiltrestat
    TextBox7.Value = coutinstallation
     
    End Sub


    merci

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu peux en effet l'optimier en utilisant IIf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Condition1 = IIf(ComboBox24.Value <> "", ComboBox24.Value, Cells(lignefiltrestat, 2))
    Condition2 = IIf(ComboBox6.Value <> "", ComboBox6.Value, Cells(lignefiltrestat, 1))

  9. #9
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Si je peux me permettre, une autre optimisation (optimisation de temps quant à l'écriture du code) serait de réduire le nom des variables.

    Le code donnerait :
    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
    Private Sub filtrestatistiquecout()
    Dim Lfs&, Ci&, C1$, C2$, DerL%
     
    Ci = 0
    Lfs = 0
    C1 = ""
    C2 = ""
     
    DerL = Range("m4").End(xlDown).Row 'derniere ligne occupee dans colonne A
     
    For Lfs = 4 To DerL
        If ComboBox24.Value <> "" Then C1 = ComboBox24.Value Else C1 = Cells(Lfs, 2)
        If ComboBox6.Value <> "" Then C2 = ComboBox6.Value Else C2 = Cells(Lfs, 1)
     
        If Cells(Lfs, 2) = C1 And Cells(Lfs, 1) = C2 Then Ci = Ci + Cells(Lfs, 22) + Cells(Lfs, 26)
    Next Lfs
    TextBox7.Value = Ci
     
    End Sub
    Certaines déclarations de variables peuvent également être raccourcies
    Dim X As Integer = Dim X%
    Dim X As String = Dim X$
    Dim X As Long = Dim X&
    Dim X As Single = Dim X!
    Dim X As Double = Dim X#
    Dim X As Currency = Dim X@

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    bonsoir à tous
    Merci pour vos optimisations.

    par contre je comprends pas les syntaxes suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim Lfs&, Ci&, C1$, C2$, DerL%
    Que veulent dire les & , $ et % apres les variable ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Condition1 = IIf(ComboBox24.Value <> "", ComboBox24.Value, Cells(lignefiltrestat, 2))
    Condition2 = IIf(ComboBox6.Value <> "", ComboBox6.Value, Cells(lignefiltrestat, 1))
    Que veut dire IIF ? je connais pas ?


    merci encore

  11. #11
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par didier.schmit Voir le message
    par contre je comprends pas les syntaxes suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim Lfs&, Ci&, C1$, C2$, DerL%
    Que veulent dire les & , $ et % apres les variable ?
    Si tu descends 8cm plus bas dans le message, j'ai donné l'explication

    Que veut dire IIF ? je connais pas ?
    Cela correspond à la fonction SI d'Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Iif(Condition, Résultatsivrai, Résultatsifaux)

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    oups

    il est temps de faire dodo?





  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par didier.schmit
    Que veut dire IIF ? je connais pas ?
    Si tu fais F1 sur IIf tu auras une explication bien plus meilleure que celle que je pourrais te donner

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut

    oups c'etait vraiment l'heure de faire dodo

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/06/2012, 22h40
  2. [AC-2007] test if then else dans boucle for next
    Par markuus dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/08/2011, 12h41
  3. Exclure valeur avec if then else
    Par kgb1917 dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/10/2007, 14h33
  4. test si parametre = cide IF THEN ELSE
    Par AODRENN dans le forum SQL
    Réponses: 2
    Dernier message: 26/09/2005, 10h00
  5. [CR 7] [débutante] pb avec if then else
    Par xs_nady dans le forum Formules
    Réponses: 8
    Dernier message: 28/05/2004, 16h36

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