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 :

plusieurs checkbox qui composent un if [XL-2007]


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
    Juillet 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 129
    Par défaut plusieurs checkbox qui composent un if
    Bonsoir,

    Apres quelques jours de recherche sur le net et les 27 pages ici concernant les question sur le checkbox, je me décide a poster mon probleme.

    Dans un userform, je crée dynamiquement 4 checkbox et j'affecte en caption la valeur provenant d'un tableau. Ces valeurs sont en fait des options pour selectionner des données qui se trouvent dans un autre tableau

    Donc c'est l'équivalent d'un IF .... = caption de le checkbox (si elle est cochée) or .....or .... then ....

    Pou le moment et pour parvenir a resultat très mediocre, je récupéré l'ensemble des valeurs dans un tableau. Puis je boucle sur ce tableau et enfin un if avec une seule condition. C'est très loin de fonctionner convenablement.

    Ma question : y a-t-il un moyen de constituer la forme conditionnelle du If via un variable. J'ai essayer de construire la condition avec un string mais quand je fais : If [ma variable string] then.... il n'aime pas du tout.

    Vu le nombre de checkbox, ca devient très compliqué.

    Je vous remercie par avance pour votre analyse et l'aide que vous pouvez m'apporter.

    Anax

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour, regarde ça
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Test()
    Dim VarIf As Integer
    VarIf = 0
    VarIf = VarIf + (1 * Abs(Check1.Value))
    VarIf = VarIf + (2 * Abs(CheCk2.Value))
    VarIf = VarIf + (4 * Abs(Check3.Value))
    VarIf = VarIf + (8 * Abs(Check4.Value))
    Select Case VarIf
        Case 0
            'Pas de check
        Case 1
            'Check 1
        Case 2
            'Check 2
        Case 3
            'Check 1 & 2
        Case 4
            'Check 3
        Case 5
            'Check 3 & 1
        Case 6
            'Check 3 & 2
        Case 7
            'Check 3 & 2 & 1
        Case 8
            'Check 4
        Case 9
            'Check 4 & 1
        Case 10
        Case 11
        Case 12
        Case 13
        Case 14
        Case 15
        Case Else
     
    End Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub tes2()
    Dim I As Long
    For I = 1 To 4
        If Me.Controls("Check" & I).Value = True Then
        'Code
        End If
    Next
    End Sub
    Dernière modification par Invité ; 18/10/2013 à 22h48.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 129
    Par défaut
    Bonsoir,

    Je ne comprends pas la réponse que tu m'as faite.
    Je comprends comment utiliser le Select Case.
    J'aurais voulu savoir s'il etait possible de constituer quelque chose comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    VarIf = "Valeur = " & checkbox1.caption & " or " valeur = " & checkbox2.caption
     
     
    If VarIf then
    ....
    End if
    Je n'ai pas réussi a constituer le VarIf et je ne sais pas si c'est possible d'ailleurs.

    Merci en tout cas pour ta réponse si rapide

    Anax

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code Analyse : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    je fais un test binaire:
    B0 = 1 ou 0
    B1 = 2 ou 0
    B2 = 4 ou 0
    B3 = 8 ou 0
    B0 + B1 + B2 + B3=15
    D'où le select case VarIf qui est un if imbrique.
    si nom tu as la deuxième solution.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 129
    Par défaut
    J'utilise actuellement la 2eme solution et comme j'ai environ 8 frame conposé de 4 a 10 checkbox, j'ai bcp de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    for i = ....
       for j = ...
          for k = ...
             if valeur = tableau(i) then
                if valeur = tableau(j) then
                   if valeur = tableau(k) then
                     ....
                   end if
                end if
             end if
          next k
        nexy j
    next i
    J'aurais espéré trouver un moyen bcp plus simple et surtout plus lisible que de l'imbrication de for et if

    Encore merci pour ta réponse

    Anax

  6. #6
    Invité
    Invité(e)
    Par défaut
    j'espère que je pourrais mieux t'aider si je comprenais comment et pourquoi tu génère des frames et des checks et quel en est la finalité.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 129
    Par défaut
    Bonjour,

    Alors voila ce que je suis en train de réaliser.

    J'ai une connexion à un sharpoint avec pleins de données. Je collecte l'ensemble des champs qui m'interessent dans un tableau de départ.
    Depuis ce tableau, je mets en forme un USerform. J'ai actuellement 4 frames et les checkbox qui sont a l'intérieur sont crées dynamiquement.
    Le frames sont en gros : Les années dispo, les Personnes référécencées, Un type de contenu, Budgété ou non. Chaque Frame contient un nombre X de checkbox qui sont les différentes solutions possibles.
    Dans ce frame, j'ai aussi 3 treeview qui sont dynamiquement modifiés sur un événement d'un seul frame pour le moment (Année) afin d'ajuster leur contenu à l'année ou aux années sélectionnées. Ce treeview sont aussi pourvu de checkbox

    La finalité est la restitution d'un ou plusieurs tableau Excel basée sur le tableau de collecte du départ. Sachant que je ne dois sélectionner que les données correspondant au checkbox dont la valeur = True. ceci fait un grand nombre de conditions et j'avoue que je commence à avoir un peu de mal à lire mon code au travers des nombreuses boucles et If Then que je suis obligé de mettre.
    J'avoue que je passe même de plus en plus de temps à trouver le bon endroit pour placer les prochains "filtres"

    C'est pour cela que j'aurais espéré trouver un moyen de concevoir la condition d'un IF avec une seule variable car si je prends ma frame année et que plusieurs checkbox sont sélectionnés, cela équivaux à un If [Donnée tableau Origine] = [caption de la checkbox1] or [Donnée tableau Origine] = [caption de la checkbox2] or [Donnée tableau Origine] = [caption des la checkbox3] then... sachant que je fais un check sur tous les controles de la frame et je mets dans un tableau que les caption des checkbox dont la valeur est true

    J’espère ne pas avoir été trop confus dans mes explications (tjrs comme cela quand on a le nez dedans)

    Encore merci pour ton temps

    Anax

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

Discussions similaires

  1. Checkbox qui modifie valeur de plusieurs ID
    Par WebDup dans le forum Langage
    Réponses: 26
    Dernier message: 07/05/2014, 22h29
  2. Une checkbox qui en sélectionne plusieurs
    Par maxime.philippe dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/12/2010, 12h02
  3. Cochage de plusieurs checkbox
    Par licorne dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 09/03/2005, 10h30
  4. Réponses: 4
    Dernier message: 08/09/2004, 10h28

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