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 :

Automatisation de fonction [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 23
    Par défaut Automatisation de fonction
    Bonjour à tous,
    Je me retrouve confronté à un problème et malgré de nombreuses recherches, impossible de trouver une solutions qui me convienne...
    Je vous explique :
    En gros, j'ai 3 checkBox (CB1,CB2,CB3) liées chacunes à 3 TextBox(TB1,TB2,TB3).
    J'aimerais quand je clique sur le CB1, ma TB1 s'affiche et inversement, et ceux pareil pour 2 et 3.
    Le code est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CB1_Click()
         If Controls("CB1").value = True Then
         Me.Controls("TB1").visible=True
         Else
         Me.Controls("TB1").visible=False
         End if
    End Sub
    x3 pour les 3 fonctions.

    MAIS !
    Existe t-il un moyen de boucler mon nom de fonction, du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub CB(n)_click()
    , avec n ma variable variant de 1 à 3 pour réduire le code ?

    Parce que si j'ai 50 checkBox, ça fait beaucoup de lignes de code avec exactement le même contenu, juste un chiffre qui change à chaque fois...

    Merci d'avance
    Cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    il faut insérer un module de classe dans ton projet!
    Code Module de classe1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public WithEvents Txt As MSForms.TextBox
    Public WithEvents Chk As MSForms.CheckBox
    Private Sub Chk_Click()
    Txt.Visible = Chk
    End Sub
    il faut modifier le code de ton UserForme comme suis!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private cls() As New Classe1
    Private Sub UserForm_Initialize()
    For i = 1 To 50
        ReDim Preserve cls(i)
        Set cls(i).Chk = Me.Controls("CB" & i)
         Set cls(i).Txt = Me.Controls("TB" & i)
         cls(i).Txt.Visible = False
    Next
    End Sub
    pour information on ne teste pas un booléen pour accorder la même valeur à un autre booléen!
    Code inutile : Sélectionner tout - Visualiser dans une fenêtre à part
    If Controls("CB1").value = True Then
    Code utile : Sélectionner tout - Visualiser dans une fenêtre à part
    Txt.Visible = Chk
    Dernière modification par Invité ; 12/04/2017 à 17h11.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 23
    Par défaut
    Wooooooowwwww
    Merci infiniment dysorthographie pour la précision, la rapidité et la clarté de ton message !
    Je ne suis pas du tout expert en VBA et je ne connaissais absolument pas l'utilité des modules de classe !

    Vu que c'est complètement nouveau pour moi, je t'avoue avoir un dernier petit soucis...
    Que faire pour inverser cette commande, c'est à dire, lorsque la chkbox est coché, la txtbox disparaît ? (en gros j'aimerais que certaines textbox apparaissent quand on coche et pour d'autre qu'elles disparaissent quand c'est coché)

    C'est peut être une question stupide mais après différents essais rien ne fonctionne...

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 23
    Par défaut
    Oublie ma première question, en persévérant on trouve toujours
    Il suffit de changer dans le module de classe 1
    en
    Mais comment combiner les 2 ? Visible pour certaines, et non pour d'autres ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    on rajoute une propriété dans le module de classe!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public WithEvents Txt As MSForms.TextBox
    Public WithEvents Chk As MSForms.CheckBox
    Public Inv as boolean
    Private Sub Chk_Click()
    if Inv then Txt.Visible = not Chk Else Txt.Visible = Chk 
    End Sub
    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 cls() As New Classe1
    Private Sub UserForm_Initialize()
    For i = 1 T o50
        ReDim Preserve cls(i)
        Set cls(i).Chk = Me.Controls("CB" & i)
         Set cls(i).Txt = Me.Controls("TB" & i)
         cls(i).Txt.Visible = False
    Next 
    
    
    cls(i10).Inv = True
    cls(i15).Inv = True
    cls(48).Inv = True
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 23
    Par défaut
    Encore vraiment merci pour ta réponse !
    Je suis à peut prêt arrivé à faire ce que je voulais pour les CheckBox...

    Il me reste un dernier problème.
    Dans mon formulaire j'ai une dizaine de pages à un multipage, contenant chacune de nombreuse combobox et textbox.
    Comment définir alors un module de classe qui ferait la chose suivant :
    Si j'ai comme valeur 1 dans la ComboBox1 => J'affiche la txtbox : Premier1 ( la 2eme est masquée )
    Si j'ai comme valeur 2 dans la ComboBox1 => J'affiche la txtbox : Deuxieme1 ( la 1ere est masquée )
    et ce, pour mes 10 pages avec mes ComboBox allant de 1 à 10 et mes textbox de 1 à 10 aussi (avec sur chaque page une combobox et les 2 textbox...)

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    dans ce cas là c'est pas de checkbox qu'il te faut ma de optionbuton tu les regroupe dans un fram par exemple, et là le fait d'en cocher un décoche les autres et le tour est joué!

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 23
    Par défaut
    Re-Bonjour,
    Tout fonctionne avec ton code je te remercie !

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

Discussions similaires

  1. [AJAX] Automatiser lancement fonction en php
    Par Korben_Debile dans le forum AJAX
    Réponses: 1
    Dernier message: 01/06/2010, 00h11
  2. [E-03] automatiser la fonction "=si(estnum(x);x;y)"
    Par kokoVBA dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/02/2009, 10h25
  3. Automatiser une fonction en php
    Par Gwendolyne dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 06/06/2008, 20h05
  4. comment automatiser la fonction rechercher/remplacer ?
    Par tristan_sauvage dans le forum Access
    Réponses: 4
    Dernier message: 28/12/2006, 17h05
  5. Automatiser la fonction export dans outlook
    Par sev54 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 03/02/2005, 14h49

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