Masquer plusieurs lignes selon un formulaire

Bonjour

Tu demandes trop de chose à une formule qui voit certaine situation répondre à 2 conditions :

A Planifier » Quand, il est indiqué à former dans la colonne C ou bien que la date de recyclage vient à échéance de préférence 1 an avant l’échéance pour avoir le temps de planifier la formation.

et

Attention » quand la date en colonne K de cette même ligne est inférieur à celle d’aujourd’hui ou absente

exemple ligne 28 j’ai déjà l’information « Attention » car la date en colonne K de cette même ligne est inférieur à celle d’aujourd’hui ou absente
Or pour cette même ligne j’ai en colonne C « à former » qui doit maintenant selon tes souhaits mettre dans cette même cellule « A planifier »

C est impossible de demander à une formule d avoir 2 conditions vrais avec chacune sa propre conséquence

Elle ne saura pas laquelle appliquer

Il faut choisir entre l une ou l autre (Attention ou À planifier) ou les répartir entre 2 cellules distincts

Donc laisser dans la colonne actuelle « Indicateur » la formule en place qui mettra pour la ligne 28 le résultat « Attention » et la colonne suivante une nouvelle formule pour les nouvelles conditions qui mettra pour cette même ligne « A planifier » cette ligne a ces 2 conditions Vrais donc aura colonne « Indicateur » Attention et la suivante A planifier

A toi de voir ce qu il faut mettre en place mais surtout pas une seule cellule pour l ensemble de ces conditions celles en place et les nouvelles (Attention et A planifier)

Dans l attente de te lire

Très bien. Je viens de comprendre la problématique.
Je comprends ce que tu veux dire maintenant. N’est-il pas possible de supprimer cette formule et de tenir seulement compte de la colonne date de la formation et celle du recyclage ? Quand elles sont correctement renseigné tout va bien donc « OK » et quand le recyclage vient à échéance ou bien que la première colonne montre à former cela m’affiche « à planifier ». Puis on rajoute une colonne quand il faut faire attention.

Ci-joint ma proposition avec les formules établit dans l’ordre de priorité ci-aprés ;

  • « A Planifier » Quand, il est indiqué à former dans la colonne C ou bien que la date de recyclage vient à échéance de préférence 1 an avant l’échéance pour avoir le temps de planifier la formation.
  • « OK » Quand, les colonnes sont correctement renseignées (date de la formation et Date de recyclage).
  • « ATTENTION » du coup le laisser seulement en lien avec la colonne Planification si la date de planification est dépassée.

C’est à dire que si plusieurs conditions ci-dessus sont vraies c’est de la première à la dernière que la priorité s’établit

C’est donc d’abord A Planifier qui est généré en résultat de formule si ses conditions sont vraies sinon OK sinon Attention

La formule se base pour toutes les conditions concernant les dates sur la colonne « Planification » colonne J seule à être au format européen (JJ/MM/AAAA)
La colonne « Date de recyclage » colonne I est difficilement exploitable car issue d’une formule complexe et au format américain (MM/JJ/AAAA)

Avec la colonne « Planification » colonne J cette nouvelle formule fonctionne sans faille
Avec la colonne « Date de recyclage » colonne I elle est aléatoire

Une fois la date colonne « Date de recyclage » colonne I établit il faudrait la reporter en colonne « Planification » colonne J au format européen

L’alimentation de la colonne « Indicateur » colonne K se fait dans ce contexte en fonction des conditions ci-dessus décrites
Seule la dernière ne sera jamais appliquée car elle tombe dans les conditions de la première qui viendra donc en remplacement

Essaies de voir avec des tests sinon il faut revoir les données dates et surtout leur format pour la mise en place de toutes ces conditions

Le fichier avec en colonne « Indicateur » colonne K la nouvelle formule

PROTO SUIVI FORM V7.xlsm (99,6 Ko)

Après analyse c’est bien le format Américain qui pose problème colonne « Date de recyclage » colonne I
Avec une simple formule je suis confronté à la difficulté :

si dans une cellule A1 par exemple je met une date au format américain MM/JJ/AAAA avec cette formule pour extraire l’année de cette date ; ANNEE(A1) tant que le JJ ne dépasse pas 12 j’obtiens bien le AAAA
exemple :

en A1 : 01/12/2020 (pour le 12 janvier 2020) la formule donne bien AAAA : 2020
Mais dés que je mets en A1 : 01/13/2020 (pour 13 janvier 2020 en format américain) la formule ne donne plus AAAA mais #valeur

Le dépassement de la 2° partie de la date du nombre de mois sur une année mets à mal les formules
Il faut impérativement un format européen pour le bon fonctionnement des formules

A toi de voir maintenant la suite à donner

Ci-joint une version avec la colonne « Date de recyclage » colonne I en format Européen la formule colonne « Indicateur » colonne K avec ces conditions :

  • « A Planifier » Quand, il est indiqué à former dans la colonne C ou bien que la date de recyclage vient à échéance de préférence 1 an avant l’échéance pour avoir le temps de planifier la formation.
  • « OK » Quand, les colonnes sont correctement renseignées (date de la formation et Date de recyclage).
  • « ATTENTION » du coup le laisser seulement en lien avec la colonne Planification si la date de planification est dépassée.

Fonctionne maintenant parfaitement

Testes et dis moi

PROTO SUIVI FORM V8.xlsm (99,6 Ko)

Merci @FFO ,

Désoler de répondre que maintenant. j’espère que tu vas bien ?

Cela fonctionne comme je le voulais.
Sauf que j’ai fait une petite bourde, je t’ai envoyé le fichier avec les onglets " Nouveau salarié" et « Retirer un salarié » que tu m’as modifié en " Ajouter" et « Retirer » juste avant.

Je suis désolé, c’est ma faute et je ne saurais pas le faire seul.

Bonjour

Ton fichier avec les nouveaux noms

Testes et si souci dis moi

PROTO SUIVI FORM V8.xlsm (99,7 Ko)

Bonjour @FFO,

C’est impeccable. Peut tu juste m’expliquer pourquoi la mise en forme conditionnelle dans la colonne I ne fonctionne pas quand la date est Inférieur à « AUJOURD’HUI » ?

Bonjour
Heureux de t’avoir rendu service

J’ai regardé tes MFC
Le souci est que l’on ne peux pas personnaliser chaque cellule de la colonne I Il faudrait que chaque MFC soit en rapport avec sa propre cellule pour réagir en fonction de sa date ou de son état
Or l’ensemble des données est piloté par un TDC qui uniformise chaque cellules d’une même colonne
Cela se manifeste notamment lorsque l’on saisit quelque chose dans une cellule libre d’une nouvelle colonne toutes les cellules de cette même colonne dans le champ d’action du TDC prennent l’élément introduit à l’identique
Je suppose que c’est pour une uniformité pour une même colonne
Donc difficile dans ce contexte de demander pour une colonne à chaque cellule d’avoir sa propre mise en forme elle prennent toute celle que l’on vient de mettre en place dans une de celles-ci

Il faut choisir soit le TDC soit le MFC

A toi de voir

A ton avis, quelle est la solution la plus avantageuse pour moi ?

Je te propose cette solution par macro
Si tu interviens en colonne C « Date de la formation » ou en colonne E « Formation » la macro : « Sub Couleur_colonne_I() » est déclenchée et analyse toutes les cellules colonne I « Date de recyclage »
Si vide met une couleur si < date d’aujourdhui met une 2° couleur si > date d’aujourdhui met une 3° couleur

Cela résout ton PB

Reste à savoir si cette colorisation te conviens

Fais des essais et dis moi

PROTO SUIVI FORM V9.xlsm (104,5 Ko)

Une petite amélioration pour activer la macro à l’ouverture du fichier et ainsi d’avoir la colonne I « Date de recyclage » toujours actualisée des bonnes couleurs

J’espère que cela le fera

A toi de me dire

PROTO SUIVI FORM V9.xlsm (105,0 Ko)

Bonjour @FFO,

J’espère que tu vas bien et je te remercie de ton aide que tu a pu m’apporter.

J’ai un petit souci avec le formulaire retiré une personne qui masque la ligne selon la personne indiquer. Elle fonctionne très bien sauf, quand on filtre sur un nom/prénom, formation ou quelconque colonne cela fait reparaître les personnes. J’ai tenté de modifier la formule pour que cela me supprime directement la personne concernée, mais je n’y arrive pas.

Il s’agit de cette formule ci-dessous.

Citation
Sub RetirerPersonne()
Chaine = [Nom] & " " & [Prénom]
nomretiré = Split(Chaine, " ")(0)
prénomretiré = Split(Chaine, " ")(1)
'Suivi des formations
With Sheets(« Suivi des formations »)
NbLig = Application.CountIf(.Range(« D20:D1000 »), « ")
For i = 20 To 20 + NbLig
If .Cells(i, 4) = Chaine Then .Cells(i, 4).EntireRow.Hidden = True
Next i
End With
'Salaries
With Sheets(« Salaries »)
NbLig = Application.CountIf(.Range(« D7:D1000 »), "
 »)
For i = 7 To 7 + NbLig
If .Cells(i, 3) = nomretiré And .Cells(i, 4) = prénomretiré Then .Cells(i, 4).EntireRow.Hidden = True
Next i
Range(« D5,F5 »).ClearContents
End With
End Sub

Je souhaite remplacer le fait de masquer une personne par la suppression de cette personne.

Bonjour

Pour l’onglet « Suivi des formations »
remplacer la ligne :

If .Cells(i, 4) = Chaine Then .Cells(i, 4).EntireRow.Hidden = True*

par

If .Cells(i, 4) = Chaine Then .Cells(i, 4).EntireRow.Delete

Pour l’onglet *« Salaries »
remplacer la ligne :

If .Cells(i, 3) = nomretiré And .Cells(i, 4) = prénomretiré Then .Cells(i, 4).EntireRow.Hidden = True

Par

If .Cells(i, 3) = nomretiré And .Cells(i, 4) = prénomretiré Then .Cells(i, 4).EntireRow.Delete

Attention les suppressions de ligne peuvent mettre à mal des formules ce que ne fais pas le masquage

A tester

Bon courage

C’est bien ce que j’ai fait lors de mon essai, mais cela continue à masquer les lignes concernées.

Si tu veux essayer, c’est la dernière version que tu m’as envoyée.

Essaies avec cette nouvelle version ci-jointe

Testes et dis moi

PROTO SUIVI FORM V10.xlsm (103,4 Ko)

Bonjour @FFO,

Cela marche sans problème.
Une petite question concernant une des fonctions dans la date de recyclage.
Cela concerne cette fonction :

Citation
=SI(ESTERREUR(SI(GAUCHE([@Formation];1)=« > »;TEXTE(JOUR([@[Date de la formation]]);« 00 ») & « / » & TEXTE(MOIS([@[Date de la formation]]);« 00 ») & « / » & ANNEE([@[Date de la formation]])+5;SI(GAUCHE([@Formation];1)=« < »;TEXTE(JOUR([@[Date de la formation]]);« 00 ») & « / » & TEXTE(MOIS([@[Date de la formation]]);« 00 ») & « / » & ANNEE([@[Date de la formation]])+3;«  »)));«  »;SI(GAUCHE([@Formation];1)=« > »;TEXTE(JOUR([@[Date de la formation]]);« 00 ») & « / » & TEXTE(MOIS([@[Date de la formation]]);« 00 ») & « / » & ANNEE([@[Date de la formation]])+5;SI(GAUCHE([@Formation];1)=« < »;TEXTE(JOUR([@[Date de la formation]]);« 00 ») & « / » & TEXTE(MOIS([@[Date de la formation]]);« 00 ») & « / » & ANNEE([@[Date de la formation]])+3;«  »)))

Est-il possible de rajouter « * » pour les formations qui durent 2 ans ?
J’ai tenté de le faire moi-même, mais j’endommage plus la fonction qu’autre chose.

Bonjour
Peux tu préciser ce que tu cherches à obtenir
Je suppose que tu veux traiter le cas des formation sur 2ans avec pour les cibler dans leur nom en début le caractère « * » comme pour ceux de 3ans le caractère « < » et 5ans le caractère « > »
Et ainsi de calculer leur date de recyclage
Merci de me confirmer

Oui l’ami, c’est exactement ça.