Effectif

Abraxass

XLDnaute Nouveau
Bonjour à tous.

En préalable je tiens à remercier l’ensemble des personnes qui vont vivre ces forums sans lesquels je serais certainement chauve depuis un moment…

Alors voilà mon petit souci :

Avec un collègue nous essayons d’automatiser une feuille de calcul afin que celle-ci nous indique au jour le jour l’effectif d’une société en fonction d’éléments saisis dans une « feuille de saisie ».

Concernant les formules, celles-ci ont été testées et validées.

Notre souhait serait que la feuille « Résultat » s’adapte automatiquement (quelle soit en quelque sorte extensible) en fonction du nombre d’employés ainsi que de leurs dates d’entrées/sorties en sachant que la plus petite date d’entrée détermine le début de la période de décompte.

Mais nous ne maitrisons pas vraiment le VBA…

Actuellement nous utilisons un copier/coller avec transposition des données afin de réorganiser les données sur les lignes en colonnes.

Et ensuite nous avons placé les formules dans les cellules.

Le fichier joint vous aidera certainement à comprendre notre démarche.

Dans notre exemple, nous savons que le 17/09/2008, il y avait 4 employés présents dans l’entreprise.

Merci beaucoup.
 
Dernière édition:

Fred0o

XLDnaute Barbatruc
Re : Effectif

Bonjour Abraxass et bienvenue sur le forum

Dans ton fichier, en feuille "Resultat (2)", je te fais une proposition par formule. J'utilise pour les employés la formule :
Code:
TRANSPOSE('Feuille de saisie'!A3:C22)
Cette formule effectue la même chose que ce que vous faites manuellement, à savoir une transposition du tableau situé en Feuille de saisie. J'ai étendu la plage à 20 employés (à adapter) et rajouté un test qui fait que si il n'y a pas de valeur on a "" au lieu de 0. Cette formule est matricielle, c'est à dire à valider par <CTRL> + <MAJ> + <ENTREE>.

Ensuite, j'ai simplifié ta formule à l'intérieur du tableau. J'ai remplacé ton
Code:
=SI(ET(ESTVIDE(INDIRECT(TEXTE(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1);1)&"4"));B8>=INDIRECT(TEXTE(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1);1)&"3"));1;SI(ET(B8>=INDIRECT(TEXTE(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1);1)&"3");B8<INDIRECT(TEXTE(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1);1)&"4"));1;0))
par un simple
Code:
=SI(ET($B8>=C$3;$B8<=C$4);1;"")
qui est tout aussi efficace et qui a l'avantage d'être plus lisible et de prendre moins de place mémoire et sur le disque dur.

A+
 

Pièces jointes

  • effectif_V1.xlsx
    611.6 KB · Affichages: 100

Abraxass

XLDnaute Nouveau
Re : Effectif

Bonjour et merci de t’être penché sur mon problème.

Déjà un grand bravo pour ta simplification et donc pour la lisibilité du code.

C’est vrai que je me suis bien compliqué la tâche avec ma formule !!!

Je vais continuer à travailler ce sur classeur en utilisant tes remarques.

Merci.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel