Probleme sous excel

Fermé
Lala - 2 juin 2008 à 15:18
 amigo - 27 juin 2008 à 10:58
Bonjour,
je sui larissa, je découvré votre site et il est vraiment primordial pour aider lew gens en difficulté !!
Aujrdui j'ai moi meme un petit probleme que j'espere que vous pourriez le résoudre !!!

Alr je suis sous excel, et je dois automatiser mon tableau de données a partir de la date cad qu'a chaque changement de mois, on doi prendre en compt les jours etc...ceci est réglé enfin je crois mais mon probleme est d'initilaiser des cases précises de mon tableau et je bloque vraiment la dessus !!!

Encor merci d'avance !!!
A voir également:

74 réponses

Bonjour ReBonjour,

alors je t'ai posté ici un exemple de chevauchement de congé pour les mois de juillet-aout c'est comme ca que cela se présente, j'espère qu'il te sera utile et aussi que mon probleme n'est pas trop prise de tete.....!!!

http://www.cijoint.fr/cjlink.php?file=cj200806/cijuEWwLEz.xls.

Voila wala, encore merci !! ++
0
Hello Amigo,

ben voila je voulais juste m'informer si tu avais eu un peu de temps pour jeter un oeil sur le fichier que je t'ai envoyé et penses tu qu'il y ait possibilité de faire ce qui est dit, moi de mon côté j'ai réussie a fiare l'algo, mais au niveau du code j'ai quand meme pas mal de difficulté, je compte beaucoup sur ton aide pour y arriver !!!

Merci beaucoup !!!
0
Coucou Amigo,

alors sans vouloir te brusquer, je voulais juste m'informer si tu avais eu un peu de temps pour te pencher sur mon probleme s'il te plait ! Mwa j'y suis depui quelques jours mais je n'ai pas l'impression de beaucoup avancer en fait, j'aurais vraiment besoin de ton aide parce que moi je commence à désespérer looool !!!

Merci !!!
0
Bonjour,

Je n'ai pas eu beaucoup de temps ces derniers jours, mais j'ai réussi à me dégager quelques heures pour terminer la procédure de mise à jour des congés.

Cette procédure s'apelle Mise_a_jour_conge()

pour le test:
-vider le tableau (effacer_tableau)
-executer mise_a_jour_conges
-modifier quelques dates dans la feuille "congés", supprimer une date, mettre des dates erronées
-revenir sur la feuille du mois et executer mise_a_jour_conges

cette procédure s'execute automatiquement avec copier_feuille ou au changement de mois.

j'ai du changer quelques lignes de code dans les procédures copier_feuille et masquer_colonnes

alors il faut reprendre le module_initialisation en entier.

le serveur de ci-joint.fr ne fonctionne pas, j'ai déposé le fichier sur cjoint.com

https://www.cjoint.com/?gsjeaQOQkj

A+.
0

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

Posez votre question
RE bonojour,

désolée de n'avoir pu répondre plus tot, j'avais des petits soucis de connexion !

Alors j'ai fait comme tu m'as dit pour les tests et j'ai aussi retoucher la procédure copier_feuille pour retomber sur le tableau comme il faut !!!

La il y aurait éventuellement un petit bonus a rajouter a la procédure mise_a_jour_conges() s'il est éventuellement possible que tu y jette un p'ti d'oeil pour me donner un p'ti coup de main s'il te plait, je te l'explique vite fait : en fait après la colonne NOM, il faut rajouter une colonne CONGES et dans cette colonne doit y figurer le nombre de jours que chaque agent a pris dans le mois courant en tenant compte que les dimanches et jours fériés ne sont pas comptés. Voila si vraiment tu peux m'aider la dessus !!

Mais en tout cas, je n'oublies pas tout l'investissement et tout le temps que tu y a consacrer afin de mettre a terme la procédure de congés et de tout ca, je t'en suis vraiment reconnaissante merci beaucoup beaucoup !!!
0
Bonjour,

Insérer une colonne CONGES en colonne "B" va nécessiter de revoir toutes les procédures.
Le plus facile serait de l'inserer en colonne "BN", là il n'y a rien à modifier.

Pour décompter les dimanches et jour fériés, ça se complique. Passe pour les dimanches qui sont faciles à repérer sur le calendrier, mais les jour fériés doivent etre listés quelque part, car ils varient d'une année à l'autre, d'une région à l'autre et meme d'une entreprise à l'autre. Donc il faut faire ce petit travail de réflexion avant, et tenir cette liste à jour chaque année.

A+.
0
SAlut,

j'ai ormis de te préciser que cette colonne "CONGES" était à insérer dans la feuille de congé car cela facilite beaucoup plus le travail et tout doit figurer sur cette feuille.

On m'a fait penser à éventuellement rajouter par fonction pour trouver les dimanches. Alors j'ai réfléchi et j'ai pensé à la fonction suivante :

Function NB_jours_ouvrés(Date_début As Date, Date_fin As Date) As Integer
Dim Cpt As Date
Dim Nb_jours As Integer

For Cpt = Date_début To Date_fin
If Weekday(Cpt, vbMonday) <> 7 Then
NB_jours_ouvrés = NB_jours_ouvrés + 1
End If
Next

End Function

Une fois de plus mon probleme est de savoir maintenant comment l'utiliser !!!

Et maintenant, je réfléchis à pour les jours fériés !!!

A bientot !!!
0
Aussi, j'ai jugé utile de ne m'intéresser qu'à la feuille "congés", donc j'ai éventuellement mis la date d'aujourd'hui en B3 que l'on comparera par la suite avec les dates de la ligne 6 ensuite lorsque la condition sera remplie, on parcours la 1ere colonne, on vérifie la présence de la date, on la mémorise (c la procédure date_début comme on l'a vu précédemment) et pareil pour "Date_fin". Ensuite, on appelle la fonction qui calcule le nb de jours entre ces 2 dates et on demande à la reporter dans la colonne B a la ligne correspondante.

Voila l'algo que j'ai pensé, est-ce que cela pourrait éventuellement convenir ???

Cordialement !!!
0
Re,

La fonction que tu as écrite est correcte. Reste à déterminer les jours non travaillés autre que le dimanche.
Il y a les dates fixes : 1er janvier, 1er mai, 14 juillet,...25 décembre. A ne décompter que si ça ne tombe pas un dimanche.
Il y a les dates mobiles: Lundi de Paques, Lundi de Pentecote, .... qui ne tombent pas toujours à la même date.

C'est cette liste qu'il faut créer et tenir à jour chaque année.(Voir ou peut la caser)

La date du jour en B3 n'est pas franchement utile. La fonction Date() du VBA suffirait.

La colonne B va changer chaque mois. Ne faudrait-il pas plutot, pour chaque mois avoir une colonne Début, Fin, et Jour ouvrés? La colonne Jours Ouvrés serait calculée ( appel de la fonction NB_jours_ouvrés() ) lorsque la colonne Fin change.

Je vais partir sur cette hypothèse, et on verra ce que ça donne.

A+.
0
Bonjour,

Voici la solution que j'ai apporté à ton problème

1) Module Initialisation
Procédure Mise_a_jour_conges()
'...
'balayer la ligne 6 et rechercher le mois en cours
Do
mois_conge = Month(ActiveCell.Value)
If mois_orig = mois_conge Then
    col = i  'le mois est trouvé on mémorise la colonne
    Exit Do
End If
i = i + 3 '<---------------------Modifier ici
Cells(6, i).Select
Loop While ActiveCell.Value <> "" 'boucler jusqu'à la fin de la ligne 6
'...


Ajouter ces deux Fonctions

'calculer le nombre de jours ouvrés entre deux dates
Function NBJO(Date_début As Date, Date_fin As Date) As Integer
Dim Cpt As Date
Application.Volatile
If Date_fin = 0 Or Date_début = 0 Or Date_fin < Date_début Then
    NBJO = 0
    Exit Function
End If
For Cpt = Date_début To Date_fin
If Weekday(Cpt, vbMonday) <> 7 Then
NBJO = NBJO + 1
End If
Next
End Function


'calculer le nombre de jours fériés entre deux dates (sauf dimanche)
Function NBJF(Date_début As Date, Date_fin As Date) As Integer
Dim Cpt As Date, JF As Range, cel As Range
Application.Volatile
If Date_fin = 0 Or Date_début = 0 Or Date_fin < Date_début Then
    NBJF = 0
    Exit Function
End If
Set JF = Range("JoursFériés!B2:B20")
For Cpt = Date_début To Date_fin
For Each cel In JF
If Weekday(Cpt, vbMonday) <> 7 Then
   If Cpt = cel.Value Then NBJF = NBJF + 1
End If
Next
Next
End Function


2) Ajouter une feuille, renommer "JoursFériés"
(attention à l'orthographe, le nom figure dans la fonction NBJF)
Colonne "A"-----Colonne "B"
Année	         2008
Jour de l'an	  01/01/2008
Lundi Pâques      24/03/2008
Fête Travail       01/05/2008
Fête Victoire     08/05/2008
Fête Nationale  14/07/2008
Ascension        15/08/2008
Toussaint         01/11/2008
Armistice         11/11/2008
Noel               25/12/2008

Eventuellement compléter ou corriger, tu peux aller jusqu'a la ligne 20


3) Modifier la feuille congés
Pour chaque mois ajouter une colonne, exemple:
+---------------------------------+---------------------------------+
:          juillet 2008           :            Aout 2008            :
+----------+----------+-----------+----------+----------+-----------+
:   Debut  :   Fin    : Nbr Jours :   Debut  :   Fin    : Nbr Jours :
+----------+----------+-----------+----------+----------+-----------+

dans la colonne Nbr Jours, mettre la formule:
=NBJO(Debut;Fin)-NBJF(Debut;Fin)

en fait, Debut et Fin sont les cellules à passer aux fonctions
exemple en G8 : =NBJO(E8;F8)-NBJF(E8;F8)

copier la formule sur toute la colonne
recommencer pour les colonnes suivantes

Bon courage.
0
Bonjour Amigo,

alors je me suis penché sérieusement sur mon problme, j'ai fini par trouver une solution, "je pense", mais l'inconvénient est que lorsque je compile il me dit "Incompatibilité de type", je te laisse voir si tu peux faire quelque chose la dessus s'il te plait !!!

Je te remercie !!!


https://www.cjoint.com/?gAip5VkfcE
0
Bonjour,

ça se complique sérieusement, ton tableau.

Voici les corrections à aporter à la procédure Mise_a_jour_conges()
'....
'Recherche colonne du mois en cours dans feuille congés
'Se positionner sur la feuille congés en B6
Sheets(f_conge).Select
Range("C6").Select
i = 3: col = 0' initialiser i à 3 (colonne C)
'....
'....
'Rechercher nom de l'agent
        If nom_agent <> "" Then ' ne pas rechercher une case vide
            On Error Resume Next
            Selection.Find(What:=nom_agent, After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False).Activate
            On Error GoTo 0
        End If


A+.
0
Bonjour Amigo,

je tiens tout d'abors a te remercier pour la petite correction que tu as apporté merci, et je voulais éventuellement revenir à ta solution sur la feuille "JoursFériés", je suppose que je dois mettre les jours fériés annuels manuellement par exemple pour 2010, 2011...alors dans ce cas ca modifiera les années précédentes si j'ai bien compris ????

++
0
Bonjour,

La solution que j'avais imaginé est sensiblement pareille à la tienne, éxepté que j'ai utilisé des fonctions personnalisées plutot que des formules attachée à des cellules nommées.

Il n'en reste pas moins que la feuille ou sont listés les jours fériés de l'année en cours comportera toujours une part de saisie manuelle, sauf si comme tu l'a fait, tu sais calculer les dates mobiles Paques et Pentecote. Les autres dates sont fixes, je crois.

De plus, dans ma région, nous avons des fetes locales particulières qui s'ajoutent, je ne sais pas si c'est vrai ailleurs.

Encore un cas particulier eventuellement à prendre en compte, par exemple dans ma société nous fermons certains jours de l'année (on fait le pont certains week-ends). Donc il faut gérer ça aussi.

Il reste la journée de solidarité, le jour férié travaillé, qui peut être un n'importe quel jour férié à condition que ça ne tombe pas un dimanche.

C'est pour ça que moi, si j'avais à faire ce travail, je saisirai à la main une fois pour toutes en début d'année le tableau des jours fériés. Ce n'est pas un gros travail et au moins c'est juste.

Ceci dit, les fontions personnalisées s'utilisent comme les fonctions Excel standard, il faut juste leur passer les bons paramètres séparés par des ";". Donc tu peux revoir la mise en forme du tableau si tu préfères voir les jours affichés juste à près la colonne nom. L'avantage des fonctions personnalisées c'est qu'elle profitent de toute la puissance du VBA.

Bon assez bavardé, à toi de voir. Si tu as un souci, je serai là.
A+.
0