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 :

Calculer avec des combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Par défaut Calculer avec des combobox
    Bonjour,

    Dans excel 2003, j'ai la formule suivante pour calculer la moyenne d'une plage en excluant les cellules N/A :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME(plage)/NB.SI(plage;">=0")
    J'aimerais savoir si je peux faire le même genre de calcul en utilisant des combobox (zone de liste déroulante ayant comme valeur N/A, 0, 1, 2, 3).

    Je pense avoir environ 40 combobox.

    La personne remplie son formulaire et en bas de la feuille elle doit obtenir sa moyenne. Sa moyenne doit changer automatiquement si elle change ses réponses.

    Merci beaucoup à l'avance,

    mjp06

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    Très clair

    Mais encore ?

    Quielle est la valeur de ta formule qui est modifiée par le choix dans ta combo (et laquelle, de combo, puisque tu en as plusieurs) ?
    J'au des difficultés, personnellement, à deviner ...

  3. #3
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonsoir,

    je rajouterai : elle sont où ces combobox et comment ce nomment'elles?

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonsoir tlm,

    Si je peux me permettre (je me le permet parce que je viens de terminer le bricolage )

    Vu qu'il y a 40 ComboBox à gérer, il serait intéressant de passer par un UserForm et un module de Classe pour éviter de devoir encoder l'événement Change de chaque ComboBox (adapté de l'exemple de Silkyroad dans la FAQ : Comment identifier sur quel contrôle l'utilisateur a cliqué ?)

    • dans le module du UserForm
      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 UserForm_Initialize()
      Dim Ctrl As Control, Cl As Classe1, i As Byte, Tablo As Variant
       
      Set Col = New Collection
      Tablo = Array("N/A", "0", "1", "2", "3")
       
      For Each Ctrl In Me.Controls
          If TypeOf Ctrl Is MSForms.ComboBox Then
              Set Cl = New Classe1
              Set Cl.Cb = Ctrl
              Col.Add Cl
              For i = 0 To UBound(Tablo)
                  Ctrl.AddItem Tablo(i)
              Next
          End If
      Next Ctrl
       
      End Sub
    • dans un module standard
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      Public Col As Collection
       
      Sub afficher_usf()
          UserForm1.Show
      End Sub
    • dans un module de classe nommé "Classe1"
      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
      Public WithEvents Cb As MSForms.ComboBox
       
      'gérer l'evenement Change des ComboBox
      Private Sub Cb_Change()
      Dim CtrlCb As Control, Result As Integer, Nbr As Byte, Moy As Single
       
      For Each CtrlCb In UserForm1.Controls
          If TypeOf CtrlCb Is MSForms.ComboBox Then
              Select Case CtrlCb
                  Case 0, 1, 2, 3
                  Result = Result + CtrlCb
                  Nbr = Nbr + 1
              End Select
          End If
      Next
      Moy = Result / Nbr
       
      UserForm1.TextBox1 = Moy
      End Sub

    Testé sur 10 ComboBox et No Problemo, peut s'adapter si les contrôles sont directement sur la feuille
    .

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Par défaut
    Désolé de ne pas être assez clair,

    C'est un formulaire d'évaluation dans excel 2003

    Mon combobox sert de liste déroulante et j'ai les valeurs suivantes :

    N/A = non applicable donc pas de point
    0 = 0 point
    1 = 1 point
    2 = 2 points
    3 = 3 points


    Chaque question aura les même choix dans la liste déroulante.

    Donc 40 questions, donc 40 combobox...

    Donc lorsqu'une personne aura complété son évaluation j'aurai 40 questions avec des notes qui varient de "non applicable" à 3 points.

    Il ne faut pas que les "non applicable" fassent baisser la moyenne.

    Elle pourra avoir sa note, par exemple : 2,4/3

    J'aime mieux la présentation du combobox (on voit vraiment un bouton avec liste déroulante) comparativement à la liste déroulante→données→validation→liste. (on ne voit pas le bouton de défilement avant d'être sur la cellule.

    Si vous avez d'autres questions, n'hésitez pas,

    Merci à l'avance,

    mjp06

  6. #6
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Tu n'as toujours pas répondu aux question posées ..

    tes combobox ils sont ou ? s'ils sont sur un UserForm adapte le code à Fring..

    s'ils sont sur des feuilles de calcul dis nous leur nom à tes combobox (afin qu'on sache de qu'elle boîte à outils ils viennent ?)

  7. #7
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par JackOuYA Voir le message
    (afin qu'on sache de qu'elle boîte à outils ils viennent ?)
    Bonne question, parce que s'ils proviennent du menu "Formulaires"...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Par défaut
    Désolé mais quand j’ai répondu à ucfoutu je ne voyais pas encore vos autres questions…

    Mes combobox sont dans une feuille excel. Elles s’appellent ComboBox1 à ComboBox40 (je ne les ai pas renommées). Elles viennent de la boite à outils contrôles→Zone de liste déroulante, et non pas de formulaires…

    Pour l’instant, j’ai fait un document test et tous les combobox sont sur ma feuille excel.

    Si vous pensez que je suis mieux de faire comme le code de fring avec Userform dit-le moi ou si je peux le faire directement dans la feuille. (le moins compliqué svp…)

    Et si je protège ma feuille avec un mot de passe est-ce que je vais avoir des problèmes pour l’exécution des macros? La dernière fois j’ai eu des problèmes et les macros étaient dans la feuille excel.

    Merci beaucoup de m’aider,

    mjp06

    J’ai fait un test avec les codes de fring et ça semble fonctionner.

    Cependant, je ne suis pas habituée avec les UserForm, mais je pense que j’aimerais mieux le faire dans la feuille excel. Je pense que ce serait plus facile lorsque les utilisateurs complèteront le formulaire. Ils vont ouvrir le document excel et le formulaire serait déjà là à l’écran(feuille1). De plus, je dois ajouter des images et beaucoup de texte et je suis plus à l'aise de le faire sur une feuille.

    Alors est-ce qu’on peut modifier le code de fring si je place tous mes ComboBox dans la feuille excel?

    N.B. Je vais protéger la feuille par un mot de passe, donc je veux que ma macro fonctionne quand même…

    Merci beaucoup,

    mjp06

Discussions similaires

  1. Calcule avec des virgules
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 27/07/2007, 09h43
  2. Calcul avec des zones de texte
    Par EGSway dans le forum IHM
    Réponses: 8
    Dernier message: 09/07/2007, 20h59
  3. Calcul avec des heures
    Par egg3774 dans le forum Access
    Réponses: 2
    Dernier message: 20/03/2007, 19h53
  4. Utilisation du Enable avec des combobox ou des listbox
    Par legos dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 19/09/2006, 22h35
  5. Calcul avec des flottants
    Par tarzent dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/12/2005, 11h20

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