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

Somme d'une plage sans répitition

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 !

Adamev

XLDnaute Occasionnel
Bonjour à tous;
Mon souci est le suivant:
Dans une plage j'ai des nombres, distincts ou égaux. J'aimerais avoir par formule, ou par VBA, la somme de ces nombres à condition que lorsqu'un nombre est répété il ne soit pris dans la somme qu'une seule fois.
Merci d'avance
 
Re : Somme d'une plage sans répitition

Bonjour, Adamev.

Comme vous n'avez pas jugé utile de joindre un fichier (paragraphe C3 de Lien supprimé), et plutôt que risquer de vous fournir une proposition qui risque de ne pas répondre à votre attente, et vous faire perdre du temps, j'essaie de deviner comment sont organisées vos données dès que j'ai un moment.

Edit : Les données dans champ, sans vide, essayez :
=SOMME(SI(FREQUENCE(champ;champ)>0;champ))
 
Dernière édition:
Re : Somme d'une plage sans répitition

Bonjour,

Champ sans cellule vide

=SOMMEPROD(champ*(1/NB.SI(champ;champ)))

Si cellules vides

=SOMME(SI(champ<>"";champ*(1/NB.SI(champ;champ))))
Valider avec maj+ctrl+entrée

Avec fonction perso
Code:
Function SommeSansDoublons(champ As Range)
  Set d = CreateObject("Scripting.Dictionary")
  For Each c In champ
   If Not d.exists(c.Value) Then
    d(c.Value) = ""
    s = s + c.Value
   End If
  Next c
  SommeSansDoublons = s
End Function

JB
 
Dernière édition:
Re : Somme d'une plage sans répitition

autre solution...
paramétrer la plage

Sub essai()
Set MaPlage = Range("B4:B11") 'cellules à traiter(sommer sans doublon)
'recencer les doublons et les mettre en italic
For Each vcell In MaPlage
'passer les cellules en italiques
If vcell.Font.Italic = True Then GoTo 100

MaPlage.Select
For Each wcell In Selection
If vcell.Value = wcell.Value Then
n = n + 1
If n > 1 Then wcell.Font.Italic = True
End If
Next
100 n = 0
Next
'ne sommer que ce qui n'est pas en italique
For Each Xcell In MaPlage
If Xcell.Font.Italic = False Then
Somme = Somme + Xcell.Value
End If
Next
MsgBox "la somme est " & Somme
End Sub
 
Re : Somme d'une plage sans répitition

Bonjour Victor21, tdenfert, BOISGONTIER, fredl, CISCO, le fil

Un grand merci à vous tous. Toutes vos réponses répondent bien à mon attente. Je suis fier d'être membre dans ce magnifique forum.
Merci encore!
 
Re : Somme d'une plage sans répitition

Bonjour DoubleZéro, le fil
Merci pour pour votre contribution. C'est un plus trés important pour moi qui suis débutant en VBA.
 
Dernière édition:
- 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

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