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 :

Modifier hauteur USF avec checkbox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Comptable
    Inscrit en
    Décembre 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2012
    Messages : 57
    Par défaut Modifier hauteur USF avec checkbox
    Bonjour à tous,

    J'essaie depuis quelque temps de modifier la taille d'un userform en cochant ou décochant des checkbox (3 au total).
    Voici le code que j'utilise pour l'une d'entre elle, sachant que pour les deux autres c'est le même 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
     
    Private Sub CheckBox1_Change()
    Select Case CheckBox1.Value
    Case Is = True And CheckBox2.Value = True And CheckBox3.Value = True
    Me.Height = 500
    Case Is = True And CheckBox2.Value = True And CheckBox3.Value = False
    Me.Height = 500
    Case Is = True And CheckBox2.Value = False And CheckBox3.Value = False
    Me.Height = 200
    Case Is = True And CheckBox2.Value = False And CheckBox3.Value = True
    Me.Height = 500
     
    Case Is = False And CheckBox2.Value = True And CheckBox3.Value = True
    Me.Height = 500
    Case Is = False And CheckBox2.Value = True And CheckBox3.Value = False
    Me.Height = 200
    Case Is = False And CheckBox2.Value = False And CheckBox3.Value = False
    Me.Height = 200
    Case Is = False And CheckBox2.Value = False And CheckBox3.Value = True
    Me.Height = 200
    Case Is = False And CheckBox2.Value = False And CheckBox3.Value = False
    Me.Height = 100
    End Select
     
    End Sub
    Mais lorsque rien n'est coché il considère que tout l'est...
    Le case is true alors qu'il est false !!!

    Je vous joint le ficher pour que vous essayer.

    Merci de votre attention et de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    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
    En fait quand tu mets "True" sans expression avant, l'expression va considérer que "True" = "True".

    Il ne va donc pas comparer la valeur de "CheckBox1.Value" et le "True" mais simplement "True".

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 107
    Par défaut
    Tu devrais essayer quelque chose comme ç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
    Private Sub CheckBox1_Change()
        Call test
    End Sub
    Private Sub CheckBox2_Change()
        Call test
    End Sub
    Private Sub CheckBox3_Change()
        Call test
    End Sub
     
    Private Sub test()
        Dim hauteurUSF As Long
        hauteurUSF = 200
        If CheckBox1.Value = True Then hauteurUSF = hauteurUSF + 50
        If CheckBox2.Value = True Then hauteurUSF = hauteurUSF + 100
        If CheckBox3.Value = True Then hauteurUSF = hauteurUSF + 200
        Me.Height = hauteurUSF
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    Comptable
    Inscrit en
    Décembre 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2012
    Messages : 57
    Par défaut
    Merci à tous les deux,
    @Kimy_Ire : Je comprends bien ce que tu écris, mais que faut-il mettre pour qu'il compare checkbox1.value et le true alors?

    @AlphaScorpi : merci pour ton code ca marche sauf que je désire avoir une hauteur identique par exemple : si une seule checkbox est coché peut importe laquelle j'aimerais avoir 200 de hauteur. Mais si j'ai deux ou trois j'aimerais que l'USF prenne la hauteur 500.

    Et si je décoche qu'il revienne bien à 200 de hauteur à la fin.

    Merci beaucoup

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Il y a une incohérence dans ton code pour deux cas de figures semblables, tu demande 2 hauteurs différentes (100 et 200) :
    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
     
    Private Sub CheckBox1_Change()
     
    Select Case CheckBox1.Value
    Case Is = True And CheckBox2.Value = True And CheckBox3.Value = True
    Me.Height = 500
    Case Is = True And CheckBox2.Value = True And CheckBox3.Value = False
    Me.Height = 500
    Case Is = True And CheckBox2.Value = False And CheckBox3.Value = False
    Me.Height = 200
    Case Is = True And CheckBox2.Value = False And CheckBox3.Value = True
    Me.Height = 500
     
    Case Is = False And CheckBox2.Value = True And CheckBox3.Value = True
    Me.Height = 500
    Case Is = False And CheckBox2.Value = True And CheckBox3.Value = False
    Me.Height = 200
    Case Is = False And CheckBox2.Value = False And CheckBox3.Value = False '<-- les 3 à False, hauteur demandée 200 ???
    Me.Height = 200
    Case Is = False And CheckBox2.Value = False And CheckBox3.Value = True
    Me.Height = 200
    Case Is = False And CheckBox2.Value = False And CheckBox3.Value = False '<-- les 3 à False, hauteur demandée 100 ???
    Me.Height = 100
    End Select
     
    End Sub
    Je te propose autre chose, une proc commune que tu appelle avec chaque CheckBox :
    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
    39
     
    Private Sub CheckBox1_Change()
     
        ModifHauteur
     
    End Sub
     
    Private Sub CheckBox2_Change()
     
        ModifHauteur
     
    End Sub
     
     
    Private Sub CheckBox3_Change()
     
        ModifHauteur
     
    End Sub
     
     
    Private Sub ModifHauteur()
     
        Dim Chk As MSForms.CheckBox
        Dim I As Integer
     
        For Each Chk In Me.Controls
     
            If Chk.Value = True Then I = I + 1
     
        Next Chk
     
        If I = 0 Then I = 1
     
        'attention, la hauteur de création (180) n'est pas prise en compte
        'dans tes proc !!!
        Me.Height = Choose(I, 100, 200, 500)
     
    End Sub
    Hervé.

  6. #6
    Membre confirmé
    Homme Profil pro
    Comptable
    Inscrit en
    Décembre 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2012
    Messages : 57
    Par défaut
    Merci à tous pour votre rapidité et efficacité.

    La solution de Daniel.C me convient très bien, même si celles des autres sont très bien, mais modifie la hauteur en fonction de une, deux ou trois checkbox cochés.

    Effectivement Theze il y avait une incohérence dans mon code.
    J'ai reussi à modifier ton code en fonction de mes attentes je le mets si jamais cela peut servir un jour à quelqu'un
    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
     
    Private Sub CheckBox1_Change()
     
        ModifHauteur
     
    End Sub
     
    Private Sub CheckBox2_Change()
     
        ModifHauteur
     
    End Sub
     
     
    Private Sub CheckBox3_Change()
     
        ModifHauteur
     
    End Sub
     
     
    Private Sub ModifHauteur()
     
        Dim Chk As MSForms.CheckBox
        Dim I As Integer
     
        For Each Chk In Me.Controls
     
            If Chk.Value = True Then I = I + 1
     
        Next Chk
     
        If I = 0 Then I = 1
     If I = 3 Then I = 2
           Me.Height = Choose(I, 100, 500)
     
    End Sub
    Merci encore bonne soirée

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Tu ne peux pas mêler un "Case" avec un test standard. Mets :

    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 CheckBox1_Change()
    If CheckBox1.Value = True And CheckBox2.Value = True And CheckBox3.Value = True Then
        Me.Height = 500
    ElseIf CheckBox1.Value = True And CheckBox2.Value = True And CheckBox3.Value = False Then
        Me.Height = 500
    ElseIf CheckBox1.Value = True And CheckBox2.Value = False And CheckBox3.Value = False Then
        Me.Height = 200
    ElseIf CheckBox1.Value = True And CheckBox2.Value = False And CheckBox3.Value = True Then
        Me.Height = 500
     
    ElseIf CheckBox1.Value = False And CheckBox2.Value = True And CheckBox3.Value = True Then
        Me.Height = 500
    ElseIf CheckBox1.Value = False And CheckBox2.Value = True And CheckBox3.Value = False Then
        Me.Height = 200
    ElseIf CheckBox1.Value = False And CheckBox2.Value = False And CheckBox3.Value = False Then
        Me.Height = 200
    ElseIf CheckBox1.Value = False And CheckBox2.Value = False And CheckBox3.Value = True Then
        Me.Height = 200
    ElseIf CheckBox1.Value = False And CheckBox2.Value = False And CheckBox3.Value = False Then
        Me.Height = 100
    End If
    End Sub
    Pareil pour les deux autres, bien sûr.

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

Discussions similaires

  1. [XL-2003] Modifier taille USF avec Checkbox
    Par dark_sidious dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 21/01/2013, 16h59
  2. Modifier taille USF par checkbox
    Par dark_sidious dans le forum Général VBA
    Réponses: 0
    Dernier message: 21/01/2013, 16h01
  3. [MySQL] Modifier un formulaire avec checkbox
    Par isa150183 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/01/2007, 21h32
  4. [C#] TreeView avec CheckBox "indeterminate"
    Par padumeur dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/01/2005, 20h53
  5. Problème hauteur div avec IE
    Par keup dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 25/11/2004, 12h20

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