Microsoft 365 macro vba sumifs

Cece@

XLDnaute Nouveau
Bonjour à tous,

J'ai un fichier Excel avec 2 onglets :
- onglet 1 : P ALL - une base qui contient l'ensemble des éléments de rémunération (ex en colonne B les matricules, en colonne S la nature du montant, salaire de base, salaire brut etc, en cololnne N le montant)
- onglet 2 : le fichier final (données E) ou doit apparaitre les calculs par salarié donc par matricule

Une formule somme si ens répond à mon besoin, mais j'ai 15 fichiers ( car 15 sociétés) pour qui ce travail doit être effectué, l'onglet 1 est très lourd parfois plus de 70 000 lignes...
J'ai effectué une macro la voici ci-dessous, elle fonctionne mais uniquement sur la colonne U de l'onglet donnée E , je souhaiterais la reproduire sur les colonne V à la colonne CX

Avec la macro ci-dessous, le résultat est affiché dans la cellule U3, U4 etc.....le critère se trouve en U1... Mais j'ai aussi un critère en V1, W1 etc....se calcul soit donc se faire également sur V3, W3 etc....

Sub SOMMESIMultipleConditions()
Dim i As Long
i = 3

While Worksheets("Données E").Range("a" & i) <> ""
Worksheets("Données E").Range("U" & i).Value = Application.WorksheetFunction.SumIfs(Worksheets("P ALL").Range("N2:N877"), Worksheets("P ALL").Range("S2:S877"), Worksheets("Données E").Range("U1"), Worksheets("P ALL").Range("B2:B877"), Worksheets("Données E").Range("A" & i))
i = i + 1

Wend

End Sub

La macro ci-dessus fonctionne, mais que dans la colonne U de l'onglet donnée E, j'aimerais la reproduire en automatique/boucles (je ne connais le terme VBA exact) sur les colonne V à CX....

J'espère être clair dans mes explications !

Si quelqu'un à la solution je suis preneuse :)

Merci à tous,
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Cece, Phil,
Pas tout bien compris.
Essayez par ex :
Code:
Sub SOMMESIMultipleConditions()
Dim i%, C%
Set F = Worksheets("PALL")
For C = 21 To 102 ' Colonne U à CX
    i = 3
    While Worksheets("Données E").Cells(i, "A")<> ""
        Worksheets("Données E").Cells(i, C).Value = Application.WorksheetFunction.SumIfs(F.[N2:N877], _
                                                    F.[S2:S877], Worksheets("Données E").Cells(1, C), _
                                                    F.[B2:B877], Worksheets("Données E").Cells(i, "A"))
        i = i + 1
    Wend
Next C
End Sub
On boucle des colonnes U à CX avec le For Next
 

Cece@

XLDnaute Nouveau
Super! Merci! Si je peux abuser, est-il possible demander à la macro de s'arrêter si la ligne 1 est vide de même qu'elle s'arrête quand il n'ya plus de matricule en A?

Merci encore :)
 

Pièces jointes

  • test.xlsx.xlsm
    61.2 KB · Affichages: 0

Discussions similaires

Réponses
7
Affichages
315
Réponses
12
Affichages
235

Statistiques des forums

Discussions
312 149
Messages
2 085 773
Membres
102 972
dernier inscrit
Alain PICHON