VBA Mise en Forme Conditionnelle

Bonjour à tous,

J'essaie désespérémment d'appliquer des couleurs en fonction des dates (voir le fichier dans l'onglet "Chantier", colonnes P,Q,R,S,T) les couleurs sont mises en manuel mais j'aimerais que cela soit automatique afin de déterminer un planning de chantiers.

Je ne pense pas que cela soit possible en MEFC, mais plutôt en VBA mais je ne suis pas assez doué pour m'en sortir.

Merci beaucoup pour votre dévouement.

Eric

4planning-test.xlsm (67.15 Ko)

Bonjour,

Pas trop compris pourquoi ça ne serait pas possible en MEFC standard. Avec des plages nommées dynamiquement pour s'y retrouver dans la formule et en jouant sur la priorité des règles et leur interruption si vraie alors :

=SOMMEPROD((OPE=P$3)*(DD<=$O4)*(DF>=$O4)*(PROG=1))>0 'CHANTIER FINI
=SOMMEPROD((OPE=P$3)*(DD<=$O4)*(DF>=$O4)*(PROG<1)*(PROG>0)*($O4<AUJOURDHUI()))>0 'JOURS FINIS CHANTIER EN COURS
=SOMMEPROD((OPE=U$3)*(DD<=$O4)*(DF>=$O4)*(PROG<1)*(PROG>0))>0 'CHANTIERS EN COURS
=SOMMEPROD((OPE=P$3)*(DD<=$O4)*(DF>=$O4)*(PROG=0))>0 'CHANTIERS NON COMMENCES

Et le fichier qui va bien avec. La plage d'application est pour le moment sur plage $U$4:$Y$34 mais je vous la laisserai la replacer sur la plage $P$4:$T$34 lorsque vous vous sentirez prêt.

Cdlt,

Waouhhhh c'est juste magique!!!!, il y juste pour "Isabelle" que cela ne fonctionne pas mais normal elle est en colonne D, comment puis je appliquer cela à "Opérateur2" et "Opérateur3"? Désolé mais je n'ai pas compris "OPE=", "DD=" et "DF=", pas très doué je l'avoue.

PS: cela fait des jours que je cherche et vous en 10minutes l'affaire est réglée...

Merci encore.

Eric

Bonjour,

Ah oui je pensais qu'Isabelle n'était pas inscrite c'est pour ça que je ne me suis pas attardé, j'avais omis les colonnes D et E. Donc à la place de OPE=P$3 on aura quelque chose du style :

=SOMMEPROD(((OPE_1=P$3)+(OPE_2=P$3)+(OPE_3=P$3))*(DD<=$O4)*(DF>=$O4)*(PROG=1))>0 '

Si le nombre d'opérateur augmente on passera à une formule SOMMEPROD avec un NB.SI.

En fait tout les noms que vous voyez OPE_1, OPE_2, OPE_3, DD, DF, PROG sont des plages dynamiques qui s'étendent au fur et à mesure d'entrée de clients pour aller à chaque fois jusqu'à la fin de votre tableau.

Vous trouverez les formules définissant ces plages sous :

2021 05 10 12 07 16 copie de planning test xlsm lecture seule excel

Pour définir vos noms suivez les étapes 1 et 2, puis 5, entrez le nouveau nom 3 et la formule 4. Pour expliquer la formule DECALER, je pars de la cellule I2, qui correspond à ma première date de début de chantier, et décale la hauteur de ma plage équivalente au nombre de valeur présente dans la colonne A auquel je retire 1 pour ne pas comptabiliser l'en tête. Au final donc ma plage sera décalée de 6 lignes donc de A2 à A7.

Si vous reproduisez les étapes de l'image ci-dessus et cliquez sur 4, vous verrez alors que sur la feuille la plage I2:I7 est en surbrillance avec des pointillés verts.

Je vous laisse transposer ces explications à votre fichier.

Cdlt,

PS : C'est en forgeant qu'on devient forgeron. C'est très éloigné de mon métier, mais j’apprends petit à petit !

Alors là , je suis scotché, ça parait si simple!!!

Merci 1000 fois pour votre réactivité, vous ma sauvez la mise.

Compte tenu de vos compétences je risque de vous solliciter lors d'un autre blocage.

Bonne journée et merci encore.

Eric

Bonjour,

Pas de soucis, merci beaucoup mais le niveau d'autres membres devrait vous scotcher encore plus !

N'hésitez pas à passer votre sujet en résolu pour améliorer la lisibilité du forum.

Cdlt,

Re Bonjour,

Encore une petite question, comment puis je integrer le nom du client en même temps que la couleur de la MEFC?

Désolé d'abuser mais ca m'arrangerait bien.

Merci

Eric

Bonjour,

En créant un nom de plage dynamique CLI sur la même base qu'expliqué précédemment mais en partant de la cellule A2 alors en P4 et en tirant à droite et en bas :

=SI(SOMMEPROD(((OPE_1=P$3)+(OPE_2=P$3)+(OPE_3=P$3))*(DD<=$O4)*(DF>=$O4)*LIGNE(OPE_1))=0;"";INDEX(CLI;SOMMEPROD(((OPE_1=P$3)+(OPE_2=P$3)+(OPE_3=P$3))*(DD<=$O4)*(DF>=$O4)*LIGNE(OPE_1))))

Cdlt,

Décidemment incollable et super réactif, Maintenant je vous laisse tranquille et vous remercie une nouvelle fois.

Merci , merci et encore merci.

Eric

Juste un petit HIC avec Pascal du 20 au 25/05, oups!!!

et je crois que ce ne sont pas les bons clients , mais que se passe t il

En faisant cela, ça a l'air de fonctionner : @SI(SOMMEPROD(((OPE_1=$A3)+(OPE_2=$A3)+(OPE_3=$A3))*(DD<=B$1)*(DF>=B$1)*LIGNE(OPE_1))=0;"";INDEX(CLI;SOMMEPROD(((OPE_1=$A3)+(OPE_2=$A3)+(OPE_3=$A3))*(DD<=B$1)*(DF>=B$1)*LIGNE(OPE_1))-1)),

est ce la solution?

Merci

Eric

Dernière requête,

Peux t on imaginer pour chaque opérateur, déterminer sa disponibilité entre telle date (fin d'un chantier) et telle date (début d'un autre)?

Afin de pouvoir lui attribuer un autre chantier.

Oulala vous allez bientôt en avoir marre.

Merci

Bonjour,

Désolé j'ai du m'absenter.

En effet erreur de ma part, il faut bien faire -1 car comme je renvoie le numéro de ligne et non la position de la ligne à l'intérieur du tableau il faut que je retire la ligne d'en tête au résultat. En un peu plus raccourci :

=SI(SOMMEPROD(((OPE_1=P$3)+(OPE_2=P$3)+(OPE_3=P$3))*(DD<=$O4)*(DF>=$O4))=0;"";INDEX(CLI;SOMMEPROD(((OPE_1=P$3)+(OPE_2=P$3)+(OPE_3=P$3))*(DD<=$O4)*(DF>=$O4)*LIGNE(OPE_1))-1))

Pour la dernière requête le plus simple est de filtrer, soit en ayant appliquer une MEFC sur les cellules vides, soit de filtrer sur les cellules vides. On a alors pour chaque collaborateur les jours de disponibilité. Je pense que c'est ce qu'il y a de plus simple sans rentrer dans une usine à gaz.

Cdlt,

Ah oui ok, en fait j'imaginais dans l'idéal avoir une plage avec chaque nom du genre :

Thierry dispo du 26/05/2021 au 12/06/2021 mais là j'avoue que je pousse le bouchon un peu loin, cela permettait lors de la planification de désigner tel opérateur sur tel chantier compte tenu de ses dispos mais ce n'est pas grave c'est déjà énorme ce que vous avez fait.

Merci beaucoup

Bonjour,

C'est peut être possible mais le soucis avec ce genre de présentation c'est que si vous avez des multi micro périodes (1 jours à droite à gauche), vous allez vous trouver noyé sous une tonne d'informations sans vraiment identifier la période la plus longue.

Ici vous avez un aspect plus visuel, tel un Gantt, ce qui permet, je trouve, et ce n'est que mon avis personnel, une planification plus simple au premier coût d'oeil.

Cdlt,

C'est exact, sinon le planning va finir par être pollué.

Super Boulot!!!

Merci et bonne soirée à vous.

Bonjour Ergotamine,

J'ai encore un petit souci, j'essaie d'avoir le motif d'absence en plus dans le "planning" et dans "Chantiers", dans "planning" c'est une cata, dans "chantiers" c'est pas mal mais dès que je change de mois dans "Absences" Ca efface tout alors j'ai essayé en faisant référence à mon tableau "TAbs" mais rien ne va...

Au secours!!!

Bonjour,

Désolé je ne pourrais vous aider, vous utilisez des fonctions qui ne sont prises en charges sous ma version OFFICE 2019. Je vous conseille d'ouvrir un nouveau sujet en expliquant mieux votre problème et ce que vous attendez.

Cdlt,

Rechercher des sujets similaires à "vba mise forme conditionnelle"