Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Vba qui détermine la moyenne en fonction du produit

Rose_Chlh

XLDnaute Nouveau
Bonjour à tous,
Je cherche à faire sortir une moyenne de temps de sortie de colis par produit indépendamment de la longueur de la série de produits.

Mon idée pour une VBA c'est de demander de sortir une moyenne lorsque deux lignes A sont différentes. Par exemple ici "Haut Cuis.PLT" <> "15 CS.PLT donc on devrait sortir la moyenne pour "Hauts Cuis"
Je commence tout juste VBA et essaie de me former seule. Je vous remercie d'avance pour les pistes et/ou solutions que vous pourraient me donner.
Bonne journée,
Rose
VB:
Sub Moyenne()
'Déclaration variables
Dim i As Byte
Dim a As Byte
Dim Derlign As Range
'Déclaration calcul
a = 1
i = 1
'Selection de la première cellule : Cells(1,"A")
Cells(a, "A").Select
With ActiveCell 'Doit commencer par Cells(1,"A")
Do Until Derlign = Range("A1").End(xlDown) 'Faire jusque la dernière ligne
If Cells(a, "A") = Cells(a + i, "A") Then 'si deux lignes de A  sont égales Alors on passe à la ligne suivante
    a = a + 1
    i = i + 1
Else
    Cells(a, "O").Select 'on atribue à la colonne 0 la moyenne du temps sur un produit
    Active.Cells.Value = Application.WorksheetFunction.Average(Range("B(a):B(a+i)"))
    a = a + 1
    i = i + 1
End If
Loop
End With
End Sub
 
Solution
J'ai trouvé une solution c'est bon merci Si cela peut en aider certains :
VB:
Sub macrol()
'Mise en place des données
Dim i As Integer
Dim a As Integer
Dim Moyenne As String
Dim MaSomme As Single
Dim MaPlage As Range
Dim Nombre As Single
'Calcul
i = 1
a = 3 'Colonne
MaSomme = 0
Nombre = 0
Cells(a, 1).Select
Do While (Cells(a, 1).Value <> 0)
If Cells(a, 1) = Cells(a + i, 1) Then
       Cells(a, 13) = 0
       i = i + 1
       'a = a + 1
Else
 'Cells(a, 13).Select
    Range(Cells(a, 1), Cells(a + i - 1, 1)).Select
    Nombre = Selection.Rows.count
    'MaPlage = Range(Cells(a, 12), Cells(a + i, 12))
    Range(Cells(a, 12), Cells(a + i - 1, 12)).Select
    MaSomme = Application.WorksheetFunction.Sum(Selection)
    Cells(a, 15) = Nombre...

Rose_Chlh

XLDnaute Nouveau
J'ai trouvé une solution c'est bon merci Si cela peut en aider certains :
VB:
Sub macrol()
'Mise en place des données
Dim i As Integer
Dim a As Integer
Dim Moyenne As String
Dim MaSomme As Single
Dim MaPlage As Range
Dim Nombre As Single
'Calcul
i = 1
a = 3 'Colonne
MaSomme = 0
Nombre = 0
Cells(a, 1).Select
Do While (Cells(a, 1).Value <> 0)
If Cells(a, 1) = Cells(a + i, 1) Then
       Cells(a, 13) = 0
       i = i + 1
       'a = a + 1
Else
 'Cells(a, 13).Select
    Range(Cells(a, 1), Cells(a + i - 1, 1)).Select
    Nombre = Selection.Rows.count
    'MaPlage = Range(Cells(a, 12), Cells(a + i, 12))
    Range(Cells(a, 12), Cells(a + i - 1, 12)).Select
    MaSomme = Application.WorksheetFunction.Sum(Selection)
    Cells(a, 15) = Nombre
    Cells(a + i - 1, 13) = (MaSomme) / (Nombre)
    a = a + i
    i = 1
End If

Loop
Range("L2").Select
End Sub
 

Discussions similaires

Réponses
2
Affichages
329
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…