Automatiser calcul de moyenne vba excel 2007

Résolu
Bonjour,

Je vous contacte car je rencontre des difficultés sur mon programme (je suis débutant).

J'utilise VBA sous Excel]2007.

J'ai une feuille excel avec sur 10 lignes de données chiffrées. Et je cherche à automatiser le calcul] de la moyenne d'une ligne par l'utilisation d'une fenêtre qui permet de sélectionner la ligne à calculer (avec une listbox) et par un commandbutton (qui va ordonner le calcul de la moyenne).
Le résultat du calcul devra s'afficher dans la fenêtre sur une textbox prévue à cet effet.

Je n'arrive vraiment pas à trouver ce code, si quelqu'un pouvait m'aider ce serait génial!!

Merci d'avance

10 réponses

  1. Pour info, j'ai préparé la fenêtre, il ne me reste plus qu'à trouver le code à appliquer pour la commandbox et trouver le code pour afficher le résultat sur la listbox
    0
    1. Aidez moi s'il vous plaît! Merci!
      0
      1. Contributeur
        Bonjour,
        Le plus "automatique" serait de mettre la formule Moyenne sur chaque ligne.
        Mais bon, si tu veux vraiment du VBA ...
        Private Sub CommandButton1_Click()
        Dim Lig As Long, ColDeb As Integer, ColFin As Integer
        Dim Tot As Double, i As Integer
            'initialiser la ligne à calculer
            Lig = 7 ' à adapter à la sélection ListBox
            'initialiser les colonnes de.. à
            ColDeb = 4: ColFin = 11
            With Sheets("Feuil1")
                For i = ColDeb To ColFin
                    Tot = Tot + .Cells(Lig, i)
                Next i
            End With
            TextBox1.Text = Tot / (i - ColDeb)
        End Sub

        A+
        0
        1. Merci pour ton aide, cependant, je n'arrive toujours pas à le faire tourner.
          Voici ce que j'ai complété:

          Private Sub CommandButton1_Click()
          Dim Lig As Long, ColDeb As Integer, ColFin As Integer
          Dim Tot As Double, i As Integer

          'initialiser la ligne à calculer
          Lig = ListBox1_Click

          ' à adapter à la sélection ListBox

          'initialiser les colonnes de.. à
          ColDeb = B: ColFin = IV

          With Sheets("le nom de ma feuille")
          For i = ColDeb To ColFin
          Tot = Tot + .Cells(Lig, i)
          Next i
          End With
          TextBox1.Text = Tot / (i - ColDeb)
          End Sub
          0
          1. le problème vient apparemment de Lig. Je n'arrive pas à définir que la rowsource de Lig est spécifié par la listbox1.
            Merco
            0
          2. au secours!
            0
        2. Contributeur
          Hummmm.. faudrait quand même que tu aprenne un peu loe VBA si tu veux t'en servir !!!
          Quel est le text de ta listbox ?
          Pour les colonnes c'est les N° que tu doit mettre, par exemple B c'est la colonne 2
          A=1, B=2, C=3,....AA=27....IA=235...
          With Sheets("le nom de ma feuille") c'est le nom de l'onglet de ta feuille
          Sur quel ligne se trouve tes dix lignes ?
          0
          1. Ok merci j'ai bien capté pour les colonnes.
            Et ok pour la feuille
            Mes lignes se trouvent sur les lignes de 2 à 11.
            Dans le listbox, j'ai pu entrer les bonnes lignes dans rowsource en mettant (2:11).
            J'ai l'impression que le problème vient de Lig=, je n'arrive pas à faire en sorte que la ligne à choisir est définie par cette listbox...
            0
            1. Contributeur
              Eh oui, et au final tu a fait comment ?
              0
            2. Voilà, et j'ai en plus fait en sorte d'afficher un message d'erreur au cas où aucun choix n'est fait:
              Private Sub CommandButton1_Click()

              Dim a As Integer
              Dim Bool As Boolean

              a = ListBox1.ListIndex + 2

              If a >= "2" Then
              Bool = True
              End If

              If Bool = True Then

              TextBox1.Text = Application.WorksheetFunction.Average(Range(Cells(a, 2), Cells(a, 255)))

              Else
              MsgBox "Veuillez faire un choix", vbCritical

              End If

              End Sub
              0
          2. Contributeur
            Lig = ListBox1.ListIndex + 2
            0
            1. Salut,

              Merci pour ton aide. J'ai finalement trouvé (il m'aura fallu 4h environ) .
              0
              1. Bonjour,
                Le plus "automatique" serait de mettre la formule Moyenne sur chaque ligne.
                Mais bon, si tu veux vraiment du VBA ...

                Private Sub CommandButton1_Click()
                Dim Lig As Long, ColDeb As Integer, ColFin As Integer
                Dim Tot As Double, i As Integer
                'initialiser la ligne à calculer
                Lig = 7 ' à adapter à la sélection ListBox
                'initialiser les colonnes de.. à
                ColDeb = 4: ColFin = 11
                With Sheets("Feuil1")
                For i = ColDeb To ColFin
                Tot = Tot + .Cells(Lig, i)
                Next i
                End With
                TextBox1.Text = Tot / (i - ColDeb)
                End Sub

                J'ai testé ceci à l'instant et personnellement sa marche très bien pour ma part et vous ?
                0
                1. Contributeur
                  Ce serait plus simple..
                  Supprimer le bouton (plus besoin de tester si sélection faite)
                  et mettre l'affichage directement dans l'événement de la listbox.
                  Private Sub ListBox1_Click()
                  Dim A As Integer
                      A = ListBox1.ListIndex + 2
                      TextBox1.Text = Application.Average(Range(Cells(A, 2), Cells(A, 255)))
                  End Sub

                  A+
                  0