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 :

CheckboxN - possibilité de mettre une variable dans le nom de la checkbox


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut CheckboxN - possibilité de mettre une variable dans le nom de la checkbox
    Bonjour

    Avant toute chose, si vous avez le temps, je désespère toujours de résoudre mon problème .

    Mais c'est un autre petit soucis qui m'amène.
    J'aimerais savoir s'il est possible de mettre une variable dans le nom des checkbox. Je m'explique...

    Dans le cadre du code présent dans le post indiqué plus haut, j'ai ajouté des checkbox. Seulement j'en ajoute une par ligne, et au bout d'un moment, ce n'est plus très pratique...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If CheckBox1.Value = False Then Rows(3).Hidden = True
    If CheckBox2.Value = False Then Rows(4).Hidden = True
    If CheckBox3.Value = False Then Rows(5).Hidden = True
    If CheckBox4.Value = False Then Rows(6).Hidden = True
    If CheckBox5.Value = False Then Rows(7).Hidden = True
    If CheckBox6.Value = False Then Rows(8).Hidden = True
    If CheckBox7.Value = False Then Rows(9).Hidden = True
     
    etc.
    Donc voilà, plusieurs questions :
    1. Est-ce qu'il est possible de faire référence à toutes les checkbox en une fois, du genre CheckboxN.value, ou est-ce que je dois appeler chaque checkbox successivement, ligne de code par ligne de code ?
    (et dans la suite de ça, est-ce que je peux réutiliser cette variable pour le numéro de la ligne, genre "If CheckBoxN.Value = False Then Rows(N+2).Hidden = True" ?)

    2. Est-ce qu'il est possible de lier une checkbox à la ligne du tableau excel sur laquelle elle se trouve ?
    (en fait, lorsque je clique sur un bouton, toutes les lignes décochées doivent se masquer, donc j'aimerais lui dire que si la valeur d'une checkbox = false, alors masquer la ligne sur laquelle la checkbox est située)

    3. Heu, ça c'est pas vraiment une question, juste pour dire que toute suggestion pour simplifier tout ça est la bienvenue


    Merci à tous

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For each Ctr in Me.controls
         If instr(1,Ctr.name,"CheckBox") =1 then ctr = false
    Next
    L'inconvénient de la méthode étant que si l'un des checkbox de l'userform ne fait pas partie de la liste, il passe aussi à true
    Tu as aussi la possibilité de les grouper...

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Quand je fais ce que tu me dis, il bloque sur .Controls, avec comme message "Compile Error : Method or Data member not found".

    Voilà mon code complet, ça aidera sans doute :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    Private Sub CommandButton1_Click()
    'compteur de ligne
    i = 3
     
    'les adresses a prendre en consideration
     
    bcc_a_prendre = ""
     
     
    ' Avant d'aller plus loin, masquer les lignes décochées (j'en ai 7 dans mon test)
    If CheckBox1.Value = False Then Rows(3).Hidden = True
    If CheckBox2.Value = False Then Rows(4).Hidden = True
    If CheckBox3.Value = False Then Rows(5).Hidden = True
    If CheckBox4.Value = False Then Rows(6).Hidden = True
    If CheckBox5.Value = False Then Rows(7).Hidden = True
    If CheckBox6.Value = False Then Rows(8).Hidden = True
    If CheckBox7.Value = False Then Rows(9).Hidden = True
     
     
    ' Prendre les adresses des lignes visibles
    Do
    If Rows(i).Hidden = False Then bcc_a_prendre = bcc_a_prendre & Range("F" & i).Value & ";"
    i = i + 1
    Loop Until Range("D" & i).Value = ""
     
     
     
     
     
    'comme il y a un ; en trop dans chaque champ, l'enlever mais verifier que le champs n'est pas vide
     
    If Len(bcc_a_prendre) > 0 Then
    bcc_a_prendre = Left(bcc_a_prendre, Len(bcc_a_prendre) - 1)
    End If
     
    'preparation du mail
    Hyperlien = "mailto:" & "?"
    Hyperlien = Hyperlien & "subject=sujet du mail"
     
    Hyperlien = Hyperlien & "&Bcc=" & bcc_a_prendre
     
     
    ActiveWorkbook.FollowHyperlink Hyperlien
     
     
     
    End Sub
     
     
    Private Sub CommandButton2_Click()
     
    'bouton pour remettre tout à zéro
     
    Rows.Hidden = False
    If FilterMode = True Then ShowAllData
    CheckBox1.Value = True
    CheckBox2.Value = True
    CheckBox3.Value = True
    CheckBox4.Value = True
    CheckBox5.Value = True
    CheckBox6.Value = True
    CheckBox7.Value = True
     
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bon, entre temps j'ai trouvé une solution pour générer rapidement toutes les lignes de code "If CheckBox1.Value = False Then Rows(3).Hidden = True" en faisant varier les numéros, donc ça fonctionne... mais je suis preneur de toute solution pour simplifier tout ça (vu que là je me retrouve avec 200 lignes de code pour les 200 checkboxes, et 200 lignes de nouveau pour le bouton qui permet de réafficher les lignes et recocher la case)

    Et je m'en remets par contre toujours à vous pour mon sujet précédent, pour splitter les mails envoyer

  5. #5
    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
    Désolé, je n'avais pas lu jusqu'au bout et compris que tes checkbox sont dans une feuille de calculs. Je répondais pour un userform.

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Désolé, je n'avais pas lu jusqu'au bout et compris que tes checkbox sont dans une feuille de calculs. Je répondais pour un userform.
    No problem, mais ça explique pourquoi ça ne fonctionnait pas

  7. #7
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour à tous,
    essaie ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    cpt = 0
    With ActiveSheet
      'on compte le nombre de checkboxes
      For Each obj In .OLEObjects
        If obj.progID Like "Forms.CheckBox.1" Then cpt = cpt + 1
      Next
      For i = 1 To cpt
       If .OLEObjects("CheckBox" & i).Object.Value = False Then .Rows(i+2).Hidden = True
      Next
    End With
    cordialement

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Désolé, je me suis trop fié sur le mail signalant une réponse, et résultat, j'ai loupé la tienne

    Ca fonctionne, merci beaucoup

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

Discussions similaires

  1. [XL-2007] Mettre une variable dans le nom d'un module pour l'appeler
    Par friout dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/03/2011, 23h36
  2. [Debutant] Mettre une variable dans un value
    Par kimar dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/06/2007, 14h33
  3. mettre une variable dans Target.Address
    Par lilemy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/06/2007, 15h47
  4. Réponses: 2
    Dernier message: 10/04/2007, 23h43
  5. [Excel]Mettre une variable dans une fonction
    Par soad029 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/04/2006, 12h00

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