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 :

Calcul d'un ratio avec OptionButtons et frame dans Userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 25
    Par défaut Calcul d'un ratio avec OptionButtons et frame dans Userform
    Bonjour,

    Tout d'abord je tiens à préciser que je suis une vraie débutante en VBA (même si je m'arrange toujours pour avoir quelque chose qui fonctionne).

    Je bosse actuellement sur un projet basé sur des Userforms. Dans l'un d'eux, je demande à l'utilisateur de donner une note à 10 critères (0, 2, 5 ou 10) pour cela j'ai mis à chaque fois un cadre (Frame1, Frame2, ...) et dans chaque cadre 4 boutons (donc 40 OptionButtons!!!).

    Ensuite je fais le total de ces boutons dans zTotal (j'ai 40 codes comme celui-là).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub OptionButton1_Change()
     
    If OptionButton1.Value = True Then
    zTotal = zTotal + 0
    Else
    zTotal = zTotal - 0
    End If
     
    End Sub
    Puis j'envoi mes données vers ma feuille Excel ou je peux lire un résumé de tous les avis donnés:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim j As Integer
    j = Worksheets("AUDIT").Range("DébHisto").CurrentRegion.Rows.Count
    
    With Worksheets("AUDIT").Range("DébHisto")
            .Offset(j, 24).Value = Format( ?????? , "0%")
    J'ai regardé dans la feuille est la cellule zTotal correspond, en language courant, à:

    =(E2+G2+I2+K2+M2+O2+Q2+S2+U2+W2)/(100-(NB.VIDE(D2:X2)-10)*10)

    Je m'explique. Si l'utilisateur ne répond pas pour tous les critères mais seulement a 6 par exemple, la note est faussée si je la met directement en format "0%". Je cherche donc un moyen de tenir compte du nombre de cadres utilisés pour pouvoir calculer un pourcentage en fonction du nombre de réponses.

    Je suis claire?

    Merci d'avance pour vos réponses.

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Euh... Je n'ai pas tout saisi ! ^^

    Mais d'après ce que j'ai compris, tu as sur ta ligne 2 tous les résultats des notes demandées.

    Si tu veux la moyenne de ces notes, je te proposerai cela :
    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
    Dim test As Range
    Dim lp As Integer
    Dim tot As Integer
     
    With Worksheets("Feuil7")
        Set test = .Range("A2")
        tot = 0
        lp = 0
        For i = 0 To .Cells(2, .Cells.Columns.Count).End(xlToLeft).Column - 1
            If test.Offset(0, i) <> "" Then
                tot = tot + test.Offset(0, i)
                lp = lp + 1
            End If
        Next i
     
        test.Offset(0, i) = (tot / lp)
    End With
    Pour autant, n'étant pas sûr d'avoir compris ta question, je te laisse revenir vers moi !

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 25
    Par défaut Résolu!
    Le code ne fonctionnait pas tout à fait, il me donnait bloquait toujours au niveau de " test.Offset(0, i) = (tot / lp) " et je n'arrivait pas à comprendre pourquoi. Aussi, j'ai repris la formule que j'ai couplé avec tes bonnes idées, Kimy_Ire.

    Citation Envoyé par Kimy_Ire Voir le message
    Dim test As Range
    Dim lp As Integer
    Dim tot As Integer

    '.......

    test.Offset(0, i) = (tot / lp)
    Citation Envoyé par Kimy_Ire Voir le message
    If test.Offset(0, i) <> "" Then
    tot = tot + test.Offset(0, i)
    lp = lp + 1
    End If
    Au final, lorsque j'envois mes données j'utilise:

    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
    Dim j As Integer
    j = Worksheets("Feuil1").Range("DébHisto").CurrentRegion.Rows.Count
    
    Dim stt As Integer
    stt = 100
    
    With Worksheets("Feuil1").Range("DébHisto")
            .Offset(j, 0).Value = Format(Now, "dd/mm/yyyy hh:nn:ss")
    
    '.......
    
            .Offset(j, 21).Value = Me.TextBox9.Value
                If OptionButton37.Value = True Then
                .Offset(j, 22).Value = 0
                End If
                If OptionButton38.Value = True Then
                .Offset(j, 22).Value = 2
                End If
                If OptionButton39.Value = True Then
                .Offset(j, 22).Value = 5
                End If
                If OptionButton40.Value = True Then
                .Offset(j, 22).Value = 10
                End If
                If .Offset(j, 22).Value = "" Then
                stt = stt - 10
                End If
            .Offset(j, 23).Value = Me.TextBox10.Value
            .Offset(j, 24).Value = Format(zTotal.Caption / stt, "0%")
    End With
    Rien de bien compliqué en soi, il fallait juste y penser, et ça, c'est pas mon point fort apparemment !

    En grand merci à Kimy_Ire pour son aide !!!

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

Discussions similaires

  1. calcul d'un ratio avec des conditions
    Par Messi007 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 17/04/2014, 11h37
  2. Réponses: 0
    Dernier message: 10/08/2010, 09h56
  3. Réponses: 9
    Dernier message: 02/05/2006, 21h17
  4. [C#] Calcul sur les dates avec des DateTimePicker
    Par alizee971 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 02/04/2005, 17h14
  5. Calcul d'un total avec Rave Report
    Par webbulls dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/05/2004, 13h46

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