Incrémentation de formules

Bonjour à tous,

j'ai deux petits problèmes que je n'arrive pas résoudre,

Tout d'abord, Dans mon Onglet Cal à partir de la ligne 369 j'essaie de mettre en place un petit tableau qui va me récapituler les jour d'absence en fonction de leur nature (CA, RT, etc...)

La formule marche nickel mais j'aimerai que le nombre de colonne s'incrémente automatiquement en fonction du nombre d'agent. Le nombre d'agent est récupéré depuis mon onglet Param. ( le nombre d’agent peut varié selon le service)

Mon second problème est en deux étapes,

Tout d'abord j'aimerai inscrire une formule qui compte le nombre de case non vide de type

=NBVAL(C2:AI2)

sur toutes les lignes mais avec la partie "AI2" dynamique dans la colonne N+2, car selon le modèle le nombre poste varie et s'ajuste automatiquement d’après l'onglet Param.

La seconde partie me semble plus complexe j'aimerai que sur la ligne 369 récupérer la valeur précédemment calculer si la date filtré est un Lundi.

14formhebdo.xlsm (223.67 Ko)

Bonjour

Pour la première demande, mettre cette formule en D369 --> =NB.SI(INDIRECT(ADRESSE(LIGNES(366)+1;COLONNE();;;)&":"&ADRESSE(LIGNE()-3;COLONNE();;;));$A369)

Ensuite, tirer à droite et ensuite vers le bas

Cordialement

Bonjour à tous

Version macro pour la 1ère partie.

Pour la formule qui compterait les lundis non vides, je suis sec : moi et les formule...

Bye !

8formhebdo-v1.xlsm (298.27 Ko)

Merci gmb,

Je regarde ça rapidement, à vue d’œil çà me semble même une avancée pertinente pour la gestion du planning.

Bonne soirée,

re - bondoir, gmd,

Un léger bug dans le rapatriement du nom des agents. le compte se fait bien sur la bonne colonne, par contre les agents rapatriés sont toujours ceux de la première liste...

J'ai regardé ton code mais je suis un peu dépassé, si tu pouvais me mettre un ou deux commentaires pour éclairer un peu ma lanterne.

Dernière question à quoi sert le nom défini "Agents" j'ai pas trouvé la correspondance.

Bonjour

Nouvelle version.

Bye !

7formhebdo-v2.xlsm (294.21 Ko)

Re-bonjour

Je t'ai dit dans un précédent post que les formules n'étaient pas mon fort.

Mais si tu peux te contenter du résultat, cette nouvelle version te le donnne avec une macro indépendante.

Celle-ci se déclenche à chaque validation d’une modification de valeur dans le tableau des agents.

A toutes fins utiles….

Bye !

14formhebdo-v3.xlsm (290.57 Ko)

re

Tout d'abord, Dans mon Onglet Cal à partir de la ligne 369 j'essaie de mettre en place un petit tableau qui va me récapituler les jour d'absence en fonction de leur nature (CA, RT, etc...

Message juste pour savoir si vous avez essayé la solution que je vous ai proposée et si elle vous convient ou pas

Je n'ai pas regardé vos autres problèmes vu que gmb vous propose quelque chose

Cordialement

Merci dan, ça fonctionne plutôt bien, mais je vais rester sur la solution de gmb qui correspond plus à mon besoin. mais j'aurai peut etre besoin d'aide pour les formules de la seconde paritie

Re bonjour gmb,

alors je trimes depuis ce matin pour appliquer ton code car c'est presque parfait, j'ai finalement besoin de quelques chose d'un peu plus simple.

En fait le calendrier se génère automatiquement depuis mon user forme d’après la sélection des deux combobox (1 pour l'année l'autre pour le service)

je récupère la valeur du secteur Ex ACB au quelle je rajoute les suffixes Ag ( pour récupérer ma liste d'agent) et Post pour les postes de travail, bref je voulais déclenché directement la génération du tableau de formule avec ta macro lors de la génération du fichier.( donc directement depuis mon userform.)Je n'arrive pas à insérer mon

Cmbsect + Ag

dans ton code

Par-contre pour l'utilisation courante j'aimerai garder juste le bouton qui m'ouvre éventuelle un user forme qui intégrerai la mise à jours des agents pour le secteur préalablement déterminer on moment de la génération. et proposant une ligne impression qui remplacerait mon bouton impression. Mais je n'arrive pas à déterminer la liste des agents puisque je ne stock nul part le secteur sélectionné lors de la création du fichier.

As-tu des idée pour réaliser cela?

J'ai également regarder ton code pour le lundi non vide, j'ai essayer de l'appliquer sur mon onglet hebdo( puisque c'est là ou se situ mon besoin) mais j'ai pas réussi à obtenir grand chose. De plus est il possible, si ca marche sur l'onglet hebdo, de l'étendre à tous les jours de la semaine?

Je te remet mon fichier propre pour que tu test la génération du calendier pour voir comment on adapter au mieu

A plus

16p-rh-6-2.xlsm (194.55 Ko)

Bonjour

Tu écris :

le calendrier se génère automatiquement depuis mon user forme d’après la sélection des deux combobox

Mais comment affictes-tu cet UserForm ?

Par ailleurs, je trouve curieuses ces 2 listes déroulantes qu'on trouve dans la cellule A1, une pour choisir le trimestre à afficher, l'autre le mois. Et s'il y a contradiction ? Ex 1er trimestre dans l'un et octobre dans l'autre...

Bye !

L user form s affiche que lorsque le fichier se nomme P_rh..... je prend en compte que les 4 première lettre du fichier ( macro situé dans thisworkbook. Le nouveau fichier se génère A la racine du fichier P_rh

Désolé mais je ne vois pas...

Je passe la main.

Bye !

gmb a écrit :

Bonjour

Tu écris :

je trouve curieuses ces 2 listes déroulantes qu'on trouve dans la cellule A1, une pour choisir le trimestre à afficher, l'autre le mois. Et s'il y a contradiction ? Ex 1er trimestre dans l'un et octobre dans l'autre...

Bye !

Heureusement cette situation n'est pas possible.

If ComboBox2.ListIndex = -1 Then Exit Sub
    On Error Resume Next
    Application.ScreenUpdating = False
    ComboBox1.ListIndex = -1
    ComboBox1.Text = "Mois"
    WsCal.ShowAllData
    WsCal.Range("Calend").AutoFilter Field:=3, Criteria1:=ComboBox2.ListIndex + 1

et idem pour l'autre combobox


gmb a écrit :

Désolé mais je ne vois pas...

Je passe la main.

Bye !

Aïe,

dommage ton code fait parfaitement ceux que veux, il reste à faire l'ajustement.

Je suis toujours dessus mais j'avoue que certaine ligne de ton code ressemble pour moi à de la magie, et j'ai pas encore compris comment on gérait ton userform. Quelques nuits dessus devrai me déniaiser.

Un grand merci pour l'aide apporter. et le temps consacré à mon projet

Bonjour

edlede a écrit :

certaine ligne de ton code ressemble pour moi à de la magie

Mais je ne suis pas magicien et s'il s'agit de te commenter telle ou telle ligne de code, je peux toujours essayer.

Bye !

Bonjour gmb

Dans ton userform1 tu utilises

colN = ListBox1.ListIndex * 2 + 32

mais je ne vois pas ce tu fais avec ça, si tu peux me le commenter.

et je comprend pas non plus la manip

If nbAg > dercol - 3 Then
        Columns(dercol).Copy
        Range(Columns(dercol + 1), Columns(nbAg + 3)).PasteSpecial xlPasteFormats
        dercolN = nbAg + 3

Le reste me semblera moins flou avec quelques explications

Merci,

si tu peux me le commenter.

colN = ListBox1.ListIndex * 2 + 32

ColN me donne le numéro de la colonne dans laqulle se trouve, sur la feuille ‘’Param’’ le service que j’ai choisi dans la listbox1.

Exemple :

Je choisis ‘’Agent DBA’’ dans la boite de dialogue.

Donc, c’est le 2° item de la listbox1 et la valeur de LisBox1.ListIndex vaut 1 car on commence à compter les items à partir de zéro.

Et donc colN vaux 1 * 2 + 32 ce qui donne 34 : c’est bien la colonne de la feuille ‘’Param’’ où se trouve la liste des noms des agents qui appartiennent au service DBA.

If nbAg > dercol - 3 Then
        Columns(dercol).Copy
        Range(Columns(dercol + 1), Columns(nbAg + 3)).PasteSpecial xlPasteFormats
        dercolN = nbAg + 3

Dercol représente le numéro de la dernière colonne à droite où on trouve des noms sur la ligne 1 de la feuille Cal.

nbAg représente le nombre d’agents que l’on va retrouver au final sur le tableau et nbAg + 3 sera donc le numéro de la nouvelle dernière colonne à droite.

Donc, si nbAg > derCol +3, cela veut dire qu’on est dans le cas où il faut ajouter des colonnes. Pour cela, on copie la dernière colonne actuelle et on fait un collage spécial format sur les suivantes, jusqu’à la future dernière colonne, afin de conserver les mêmes formats de cellules.

Si on a nbAg < derCol +3 cela veut dire qu’on aura moins d’agent qu’il n’y en a au départ : on doit donc supprimer des colonnes.

OK ?

Bye !

Ok c est un peux plus claire je regarde ca des que je suis devant un ordinateur donc le +3 c est pour commencer le compte en colonne D ?

edlede a écrit :

donc le +3 c est pour commencer le compte en colonne D ?

Tu as tout compris !

Bye !

Voilà un exemple de fichier ou j'utilise ton code.

Ça fonctionne pas trop mal pour l'instant

Et merci pour tous

Rechercher des sujets similaires à "incrementation formules"