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 :

Dans un UserForm, effectuer un calcul à partir de CheckBox [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut Dans un UserForm, effectuer un calcul à partir de CheckBox
    Bonjour à tous,
    Devellopez.com : club des professionnels de l'informatique ... moi qui suis grand débutant, j'espère ne pas m'immiscer dans un lieu d'un trop haut niveau pour moi ... Nous verrons.
    Voici mon problème. Dans un UserForm j'ai créé un Frame dans celui-ci j'ai placé 3 CheckBox. L'intitulé de chaque CheckBox est : + 10 pour la première, + 20 et + 30 pour les deux autres. Dans un Label j'ai inscrit : Total = 100.
    Je souhaite que, simplement en cliquant sur une CheckBox, l'intitulé du Label s'incrémente de la valeur indiquée (en plus ou en moins suivant que la CheckBox est ou non cochée). Un CommandButton permet de quitter la procédure.
    J'ai réussi (Oh ! exploit ...) à écrire un programme en écrivant une procédure dans chaque CheckBox (procédure que je réecris à l'identique autant de fois qu'il y a de CheckBox). Or j'ai lu ... qu'il existait une procédure beaucoup plus élégante et courte qui permettait d'indexer les CheckBox avec une variable (je ne sais pas si je m'exprime correctement ...) et qui permettait d'effectuer le même travail en une seule procédure.
    J'ai beau retourner le problème depuis plusieurs jours, je n'avance à rien. Mise à part l'affichage de mon UserForm rien ne fonctionne. Je ne sais même pas comment commencer.
    Avez-vous une solution à me proposer.
    Par avance, merci.

    Danad38

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir

    Si je comprends, tu as fait un code qui marche et que tu voudrais raccourcir.
    Si c'est cela, affiche ton code cela aidera les contributeurs.

    Cordialement,

    PGZ

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une proposition (3 Checkbox: Checkbox1, Checkbox2 et Checkbox3)
    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
    Sub Coch(cb As MSForms.CheckBox)
    Dim Sgne As Integer
     
    Sgne = IIf(cb.Value, 1, -1)
    Me.Label1.Caption = Val(Me.Label1.Caption) + Sgne * Val(Mid(cb.Name, 9)) * 10
    End Sub
     
    Private Sub CheckBox1_Click()
    Coch Me.CheckBox1
    End Sub
    Private Sub CheckBox2_Click()
    Coch Me.CheckBox2
    End Sub
    Private Sub CheckBox3_Click()
    Coch Me.CheckBox3
    End Sub

  4. #4
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut Dans un UserForm, effectuer un calcul à partir de CheckBox
    pgz, mercatog,

    Merci à vous deux pour vos réponses rapides.
    J'ai utilisé ton programme, mercatog, et j'ai effectuer les quelques modifications que je souhaitais. J'ai, grâce à toi découvert la fonction IIf (j'ai cru au premier abord que c'était une faute de frappe !), et en travaillant un peu plus la question j'ai appris beaucoup de choses sur les déclarations de variables ou de procédures (Public ou non).
    Une petite question (certainement simpliste) pour laquelle je n'ai pas encore de réponse.

    Pourquoi faut-il écrire (j'ai modifié le nom de certaines variables afin qu'elles soient pour moi, plus explicites) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Sub ChecBox_Cochée(CheckBox As MSForms.CheckBox)
    Alors que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Sub CheckBox_Cochée()
    Dim CheckBox As MSFroms.CheckBox
    Ne fonctionne pas ?

    Merci encore à vous deux.

    Danad38

  5. #5
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Citation Envoyé par Danad38 Voir le message
    Pourquoi faut-il écrire (j'ai modifié le nom de certaines variables afin qu'elles soient pour moi, plus explicites) :

    Public Sub ChecBox_Cochée(CheckBox As MSForms.CheckBox)

    Alors que :

    Public Sub CheckBox_Cochée()
    Dim CheckBox As MSFroms.CheckBox

    Ne fonctionne pas ?
    La première syntaxe déclare CheckBox comme variable à transmettre lors de l'appel de la procédure. C'est bien ce dont tu as besoin.
    Dans la seconde syntaxe, Checkbox est une variable locale, ce qui ne permet pas de désigner la checkbox à traiter quand on appelle la procédure.

    COrdialement,

    PGZ

  6. #6
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut
    Merci PGZ.
    Ton explication m'apporte "l'explication" pour des "difficultés" rencontrées dernièrement.
    Bonne journée
    Cordialement.

    Danad38

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

Discussions similaires

  1. [Toutes versions] Requête SQL dans VBA pour effectuer un calcul
    Par Lincoln911 dans le forum VBA Access
    Réponses: 7
    Dernier message: 07/04/2010, 14h47
  2. Renommer un colonne dans laquelle on effectue un calcul
    Par SnakesMaster dans le forum Requêtes
    Réponses: 1
    Dernier message: 31/05/2009, 14h00
  3. Réponses: 7
    Dernier message: 07/03/2007, 14h14
  4. Effectuer des calculs dans des zones de texte
    Par flagfight dans le forum IHM
    Réponses: 3
    Dernier message: 07/07/2006, 16h01
  5. calcul à partir de plusieur champs et affichage du resultat dans un champ
    Par carmen256 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 24/05/2006, 11h47

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