Macro pour congés

Nyre

XLDnaute Nouveau
Bonjour,

Je suis assistante maternelle et depuis 13 ans j'utilise des fichiers excel pour prévoir mes salaires et congés payés et ainsi, vérifier avec les parents qu'on est bien d'accord sur les modalités de calcul et préparer les informations de ma déclaration de revenu.

A chaque nouveau contrat avec de nouveaux parents, je me sers d'un fichier qui comporte 12 feuilles de calcul (1 feuille par mois) et qui répertorie les éléments nécessaires à l'établissement de mon salaire.

Au niveau des congés payés, je ne peux pas entrer mes formules dans mon classeur de base parce que le premier mois de travail varie (je peux commencer un contrat en février et un autre en septembre) et je suis obligée d'entrer une formule sur chaque feuille en tenant compte de la feuille précédente :
mes CP en cours sont en M8.

On considère début du contrat le 1er du mois.

Le 1er mois M8=2.5
et ensuite j'applique à M8 des feuilles suivantes la fonction SOMME avec
nombre 1 = cellule M8 de la feuille précédente et
nombre 2 = 2.5.
Je dois répéter cela à chaque feuille jusqu'en mai. Parce qu'en juin on recommence à 2.5. et en juin, le total M8 de mai passe en Q8 (CP acquis).

Le nom du mois est en G4 et l'année en I4.
Une macro liée à G4 et I4 donne le nom de la feuille de calcul ; exemple : G4=mars I4=2011 (nom de la feuille : mars 2011)
C'est important parce que je travaille 1,2,3 ou 4 ans avec le même employeur et je copie les feuilles des mois pour commencer l'année suivante et la cellule I4 me permet de ne pas avoir 2 fois le même nom de feuille.

Je n'ai réalisé qu'une seule macro à ce jour (celle dont je parle plus haut) donc je ne maîtrise pas encore, mais je voudrais pouvoir automatiser cette cellule M8 dès le classeur qui me sert de base (celui qui contient 12 feuilles) quel que soit le 1er mois et en tenant compte des contrainte de l'année de référence du code du travail qui recommence au mois de juin à 2.5.
Pour affiner encore il serait bon que le 1er mois du contrat je puisse entrer manuellement le chiffre qui est inférieur à 2.5 si j'ai commencé en cours de mois.

Voilà, Voilà.

Merci à tous ceux qui pourront me donner un coup de main.
 

Pièces jointes

  • Salaires 2.xls
    213 KB · Affichages: 196

bond

XLDnaute Occasionnel
Re : Macro pour congés

a tester cette formule sur l'onglet Octobre Base :
Code:
='Septembre base'!M8+(SIGNE(Q21)*2.5)

et à mettre en place de façon adaptée en M8 de chaque onglet.

Les 2.5 de CP ne s'appliquent que si le nb d'heures effectués dans le mois est > 0
 

Nyre

XLDnaute Nouveau
Re : Macro pour congés

Le classeur que tu me joins donne l'impression de fonctionner, mais quand je vais dans le "pas à pas" de la macro, j'ai une erreur syntaxe et si j'essaie d'entrer la formule dans la case M8 j'ai aussi une erreur.
Est-ce que ça peut venir de ma version excel (2003) ?

A bientôt

:eek::cool:
 

bond

XLDnaute Occasionnel
Re : Macro pour congés

Chez moi la macro fonctionne correctement lorsque D4 et I4 sont renseignées.

La formule en M8 de l'onglet Octobre base est
Code:
='Septembre base'!M8+(SIGNE(Q21)*2.5)
si l'onglet du mois septembre porte effectivement le nom "'Septembre base" au moment de l'intégration de la formule. Par la suite la formule si l'onglet change de nom avec la macro.

Tout ça tourne corectement chez moi, et je ne vois pas de raison que la v2003 ne le supporte pas :confused:
 

Nyre

XLDnaute Nouveau
Re : Macro pour congés

Ok, à l'indication de l'erreur, le 2.5 étant surligné je le re-tappe et la formule est acceptée, c'est déjà ça. Maintenant cela fonctionne jusqu'en novembre inclus où j'ai bien 7.5 dans M8. A partir de décembre, M8 = 5 et lorsque je crée l'année suivante (janvier base2, février base2, etc.. je suis toujours à 5... ?
peut-on continuer ?:cool:
 

bond

XLDnaute Occasionnel
Re : Macro pour congés

Pas sur de tout comprendre:confused:
Bien respecter le nom des onglets dans l'addition : en janvier, on devrait trouver l'addition du mois de décembre précédent et du mois de janvier en cours.
Ne pas oublier que :
Les 2.5 de CP ne s'appliquent que si le nb d'heures effectués dans le mois est > 0

L'erreur sur le 2.5 vient sans doute du séparateur décimal (point/virgule)...
 

Nyre

XLDnaute Nouveau
Re : Macro pour congés

Voilà 2 heures que je bataille pour essayer de voir ce qui se passe dans ce classeur. J'ai trouvé quelques erreurs, mais ça n'a pas corrigé le problème. j'ai essayé dans une autre copie du fichier, mais rien non plus.
je te le mets en pièce jointe pour que tu voies.


Bon courage et encore merci
 

Pièces jointes

  • Salaires 2A.zip
    25.5 KB · Affichages: 53

Nyre

XLDnaute Nouveau
Re : Macro pour congés

Bonjour bond,
C'est vrai je n'avais pas compris. Je ne connaissais pas l'écriture +(SIGNE(Q21)*2,5) et si je comprends à quoi elle se réfère, je ne comprend pas son fonctionnement. Cela dit ta méthode fonctionne très bien, mais j'ai l'impression qu'elle correspond à ce que je faisais et que j'expliquais dans mon 1er post :

"Le 1er mois M8=2.5
et ensuite j'applique à M8 des feuilles suivantes la fonction SOMME avec
nombre 1 = cellule M8 de la feuille précédente et
nombre 2 = 2.5.
Je dois répéter cela à chaque feuille jusqu'en mai. Parce qu'en juin on recommence à 2.5. et en juin, le total M8 de mai passe en Q8 (CP acquis)."

La manip est un peu moins fastidieuse, mais je dois toujours reporter la formule dans la cellule M8 de chaque onglet comme avant et en juin suivant je dois recommencer pour repartir à nouveau à 2.5.
J'aurais voulu pouvoir automatiser tout ça en tenant compte des contraintes...

Puis-je encore abuser de tes services ?
:cool:
 

bond

XLDnaute Occasionnel
Re : Macro pour congés

Bon alors, c'est surement moi qui ai rien compris :eek:
Le fichier joint remplace ta macro avec le code ci dessous :
ça fait la même chose qu'avant, et ça pose la formule sur chaque onglet en prenant le résultat de l'onglet précédent, sauf pour le 1er onglet, et pour le mois de juin.
a tester...
Code:
Option Explicit
Sub Mois_et_année_pr_CalculSalaire()
Dim sheet As Worksheet
Application.ScreenUpdating = False
For Each sheet In Worksheets
    sheet.Name = sheet.Range("D4") & " " & sheet.Range("I4")
    sheet.Select
    If LCase(sheet.Name) Like "*juin*" Or sheet.Index = 1 Then
        Range("m8").FormulaR1C1 = "=(SIGN(R[13]C[4])*2.5)"
    Else
        Range("m8").FormulaR1C1 = "='" & ActiveSheet.Previous.Name & "'!RC+(SIGN(R[13]C[4])*2.5)"
    End If
Next sheet
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • Salaires 2A.xls
    262.5 KB · Affichages: 105
  • Salaires 2A.xls
    262.5 KB · Affichages: 103
  • Salaires 2A.xls
    262.5 KB · Affichages: 103
Dernière édition:

Nyre

XLDnaute Nouveau
Re : Macro pour congés

SUPER !!!

C'est exactement ce dont j'avais besoin et cette fois tout y est : j'ai même essayé une simulation avec un premier mois situé en septembre auquel j'applique ta formule =(SIGNE(Q21)*2,5) en M8 et dont je peux modifier le 2.5 en 2 ou moins pour le 1er mois (s'il n'est pas travaillé entièrement) et tout le reste est complètement automatisé dès le classeur de base.

Si tu n'avais pas bien compris, cette fois tu n'a laissé échappé aucun détail.
C'est formidable pour moi.

MILLE MERCIIII. :p

Ca va me faciliter la vie !
Je n'espère pas à Bientôt, mais qui sait ...
:cool::cool:
 

Nyre

XLDnaute Nouveau
Re : Macro pour congés

Bonjour,

Je reviens dans cette discussion car il me reste un tout petit détail à régler :

Dans le Super code que tu m'as fait il est dit :

Si la feuille s'appelle "juin" ou qu'elle est la 1ère feuille du classeur et que la cellule Q21 est > 0, alors M8 = 2.5.

Pour la 1ère feuille du classeur, ça n'est exact que si le 1er mois est travaillé tout entier.

Dans mon 1er post j'avais expliqué

Pour affiner encore il serait bon que le 1er mois du contrat je puisse entrer manuellement le chiffre qui est inférieur à 2.5 si j'ai commencé en cours de mois.

Pour ne pas compliquer, pourrait-on faire en sorte de pouvoir laisser entrer manuellement la valeur M8 du 1er mois d'après un code (lettre ou chiffre) que je placerais par exemple dans une cellule P4.

J'explique : P4 = O (la lettre O) le code que tu as créé s'applique.
P4 = N alors j'entrerai manuellement, mais seulement pour la 1ère feuille du classeur, la valeur adéquate et < 2.5.

Ou bien modifier l'écriture du code pour que la cellule M8 la première feuille du classeur soit toujours entrée manuellement. Même si 1ère feuille = juin...

ou encore faire un mix des deux idées : écriture du code pour que la cellule M8 de la première feuile du classeur soit = à la valeur de la cellule P4 (que j'entrerai manuellement à la mise en route d'un nouveau contrat). Même si 1ère feuille = juin...

Sans rien changer au reste qui fonctionne Super bien.

Hier je disais pouvoir modifier cette valeur sans affecter le reste. C'est vrai mais à chaque fois que je dois exécuter la macro (si je rajoute des feuilles par exemple) la 1ère feuille du classeur reprend la valeur 2.5 et les mois qui suivent sont faux.

Si c'est possible, je rappelle pour info que juin aussi peut être la première feuille.

Maintenant, si tu as plus simple, ou plus propre, enfin mieux que ma proposition, bien sûr je prends.

bond, je crois en toi, j'ai confiance, et je suis sûre que ça va marcher !:):cool:
 
Dernière édition:

bond

XLDnaute Occasionnel
Re : Macro pour congés

Avec un peu de délai...

Dans le code, remplace :
Code:
Range("m8").FormulaR1C1 = "=(SIGN(R[13]C[4])*2.5)"
par :
Code:
Range("m8").FormulaR1C1 = "=IF(R[-4]C[3]>0,R[-4]C[3],SIGN(R[13]C[4])*2.5)"

Pour se caler sur :
Pour ne pas compliquer, pourrait-on faire en sorte de pouvoir laisser entrer manuellement la valeur M8 du 1er mois d'après un code (lettre ou chiffre) que je placerais par exemple dans une cellule P4.
en P4 (pour le 1er onglet), tu saisis directement le nb de CP (sans passer par l'étape Oui/Non).
 

Discussions similaires