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

Faire la moyenne d'une liste de doublons alphanumériques

  • Initiateur de la discussion Initiateur de la discussion benibi
  • 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 !

benibi

XLDnaute Nouveau
Bonjour à tous, je me suis inscrit sur ce forum afin de vous demander de l'aide car je bloque.

Je suis sur Excel 2002, voici un extrait de mon fichier (il y a 3778 lignes)

ACTS 16
ACTS 10
ACTS 11
AD AIR SOLUTIONS 12
ADLER TECHNOLOGIES 20
ADLER TECHNOLOGIES 13
ADLER TECHNOLOGIES 10
ADLER TECHNOLOGIES 13
ADLER TECHNOLOGIES 0
ADLER TECHNOLOGIES 9
ADLER TECHNOLOGIES 80
AEROMETROLOGIE SA 10
AEROMETROLOGIE SA 9


Mon problème :

Je souhaite faire disparaitre les doublons tout en calculant leurs moyenne,

Par exemple pour ACTS, qu'il n’apparaisse qu'une seule fois suivi de la moyenne de 16, 10 et 11 soit (16+10+11)/3



GG à celui ou celle qui trouve la solution, je penche sur ce problème depuis presque 24 heures 🙂

Je suis ouvert à toute les solutions, macro compris mais je n'ai aucunes connaissance dans ce domaine donc je joint mon fichier Excel pour que vous puissiez l'appliquer (si vous en trouvez un).



Merci de votre aide et bonne chance


Ben
 

Pièces jointes

Re : Faire la moyenne d'une liste de doublons alphanumériques

Bonsoir à tous,

Avec 2 dictionnaires, résultat en Feuil3.
VB:
Sub Moyenne()
Set d = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
With Sheets("Feuil1")
  For Each c In .Range("a2", .[a65000].End(xlUp))
    If IsError(c.Offset(, 1).Value) Then c.Offset(, 1).Value = 0
    d(c.Value) = d(c.Value) + c.Offset(, 1).Value
    d2(c.Value) = d2(c.Value) + 1
  Next c
End With
With Sheets("Feuil3")
  .Cells.ClearContents
  .Range("A1") = "Tiers"
  .Range("A2").Resize(d.Count, 1) = Application.Transpose(d.keys)
  a = d.items
  b = d2.items
  For i = LBound(a) To UBound(a)
    .Cells(i + 2, "B") = a(i) / b(i)
  Next i
  .Select
End With
End Sub

Klin89
 
- 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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…