Forum Clubic

Formule excel - creation formule

bonjour,

j’aimerai faire une formule mais j’ai du mal trouver sous excel

en fait je pourrais la faire à l’arrache mais je voulais savoir si je pouvais en format structuré et propre

en fait j’ai un classeur avec deux feuilles

dans l’une j ai les salaires et dans la deuxieme les salaires doivent etre classés dans les tranches.

genre faire un compte tous les salaire homme entre 1300 et 1700 € de la feuille 1, mettre le total dans la cellule classe de 1300 € à 1700 € (feuille 2).

evidemment il y a plusieurs tranches et pleins de salaires différents donc c est un peu moins facile pour moi

merci c est gentil si vous y arriviez

ma méthode à l’arrache c’était de faire un total par des colonnes cachées dans la feuille 1 et inclure le total dans la feuille 2 et encore ca fct meme pas puisqu il me prend par ex tranche 2100 toutes les sommes inferieures a 2100 il les prends en compte sans enlever les 1700

je vais essayer de faire plus clair

dans plage de donnees dans une colonne (j4:j15)
compter le nombre de cellules comprises entre dont le chiffre est entre (1500 et 1800).

merci svp

je galere grave…oiuinnnnnnnnnnnnnnnnn
je ne sais pas quelle formule utiliser, je teste tout depuis tt à l’heure

aidez moi svp par pitié

:hello:

=NB(J4:J15)-NB.SI(J4:J15;"<1500")-NB.SI(J4:J15;">1800")

{=NB((J4:j15>=1500)*(J4:J15<=1800))}

C’est une formule matricielle : tu obtiens les accolades en validant ta formule par Ctrl-Maj-Enter

j ai une derniere requete

en fait, mes données vont souvent s’allonger puisque l’entreprise embauchera (ou debauchera qui sait).

ainsi mes données de formule vont souvent changer et comme il y a beaucoup de tranches par agence, je voulais essayer de faire un tableau à part ou je mettrai une cellule (debut plage) et une cellule (fin plage).

sauf que cela ne fonctionne pas avec ma formule puisque nb.si ira chercher seulement la plage sur les deux cellules alors que moi je voulais qu’elle aille faire le lien sur l’autre feuille.

est ce qu il y aurait un moyen pour que les deux cellules crées soient en fait un lien non hypertexte. j’ai tout testé

snif…personne pour m aider

Tout d’abord, la formule que je t’ai donnée n’est pas bonne. Il faut lire

{=SOMMEPROD((J4:j15>=1500)*(J4:J15<=1800))}

Tu n’as pas eu de pb pour la faire fonctionner ?

En ce qui concerne ta dernière question, si j’ai bien compris, tu as un tableau (dans notre cas J4:J15) et deux cellules donnant les bornes de ce tableau.
Pour l’exemple, je prends A1 et A2. On aura donc A1 avec comme valeur J4 et A2 avec comme valeur J15.

On peut utiliser la fonction INDIRECT pour adapter la formule d’origine

{=SOMMEPROD((INDIRECT(A1):INDIRECT(A2)>=1500)*(INDIRECT(A1):INDIRECT(A2)<=1800))}

c est super gentil gcc. j’arrive à adapter ta formule, j’essaie de la customiser
je trouve que ta fonction est puissante et plus fonctionnelle que la fonction nb.si, quelle est la difference entre nb.si.

peux tu me dire si à ton avis c’est possible dans une macro de pouvoir mettre à jour directement les formules dans les cellules via un bouton “update” . ce bouton mettra juste la plage des cellules dans les formules respectives.c’est super dur je sais et je suis chiant lol.
si le tableau ne change pas la colonne de données ne changera pas il n’y aura que le chiffre, la plage sera toujours “j4;jxx”.

je l’adapterai aux autres colonnes pour les autres plages. en fait dans mes données j’ai 3 classes, employés, maitrises et cadres. chq classe est dispachée en 2 colonnes hommes et femmes, puis assignée en 6 lignes correspondant aux tranches de salaires:(ex : 1500:1800; 1800:2100 etc…)

enfin si jamais vous pouvez m’aider je vous serai reconnaissant. moi j’essaie de voir de mon côté.

merci boucouuuuuuuuuuuuuuuuuuuuuuuuu

C’est comme la différence entre un corbeau : il n’y en a pas (il a les deux pattes pareilles, surtout la gauche)

Plus sérieusement, je pense que tu veux connaître la différence entre nb.si() et sommeprod()
NB.SI() travaille sur une colonne (ou une portion de colonne) et il compte le nombre d’éléments répondant à une condition donnée
exemple dans ton cas
NB.SI(J4:J15;"<1500") donne le nombre d’éléments de la plage dont la valeur est supérieure à 1500.
En ce sens, la formule donnée par Cloch_hard était correcte, bien qu’un peu compliquée. Il suffit de mettre

=NB.SI(J4:J15;">=1500")-NB.SI(J4:J15;">1800")

puisqu’un élément supérieur à 1800 est obligatoirement supérieur à 1500.

Pour SOMMEPROD() c’est plus compliqué (et pas forcément le plus adapté dans ton cas) :
on travaille en principe sur plusieurs colonnes.
pour faire simple, on fait d’abord un test par ligne, puis on compte le nombre de lignes pour lesquelles toutes les conditions ont retourné VRAI
Il faut que tu reprennes en détail l’aide de la fonction dans excel et que tu demandes ensuite si tu ne comprends pas tout

Non seulement c’est possible, mais c’est certainement plus simple que de traiter par cellules de référence comme tu le proposais au début.
Par contre, plutôt que de modifier directement les formules dans la macro, j’opterais pour l’utilisation de plages nommées (Insertion > Nom >Definir).
Ta premiere formule devient alors

=NB.SI(EmployesHommes;">=1500")-NB.SI(EmployesHommes;">1800")

et la macro n’a plus qu’à modifier l’étendue de la plage EmployesHommes au moment du update

coucou
jviens de revenir
merci pour la réponse
j’ai testé les deux formules elles me conviennent parfaitement et me serviront plus tard car je capte à peu près dans quels cas je pourrai appliquer l’une ou l’autre.

par contre pour le bouton update, j’ai pas trop compris…le “nommage” de plage de cellule, j’ai à peu près capté par contre, le bouton update jvois pas comment il faut faire, le code vba il ressemblera à quoi en reprenant l’exemple de ma plage j4:j15. parce que en fait le nommage de ma plage fera référence de telle cellule à telle cellule. mais prendra-t-elle dès qu’une ligne s’ajoute en compte la nouvelle ligne correspondante?

désolé pour ces petites questions à 4h17 du matin, jsuis motivé lol

boujoux de haute normandie gcc

J’étais un peu pris par le temps hier soir pour te répondre au sujet de SOMMEPROD
Avant d’aller plus loin dans ton développement, regarde cet exemple adapté à ce que j’ai compris de ton programme.
C’est une autre approche, mais qui montre les possibilités de la fonction.

Pour ce qui est du update, cela passe par la création d’un bouton sur la feuille, bouton qui lance une macro dont le rôle sera d’étendre le nom de la plage à toute la portion de colonne utilisée
Pour le code, ca peut donner quelque chose dans le genre

Sub UpdateSalaire()
    ' la plage nommée Salaire contient à l'origine les cellules J4 à J15
    ' le but est d'étendre la plage à toutes les cellules utilisées à partir de J4
    
    Dim R As Range
    Set R = Range("Salaire").Cells(1, 1)         ' uniquement la première cellule
    Set R = Range(R, R.End(xlDown))            ' étendre à la fin de la zone utilisée
    ActiveWorkbook.Names.Add "Salaire", R   ' donner le nom Salaire à la nouvelle plage
End Sub

Merci je suis en train de checker ton fichier excel

est ce que je peux te passer en mp mon fichier excel ou t’envoyer par mail
que tu voies à peu près ce que j’avais fait avant que tu me passes ton exemple
moi j’ai du vraiment me compliquer la vie lol
je vais travailler sur la macro ce matin, car comme j’ai plusieurs plages il faut que je reflechisse comment faire. en fait elles sont sur la meme colonne sauf que qu’il y a une plage par categorie et par sexe, et que les salaires sont melanges uniquement que dans ces deux categories. ex : categorie hommes cadre (plage de tous les salaires hommes cadres), categorie employé femmes (plage de tous les salaires employés femmes). ils sont tous sur la meme colonne.

j’applique ce que tu m’as dit et jte redis ca

merci beaucoup
t es pas fatigué de si bon matin, je viens de me reveiller lol

merci beaucoup pour ton aide

A la campagne, il y a plein de choses (et de gens) qui se chargent de vous réveiller avant le lever du jour …

Regarde ta MP

J ai vu hihi
t es de la campagne ?
ici au havre, pour faire plaisir à vos collègues (et peut être pour pas se faire virer mdr…) tu dois bosser dur lol

vive le maritime!!!!!!!!!!!!!
gcc c est marrant t’as jamais de photo lol
ou alors c est moi qui suis fou de la mettre lol
j ai vu que t es membre depuis 2002!!! t es le pionner de clubic.com

j’ai mis deux images pour que tu vois au moins la structure du fichier en gros
j’ai vire quelques données et mis de faux salaires lol

mince ca fait enorme sur l ecran…désolé

est ce que tu crois que ca peut le faire avec le bouton update si jamais je reste avec cette structure

sur la premiere image j avais fait un test cette nuit avec la fonction sommeprod

ce que j’essaierai de faire c est un bouton update qui va mettre à jour directement les formules dans la feuille tranches. quelle est la meilleure formule applicable selon toi?

NB.SI ou SOMMEPROD?
et selon toi est ce que le bouton update pourra prendre en compte ce que je veux ou dois je changer la structure de la feuille 2005 ou 2006(pour plus tard).
ca ne me derange pas de changer la feuille2005 mais la feuille tranches devra garder la meme mise en forme car elle devra etre imprimée de cette facon.

merci beaucoup pour ta vision

tu mettre tes images au format réduit, et on clique dessus pour les agrandir en local
il y a une option pour ca dans http://imageshack.us/

Si on veut conserver la présentation telle quelle, on va vite s’éloigner à grands pas de l’optimisation des formules mais c’est faisable

1- Tu peux garder tes formats tels quels, à condition d’accepter d’insérer des lignes dans la seconde feuille si tu as des noms supplémentaires à rentrer. Ce qui veut dire que rapidement tu vas dépasser pour cette feuille la taille de la liste imprimable sur une seule feuille, mais je ne pense pas que ce soit gênant.

2- L’utilisation des plages nommées rendra transparente l’insertion des lignes pour les calculs récapitulatifs, mais elle va vite devenir lourde sans que ce soit pénalisant pour le programme (6 plages par feuille de détail, dont déjà 18 plages nommées au bout de la troisième année)

3- La méthode du bouton update reste valable dans ce cas ; il faut juste envisager un passage d’arguments à la fonction puisque le travail est à faire sur plusieurs plages, et ce pour des fourchettes différentes et qu’il est hors de question de réécire une fonction à chaque fois.

4- Il faut décider dès le départ du fait qu’on accepte ou non d’avoir à réintervenir dan s le VBA ou non en cas de création de nouveau tableaux récapitulatifs (typiquement : ajout d’une année)

[QUOTE]NB.SI ou SOMMEPROD?[CODE]
NB.SI est largement suffisant.