Excel VBA : Syntaxe SUMIF [Résolu/Fermé]

Signaler
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
-
 ameddo79 -
Bonjour,

J'essaie d'utiliser la fonction SumIf dans le contexte suivant :
Dans la colonne H, depuis H3 jusqu'à la dernière cellule utilisée dans cette colonne, je recherche l'expression suivante "Absence".
Et j'additionne toutes les valeurs de la colonne N (des lignes précédemment identifiées car contenant "Absence" en H) depuis N3 jusqu'à la dernière cellule utilisée de cette colonne.

Je suis sur l'onglet "Feuil3" et les valeurs se trouvent sur l'onglet "donnees".
J'ai donc écris ceci :
Cells(4, 2).Value = WorksheetFunction.SumIf(donnees!Range("H3:H" & Range("A65536").End(xlUp).Row), "=Absence", donnees!Range("N3:N" & Range("A65536").End(xlUp).Row))

Mais la macro plante et me renvoi le message : Objet requis
Visiblement l'expression : donnees!Range("H3:H" & Range("A65536").End(xlUp).Row n'est pas valide.
Sauriez vous ou je fais une erreur svp ?

Merci d'avance pour votre aide.

13 réponses

Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
19
Voila, la formule fonctionne maintenant, voici que ca ça donne au final :
Cells(4, 2).Value = WorksheetFunction.SumIf(Range("'donnees'!H3:H" & Range("A65536").End(xlDown).Row), "Absence", Range("'donnees'!N3:N" & Range("A65536").End(xlDown).Row))

En gras, ce sont les paramètres que j'ai modifié.
Merci beaucoup pour votre aide !
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76050 internautes nous ont dit merci ce mois-ci

Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2273
Bonjour,
Essaye de remplacer donnees! par Sheets("donnees") comme ceci :
Cells(4, 2).Value = WorksheetFunction.SumIf(Sheets("donnees").Range("H3:H" & Range("A65536").End(xlUp).Row), "=Absence", Sheets("donnees").Range("N3:N" & Range("A65536").End(xlUp).Row)) 
Messages postés
9180
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
28 décembre 2019
1677
bonjour

un pb avec la definition de ta plage (nom de feuille entre ' suivi de ! puis plage )
un exemple de syntaxe correcte pour sumif

= WorksheetFunction.SumIf(Range("'feuil1'!A10:A18"), ">2")

bonne suite
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
19
Merci à vous deux, je vais essayer ça immediatement :)
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
19
J'ai appliqué la modif proposée par ccm81, car ma syntaxe était effectivement mauvaise. La macro se déroule sans plantage désormais. Encore merci.

Par contre, les résultats renvoyés sont ...disons faux :) comme si les temps correspondant au critère n'étaient pas additionnés.
Verriez vous une erreur de plus dans ma syntaxe ?

Cells(4, 2).Value = WorksheetFunction.SumIf(Range("'donnees'!H3:H" & Range("A65536").End(xlUp).Row), "=Absence", Range("'donnees'!N3:N" & Range("A65536").End(xlUp).Row))
Messages postés
9180
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
28 décembre 2019
1677
re

on ne sait jamais, est ce que tu as bien respecté l'écriture de "Abscence" ?
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
19
hé oui, j'ai tout de même re-vérifie, mais c'est bien écrit pareil.
Messages postés
9180
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
28 décembre 2019
1677
re
et en mettant "Abscence" au lieu de "=Abscence" ?
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
19
Pas mieux et même bizarre car j'ai les mêmes résultats, je continu à chercher :)

Édit : En fait mes formules ne semblent pas fonctionner, j'ai un resultat à 0 sur les différents calculs que j'essaie de faire.
pijaku
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2273
Excusez l'incruste.....
Qu'essayez vous d'additionner?
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
19
Pas de soucis, le but était de regrouper des valeurs correspondant à des temps d'absence de nos personnels
Bonjour,

Est-ce que quelqu'un peut m'aider à corriger la syntaxe de la ligne sur la somme?

Dim j As Double
For j = numderlig + 4 To (numderlig + 3 + nbniv3)
Sheets(1).Range("B" & j).Value = "SOMME.SI(O2:O14;A" & j & ";B2:B14)
Next j

Merci d'avance.
Messages postés
9180
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
28 décembre 2019
1677
Bonjour

Il semblerait que tu ne veux pas obtenir une valeur mais une formule "en français" donc essaies ceci
Sheets(1).Range("B" & j).FormulaLocal ="SOMME.SI(O2:O14;A" & j & ";B2:B14)"

Bonne suite
bonjour
je viens de galérer pour le même type de problème et la solution est on ne peut plus simple il faut utiliser la syntaxe en anglais et par conséquent les virgules à la place des point virgules
ainsi SOMME.SI(a1:a50;a55;c1:c50)
pourra etre dans VISUAL BASIC du type
app.cells(55,3).value="=SUMIF(a1:a50,a55,c1:c50)"
j'ai la meme quéstion mais je veux une macro sum.if.ens