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 :

Changement Format (.Value & .Enabled) suivant la valeur d'une CheckBox dépendant de i


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
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Par défaut Changement Format (.Value & .Enabled) suivant la valeur d'une CheckBox dépendant de i
    Bonjour


    Voici ma subroutine :

    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
     
    Private Sub UserForm_Activate()
     
        Dim Nbseq As Integer, m As Integer
     
        Nbseq = calculernbseq()
     
        For m = 1 To Nbseq
            Controls("OptionButtonTd" & m).Value = Not Controls("CheckboxCas" & m).Value
            Controls("OptionButtonTrTnd" & m).Value = Not Controls("CheckboxCas" & m).Value
            Controls("OptionButtonTd" & m).Enabled = Not Controls("CheckboxCas" & m).Value
            Controls("OptionButtonTrTnd" & m).Enabled = Not Controls("CheckboxCas" & m).Value
        Next
     
    End Sub
    Lorsque je lance le code, rien ne se passe pour cette partie codée.

    Tous les objets sont créés de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            Set Obj = UserForm3.Controls.Add("forms.checkbox.1")
            With Obj
                .Name = "CheckboxCas" & i
                .Left = 38 'position par rapport au rebord gauche de l'UserForm
                .Top = 27 * i + 37 + decalver 'position par rapport au haut de l'UserForm
                .Width = 35 'largeur de la zone d'écriture
                .Height = 10 'hauteur de la zone d'écriture
                .Value = False
                .Visible = True
                .Font.Size = 8
            End With
    i correspond à m dans l'autre partie du code (cette juste qu'il est dans une subroutine différente)

    Mon souhait est qu'a l'activation de la Userform :
    - Les CheckBoxCas (1 à Nbseq) est la valeur False
    - Les 2 OptionButton (Td/TrTnd) (1 à Nbseq) est la valeur False et Enabled
    Cette partie c'est bon avec la valeur du .Value et .Enabled à la creation des Objets

    Ensuite ça se complique pour moi :
    Lorsque la Userform est activité, je souhaiterais que lorsque l'on coche le CheckBoxCas & m les 2 OptionButton (du même m) se dé-Enabled (passe de True à False) et qu'un des deux OptionButton (Td par Exemple) passe de valeur False à True.

    J'avais déjà fais appelle à votre aide pour un problème similaire mais ici, c'est plus compliqué. Je ne peux pas double cliquer sur l'objet et écrire un code associé (Private Sub CheckBoxCas_Click() par exemple) car ils ne sont pas présent dans la UserForm car ils sont générés au lancement du code.

    J'espère avoir été assez explicite, si vous avez besoin de plus de précision dites le moi


    Cordialement

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Je n'ai pas vu ton code, mais cette ligne m'interpelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nbseq = calculernbseq()
    Que vaut "calculernbseq" ? à priori c'est une fonction, ça renvoie une valeur ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre confirmé
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Par défaut
    Merci pour ta réponse rapide


    Que vaut "calculernbseq" ? à priori c'est une fonction, ça renvoie une valeur ?
    Oui, tout à fait.
    Elle renvoie un entier. La valeur dépend du dossier sélectionné, on ne la connait pas à l'avance.
    En générale entre 1 et 50.
    Mais du coup c'est ça qui me pose problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For m = 1 To Nbseq
            Controls("LabelTd" & m).Enabled = Not (OptionButton2.Value)
        Next
    Par exemple ce bout de code fonctionne parfaitement car j'ai "dessiné" OptionButton2 sur la UserForm
    Mais si la partie à droite n'a pas été "dessinée" sur la UserForm, je suis bloqué car elle dépend de l'incrément.

    J'ai essayé également le Test en créant une Private Sub juste pour m=1 mais ça ne fonctionne pas non plus.

    Donc je ne sais pas si c'est possible de réaliser ce que je souhaiterai faire

  4. #4
    Membre confirmé
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Par défaut
    RECTIFICATION


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub UserForm_Activate()
     
        Dim Nbseq As Integer, m As Integer
     
        Nbseq = calculernbseq()
     
        For m = 1 To Nbseq
            Controls("OptionButtonTd" & m).Value = Controls("CheckboxCas" & m).Value
            Controls("OptionButtonTrTnd" & m).Value = Controls("CheckboxCas" & m).Value
            Controls("OptionButtonTd" & m).Enabled = Not Controls("CheckboxCas" & m).Value
            Controls("OptionButtonTrTnd" & m).Enabled = Not Controls("CheckboxCas" & m).Value
        Next
     
    End Sub
    Ce code fonctionne, un troisième OptionButton (que je souhaite supprimer avec cette mise à jour du code) qui était coché par défaut m'empêchait de voir que le code fonctionnait.


    Mon problème maintenant est que si je décoche la CheckBoxCas & m, rien ne se passe.
    Je pense que c'est parce que j'ai écrit des la partie Private Sub UserForm_Activate().
    Du coup je ne sais pas où écrire le code pour qu'à chaque cochage/décochage d'une CheckBoxCas les formats des OptionButton s'actualisent.


    Cordialement

  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Citation Envoyé par GoFio Voir le message
    Mon problème maintenant est que si je décoche la CheckBoxCas & m, rien ne se passe.
    Je pense que c'est parce que j'ai écrit des la partie Private Sub UserForm_Activate().
    Du coup je ne sais pas où écrire le code pour qu'à chaque cochage/décochage d'une CheckBoxCas les formats des OptionButton s'actualisent.
    Cordialement
    Il faut que tu mettes cela sur l'évènement de la CheckBox directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub CheckBox1_Click()
    Le problème que tu vas avoir est que tes CheckBox sont dynamiques

    j'avais vu u n sujet de ce type déjà sur ce forum, si je le retrouve je te met le lien

    Regarde ici, je crois que ça correspondrait peut-être à ton besoin

    http://www.developpez.net/forums/d14...ck-checkboxpi/
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  6. #6
    Membre confirmé
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Par défaut
    Merci !
    Par contre tout ça m'a l'ai un peu compliqué pour mon niveau.
    Donc je laisse le sujet en suspend le temps de lire plus en détails et d'analyser les exemples que j'ai pu trouver sur internet.
    Mais maintenant je sais qu'elle direction je dois prendre pour résoudre le problème.

    A bientôt

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/01/2011, 11h24
  2. [XL-2007] Modidifer une ligne suivant la valeur d'une cellule
    Par jimmy1120112 dans le forum Excel
    Réponses: 3
    Dernier message: 16/11/2010, 17h05
  3. Réponses: 2
    Dernier message: 29/07/2010, 20h51
  4. Enregistrer un classeur suivant la valeur d'une cellule
    Par majcalro dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/01/2008, 14h56
  5. Réponses: 2
    Dernier message: 03/01/2008, 16h15

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