Formule CountIf sur une plage variable

Résolu/Fermé
SF-TU Messages postés 18 Date d'inscription mercredi 21 mai 2014 Statut Membre Dernière intervention 13 juin 2016 - 26 mai 2014 à 22:25
SF-TU Messages postés 18 Date d'inscription mercredi 21 mai 2014 Statut Membre Dernière intervention 13 juin 2016 - 27 mai 2014 à 17:40
Bonjour,

Après plus de 2h de recherches et de bidouillages en tout genre je me décide à baisser les armes et à demander de l'aide!
Je vous explique du mieux possible mon souci.
J'ai un tableau généré par macro à partir d'un autre fichier, en en-tête j'ai des noms de personnes (en nombre variable), sur la première colonne j'ai tous les jours d'un mois. Sur la dernière colonne je souhaite rajouter une formule qui va dénombrer le nombre de 1 que l'utilisateur va saisir ensuite pour les jours de présence des différentes personnes. C'est là que ça coince... J'utilise un CountIf mais je pense que ma syntaxe n'est pas bonne car aucune tentative ne fonctionne..

Voici mon code:

Sub FormuleComptage()

Dim CelEffectif As Range
Set CelEffectif = Cells.Find(What:="Effectif", lookat:=xlPart) 'recherche la cellule "Effectif" afin d'identifier la colonne où va être notée la formule.


For n = 2 To Range("A" & Rows.Count).End(xlUp)

Set Zone = Range(Range("A1").Offset(n, 1), CelEffectif.Offset(n, -1))

CelEffectif.Offset(n, 0).Formula = "=COUNTIF(Range(Zone),1)"

Next n

End Sub


J'ai aussi essayé sans nommer la plage à tester ou en déclarant la première cellule et la dernière cellule de la plage:

premCel = Range("A1").Offset(n, 1)
derCel = CelEffectif.Offset(n, -1)

Plage = (prem & ":" & der)
CelEffectif.Offset(n, 0).Formula = "=COUNTIF(Range(Plage),1)"

Mais visiblement ça ne marche pas non plus...

Je crois qu'à force d'avoir le nez dessus et d'avoir tout essayé je finis pas tout mélanger et ne plus rien voir donc si quelqu'un voulait bien m'éclairer sur la méthode à suivre je lui en serais grandement reconnaissante!

Merci beaucoup!
A voir également:

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 27/05/2014 à 08:23
Bonjour,

Sub FormuleComptage()
Dim CelEffectif As Range

Application.ScreenUpdating = False
With Worksheets("feuil1")
Set CelEffectif = .Cells.Find(What:="Effectif", lookat:=xlPart) 'recherche la cellule "Effectif" afin d'identifier la colonne où va être notée la formule.
For n = 2 To .Range("A" & Rows.Count).End(xlUp).Row
Set Zone = .Range(Range("A1").Offset(n - 1, 1), CelEffectif.Offset(n - 1, -1))
CelEffectif.Offset(n - 1, 0).Formula = "=COUNTIF(" & Zone.Address & ",1)"
Next n
End With
Application.ScreenUpdating = True
End Sub
1
SF-TU Messages postés 18 Date d'inscription mercredi 21 mai 2014 Statut Membre Dernière intervention 13 juin 2016
27 mai 2014 à 17:40
Merci beaucoup ça marche nickel, je n'avais pas du tout pensé à utiliser Address, propriété que je ne connaissais pas encore d'ailleurs et qui va me simplifier la suite je crois! :-)
0