Formule mathématique à trouver

Ralph -  
 Ralph -
Bonjour,

J'ai un fichier d'adhérents d'une association de locataires pour un immeuble de 35 logements. Il y a quatre type d'appartements : des F1 (1 pièce), F2 (2 pièces), F3 (3 pièces) et F4 (4 pièces). Sur les 35 logements de l'immeuble on dénombre 5 F1, 14 F2, 8 F3 et 8 F4, soit 89 pièces avec un ou plusieurs locataires par logement peu important le type de logement (parfois 2 locataires dans un F1 et 5 ou 6 locataires dans un F4) et un ou plusieurs adhérents par appartement (certains 4 pièces ont 6 locataires et deux adhérents, par exemple).

J'aimerai trouver une formule qui puisse automatiquement calculer le nombre de pièces comptant au moins un adhérent de notre association de locataires.

Quelle est la bonne formule ? Merci pour votre aide.
A voir également:

4 réponses

via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746
 
Bonjour

Impossible de t'aider sans connaitre la structure de ton fichier
Poste un exemple (avec des noms bidons) sur cjoint.com, fais créer un lien que tu copies et reviens coller ici

Cdlmnt
Via

0
Ralph
 
Via,
J'ai posté le fichier sur le lien que vous m'avez envoyé.
Pouvez-vous m'aider. merci.
Cordialement.
R
0
Ralph
 
Voici le lien :
http://www.cjoint.com/c/GJxkTXMQ7ZR
0
via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746 > Ralph
 
Ok j'ai le fichier mais je ne comprend pas mieux ce que tu cherches à obtenir
Il y a 34 appartements différents , tu veux totaliser le nombre de pièces de ces 34 ?
Si c'est le cas il faut d'abord dans une nouvelle colonne convertir les T2 et autres en nombres additionnables avec la formule : =CNUM(STXT(D5;2;1))
Ensuite tu fais la somme de cette colonne, résultats 81
0
Ralph > via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention  
 
En fait je veux calculer automatiquement via une formule mathématique : 1°) le nombre de logements (14/35) et le % correspondant, et 2°) le nombre de pièces ayant au moins un adhérent (44/89) sachant qu'il y a 5T1 + 14T2 + 8T3 + 8T4 = 89 pièces; ainsi que le % correspondant.
Cases E101, E102 et F101, F102.
Cordialement,
R
0
Ralph > Ralph
 
(il faut trouver les formules mathématiques permettant de calculet AUTOM%ATIQUEMENT les cases pour 14/35, 44/89, 40% et 49,44%)
0
via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746 > Ralph
 
Ok je m’absente cet après-midi, je regarde cela en rentrant
0
via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746
 
pas possible par mail mais je te le renvoie sur cjoint
https://www.cjoint.com/c/GJymbNMxsv6

Au cas où tu n'arrives pas à l'ouvrir voilà la fonction perso :
Function logements(plage As Range)
For Each Cell In plage
If Cell <> "" And Range("I" & Cell.Row) > 0 Then tot = tot + Val(Mid(Cell, 2, 1))
Next
logements = tot
End Function


Elle est à mettre dans un module : ALT+F11 pour ouvrir l'éditeur VBA - Insertion - Module -copier-coller la macro dans la fenêtre blanche

Tu l'emploies ensuite comme n'importe quelle fonction selon la syntaxe que j'ai indiquée précédemment

"L'imagination est plus importante que le savoir."    A. Einstein
0
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour à tous,

Après avoir reformaté tes cellules fusionnées qui contenaient plusieurs valeurs (!! je ne sais pas comment tu as obtenu ce résultat!!), tu peux utiliser les formules suivantes :
en E101, =SOMMEPROD(($C$5:$C$100<>"")*(I5:I100<>0))&"/"&SOMMEPROD(--($C$5:$C$100<>""))

en E102, =SOMMEPROD(($C$5:$C$100<>"")*($I$5:$I$100>0)*("0"&GAUCHE(SUBSTITUE($D$5:$D$100;"T";""))))&"/"&SOMMEPROD(--("0"&GAUCHE(SUBSTITUE($D$5:$D$100;"T";""))))

et en E103, =I103&"/100" (ça, tu t'en doutais)

Pour les ratios, c'est trop simple pour que je te dise quoi faire.

Le fichier : https://www.cjoint.com/c/GJymmxrScTH

Cordialement
0
Ralph
 
Waouh, super.
Je vous remercie.
0
Ralph > Ralph
 
J'ai transposé les formules dans mon tableau initial (que j'avais légèrement modifié et anonymisé) mais je ne trouve pas le bon dénominateur...

Je trouve pour les logements 14/36 au lieu de 14/35

=SOMMEPROD(($C$8:$C$103<>"")*($M$8:$M$103<>0))&"/"&SOMMEPROD(--($C$8:$C$103<>""))

et pour le nombre de pièces je trouve 44/276 au lieu de 14/89

=SOMMEPROD(($C$8:$C$103<>"")*($M$8:$M$103>0)*("0"&GAUCHE(SUBSTITUE($D$8:$D$103;"T";""))))&"/"&SOMMEPROD(--("0"&GAUCHE(SUBSTITUE($D$8:$D$103;"T";""))))

Où est mon erreur ?
0
Ralph > Ralph
 
Votre formule parait plus simple que celle que j'avais initialement bricolé pour calculer le nombre de logements dont la cotisation est supérieure à 2 euros ou en attente (de paiement) :
=CONCATENER(SOMME(SOMME(NB.SI.ENS($M$8:$M$103;">=2";$C$8:$C$103;"101");NB.SI.ENS($M$8:$M$103;">=2";$C$8:$C$103;"102");NB.SI.ENS($M$8:$M$103;">=2";$C$8:$C$103;"103");NB.SI.ENS($M$8:$M$103;">=2";$C$8:$C$103;"104"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "105"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "106"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "107"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "108"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "109"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "110"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "111"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "112"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "113"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "114"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "115"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "116"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "117"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "118"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "119"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "120"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "121"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "122"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "123"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "124"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "125"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "126"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "127"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "128"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "129"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "130"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "131"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "132"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "133"); NB.SI.ENS($M$8:$M$103; ">=2";$C$8:$C$103; "134"));SOMME(NB.SI.ENS($M$8:$M$103;"en attente !";$C$8:$C$103;"101");NB.SI.ENS($M$8:$M$103;"en attente !";$C$8:$C$103;"102");NB.SI.ENS($M$8:$M$103;"en attente !";$C$8:$C$103;"103");NB.SI.ENS($M$8:$M$103;"en attente !";$C$8:$C$103;"104"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "105"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "106"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "107"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "108"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "109"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "110"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "111"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "112"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "113"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "114"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "115"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "116"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "117"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "118"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "119"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "120"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "121"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "122"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "123"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "124"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "125"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "126"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "127"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "128"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "129"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "130"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "131"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "132"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "133"); NB.SI.ENS($M$8:$M$103; "en attente !";$C$8:$C$103; "134")));"/35")

Mais je n'avais pas trouvé comment faire pour calculer le nombre de pièces ...
0
Ralph > Ralph
 
Je ne comprends pas pourquoi le dénominateur est différent... sachant que colonne :
C8:C103 est celle des numéros de logements
D8:D103 est celle des type de logements (selon le nombre de pièces)
et M8:M103 est celle des cotisations (supérieures à "2" euros ou "en attente" (de paiement).
0
Ralph > Ralph
 
Comme je ne comprends pas toute votre formule, JvDo, je n'arrive pas à l'adapter.
0