statistiques avec msgbox

  • Initiateur de la discussion Initiateur de la discussion jeanphi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jeanphi

XLDnaute Occasionnel
bonsoir


dans un fichier excel, je dispose d'une colonne Q qui va de la ligne 7 à la ligne 700 qui contient le nom des fournisseurs
en C1, j'ai une formule qui compte le nombre de fournisseurs avec =nbval(Q7:Q700)
en fait je voudrais faire des stats avec un msgbox en comptant le nombre d'achat chez tek ou tek fournisseur
ainsi en (Q7:Q700), on peut avoir cinq fois un fournisseur X, 4 fois un fournisseur Y et ainsi de suite...
je voudrais donc faire un classement des fournisseurs les plus utilisés par rapport au nombre de commandes (total en C1) avec le nom du fournisseur qui remonterait ainsi que le pourcentage d'utilisation

en fait ce quelque chose dans ce style
Private Sub OptionButton13_Click()
Dim cell As Range
compteur = 0
Total = Worksheets("FEB").Range("C1")
For Each cell In Range("O7:O700")
If cell.Value = "Computacenter" Then
compteur = compteur + 1
End If
Next cell
pourcentage = compteur / Total * 100
MsgBox "" & Round(pourcentage, 2) & " % des commandes chez Comput", vbInformation, "Statistiques fournisseur"
End Sub



quelqu'un pourrait t il m aider svp??? 🙁
merci
 
Re : statistiques avec msgbox

bonjour catrice

globalement c'est ce que je veux sauf que je voudrais que le msgbox me remonte les stat de tous les fournisseurs et ce par ordre décroissant
comprends tu ce que je veux??? 🙂
merci de ton aide
 
Re : statistiques avec msgbox

bonjour

un code qui pourrait faire le boulot :
Code:
Dim plage As Range, c As Range
Dim data As New Collection
Dim item, tablo()
Dim ligne As Integer, total As Integer, nb As Integer, i As Integer
Dim t As String

Set plage = Range("q7:q" & Range("q65536").End(xlUp).Row)

total = Application.CountA(plage)

For Each c In plage
    On Error Resume Next
    data.Add c, CStr(c)
    On Error GoTo 0
Next c

ReDim tablo(1 To data.Count, 1 To 2)

For Each item In data
    ligne = ligne + 1
    tablo(ligne, 1) = item
    nb = Application.CountIf(plage, item)
    tablo(ligne, 2) = nb / total * 100
Next item

For i = 1 To UBound(tablo)
    t = t & vbNewLine & Round(tablo(i, 2), 2) & " % des commandes chez " & tablo(i, 1)
Next i

MsgBox t
salut

edition : j'avais pas vu la demande pour le tri, il suffit de trier la variable tablo avant de renvoyer celle-ci dans la string t.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour