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

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
528
Réponses
12
Affichages
545
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…