Formule conditionnelle compliquée sous excel

Fermé
Tanid Messages postés 8 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 11 mai 2011 - 26 mai 2010 à 14:27
Tanid Messages postés 8 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 11 mai 2011 - 26 mai 2010 à 19:22
Bonjour,

Je suis en train de monter un dossier pour gérer les heures supplémentaires de l'équipe. En gros, j'ai un dossier avec différents niveaux d'accès (formule que j'ai trouvé sur un forum), chaque niveau n'affiche que le formulaire de déclaration des heures et un onglet personnel à chacun qui comptabilise par semaine les soldes. La déclaration des heures se fait via une feuille qui me sert de formulaire, en fait c'est le document des ressources humaine que j'ai adapté avec des formules. Jusque là, tout va bien. J'ai réussi à faire une condition dans mes feuille individuelle de sorte que si la semaine et le numéro d'employé correspondent, alors la formule calcule les soldes.

Là où se trouve mon bobo: comme j'utilise un formulaire commun pour tout le monde, je voudrait pouvoir vider les cellules de celui-ci juste avant de fermer le dossier, afin que lorsqu'un autre utilisateur se "loguera", il soit prêt à inscrire ses heures. J'ai enregistré une macro rapide qui vide le contenu des cellule en cliquant sur un bouton, mais alors les calculs qui se sont faits dans ma feuille individuelle n'apparaissent plus (puisque les formules renvoient à des valeur existantes). Comment faire pour vider la feuille sans que les calculs ne disparaissent?

J'ai pensé à créer une feuille "base" qui garderait toutes les lignes de déclaration, avec la semaine, le num d'employé (pour la condition), et enfin les différents totaux. J'ai intégré le "copier/coller les valeurs" dans ma macro de vidage de feuille pour que cela se copie dans la prochaine ligne libre de ma base. Mais là je sèche... Comment adapter ma formule de calculs pour qu'il aille chercher les valeurs (car les cellules changeront à chaque fois)?

Voici ma formule telle qu'elle est présentement:

=SI(ET($A7='Permis d"absence'!$C$3;$H$4='Permis d"absence'!$L$2);C6-'Permis d"absence'!$P$16;C6) En gros au début c'est ma condition: A7 est la semaine, H4 le num d'employé, ensuite si ça correpsond il déduit le total inscrit sur la feuille permis d'absence pour cette catégorie au tiotal de la case supérieure (C6), si ça correpsond pas, il laise le total de la case sup

Voici où je veux en venir, dans mes mots:

=SI(ET($A7='base'!A:A;$H$4='base'!D de cette ligne C'est à dire que si dans la colonne A il trouve la même valeur que dans la semaine et que dans la case D de cette même ligne il trouve le même num d'employé);C6-la cinquième case (en fait la case f de cette ligne là);C6

Ouf!

Si quelqu'un à une idée, vous me sauveriez la vie! Ça fait des semaine que je suis sur ce dossier, il ne me manque que ce petit bout... Ou si on peut faire ça en VBA directement depuis la feuille personnelle, je suis ouvert à tout!

Merci d'avance!


A voir également:

6 réponses

dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
26 mai 2010 à 16:33
bonjour,

Un peu difficile à bien comprendre comme ca pour proposer quelque chose qui corresponde.
Il serait préférable de déposer un fichier d'exemple (sans données confidentielles) sur http://www.cijoint.fr/ et de joindre le lien donné sur votre prochaine réponse. Dans ce fichier, il serait intéressant "d'expliquer" et de donner des exemples de résultats souhaitées...

0
Tanid Messages postés 8 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 11 mai 2011
26 mai 2010 à 17:27
Merci de ton intérêt dobo! Finalement, je m'en suis sorti!

Pour ceux que ça intéresse, voici la formule:

{=SOMME(SI(($A7=base!$A:$A)*($I4=base!$D:$D);base!$K:$K;0)))}, et comme je devais soustraire la valeur renvoyée au total des heures en banque, ça donne:

{=$C6-(SOMME(SI(($A7=base!$A:$A)*($I4=base!$D:$D);base!$K:$K;0)))}...

Youhou!!!

Par contre, j'ai un autre blème: j'ai 15 utilisateurs, donc ils ont tous une feuille individuelle avec ces formules là. Lorsque j'ajoute une ligne sur ma base de donnée, ça prends un temps fou pour faire le calcul puisqu'il repasse au travers de toutes les cellules de toutes les feuilles d'utilisateurs... (env. 5mn)

Comme certaines feuilles seront cachées lorsque les gens l'utiliseront, est-ce que je peux "désactiver" les formules des feuilles cachées?

J'avais penser en décochant la fonction "calcul automatique" mais il me semble que â dépend de l'ordinateur que l'on utlisie, non?
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
Modifié par dobo69 le 26/05/2010 à 17:36
1) bonne question : je ne crois pas pour ma part. Tous ces paramètres sont gérés dans les options générales d'excel et je vois rien qui pourrait répondre à cela.
2) l'option de calcul automatique est bien conservée et enregistrée au niveau du classeur. Donc, à l'ouverture, quelque soit l'utilisateur, l'option est conforme à ce que tu auras enregistré. Ceci-dit il n'y aura aucun calcul sans appui sur F9 ou modif de l'option par l'utilisateur...
Si vous n'avez besoin de rien, demandez-moi.
0
Tanid Messages postés 8 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 11 mai 2011
26 mai 2010 à 17:40
C'est bien si ça garde en mémoire les options du classeur... L'appui sur F9, je pensais l'inclure dans ma macro de compilation... Par contre, si je fais F9, il va recalculer toutes les feuilles de la même manière, donc on n'y gagne rien...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
26 mai 2010 à 18:11
La lenteur vient du fait qu'en utilisant des formules matricielles avec des colonnes entières, tu obliges excel a parcourir 3*655536 cellules...(<xL<2007)

donc limite ta hauteur de travail : mais au delà de environ 2000 lignes les sommeprod et matricielles rament et il est préférable d'utiliser VBA avec des variables- tableaux (array)
0
Tanid Messages postés 8 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 11 mai 2011
26 mai 2010 à 19:22
Merci Michel... J'ai restreint la plage de recherce des lignes 1 à 1000, c'est déjà plus rapide...
0