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

Somme.si en colonne en VBA

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

P

peternewman007

Guest
Bonjour,

Je cherche un moyen de faire des somme.si en vba par colonne.
Je joins un tableau exemple en annexe mais le tableau final comporte 96 personnes et 3851 de plage d'addition.

Pourriez-vous m'aider svp?

Merci d'avance,

Peter
 

Pièces jointes

Re : Somme.si en colonne en VBA

Merci mais ça ne fonctionne toujours pas 🙁

J'ai indiqué ce code dans le module 1 :

Et il m'affiche ce souci :


Merci d'avance,

Peter
 
Re : Somme.si en colonne en VBA

La fonction ne doit plus être invoquée à partir de la colonne A, mais à partir de la colonne qui précède la 1ère à totaliser : la G en l'occurrence. Si ça n'allait pas, il faudrait indiquer plus de renseignements à la fonction pour cerner la partie à totaliser.
 
Re : Somme.si en colonne en VBA

Veiller aussi à ce que les cellules à totaliser contiennent des nombres ou au pire soient vides. Sur le classeur en lien j'ai des #N/A en AN:AO. Si j’étends la formule jusqu'à la colonne AO j'ai effectivement ce résultat.

À moins de rajouter un test If IsNumeric(Détail(C + dC)) Then Ts(Ls, C) = Ts(Ls, C) + Détail(C + dC)
On a donc :
VB:
Function TotauxPers(ByVal Src As Range)
Dim Ts(), Pers As SsGroup, Ls&, Détail, dC&, C&
With Application.Caller
   ReDim Ts(1 To .Rows.Count, 1 To .Columns.Count)
   dC = .Column - 1: End With
For Each Pers In GroupOrg(Src, 1)
   Ls = Ls + 1: Ts(Ls, 1) = "Total " & Pers.Id
   For Each Détail In Pers.Contenu
      For C = 2 To UBound(Ts, 2)
         If IsNumeric(Détail(C + dC)) Then Ts(Ls, C) = Ts(Ls, C) + Détail(C + dC)
         Next C, Détail, Pers
While Ls < UBound(Ts): Ls = Ls + 1: For C = 1 To UBound(Ts, 2): Ts(Ls, C) = "": Next C: Wend
TotauxPers = Ts
End Function
 
Dernière édition:
Re : Somme.si en colonne en VBA

Merci beaucoup, cela fonctionne pour moi maintenant avec le nom de la personne en colonne A.
Il ne me reste plus qu'à trouvé comment évacué les 0 en trop (de la colonne B à G)..

Peter
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

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