XL 2016 VBA effacer contenu colonne en fonction des infos d'une autre

sandfer

XLDnaute Nouveau
Bonjour,

Je vous écris car cela fait quasiment 1 an que je cherche la solution et quelqu'un m'a dit qu'il fallait passer par VBA or je n'y connais rien à VBA :(
Je suis donc résignée à demander qu'on me donne la solution car là je deviens dingo.

J'ai un tableau avec un suivi de stagiaires en formation :
- la colonne N indique l'état : si ils sont venus en formation ou non (pour plusieurs raisons, cf. ci-après)
- la colonne AM indique une date à laquelle ils devront être suivis (calculée 3 mois après leur formation)

Toutefois, si dans une cellule en colonne N j'indique dans ma liste déroulante que si l'une des 3 conditions suivantes est survenue : le stagiaire a abandonné/ne s'est pas présenté/a mis fin à sa formation, alors la cellule correspondante en colonne AM devrait s'effacer et ne devrait indiquer aucune date de suivi puisqu'il n'est plus là.
Les mentions exactes en colonne N sont :
A. Réalisé
B. Abandon (durant F)
C. Absence (jamais présenté)
D. Arrêt contrat (validation)
E. Intégration HD
F. Intégration T
G. Problème technique

Donc si j'indique par exemple dans la cellule N5 la raison B ou C ou D, alors la date en cellule AU 5 devrait s'effacer.
Au contraire, si on sélectionne A, E, F ou G, la date reste.

Quel code faut-il écrire quand on fait clic droit sur la feuille "Visualiser le code" !?

Je suis désolée de vous embêter, par avance, mais je ne trouve aucune aide et je ne comprends rien au langage VBA malgré toutes mes recherches.
Vraiment je vous remercie de tout coeur !
Bien cordialement,
Sand.
 

Hasco

XLDnaute Barbatruc
Repose en paix
bonjour,

VBA n'est pas forcément nécessaire dans ce genre de cas surtout si vous n'y connaissez rien.
Et la date en AM est-elle calculée par formule ?
Si elle l'est, on peut compléter la formule pour qu'elle ne renvoie rien si une des mentions est trouvée.
Si elle ne l'est pas on peut la calculer par formule

Mais un classeur exemple avec des données anonymisées et non confidentielles permettra d'y voir plus clair.
 

Gégé-45550

XLDnaute Accro
Bonjour,

Je vous écris car cela fait quasiment 1 an que je cherche la solution et quelqu'un m'a dit qu'il fallait passer par VBA or je n'y connais rien à VBA :(
Je suis donc résignée à demander qu'on me donne la solution car là je deviens dingo.

J'ai un tableau avec un suivi de stagiaires en formation :
- la colonne N indique l'état : si ils sont venus en formation ou non (pour plusieurs raisons, cf. ci-après)
- la colonne AM indique une date à laquelle ils devront être suivis (calculée 3 mois après leur formation)

Toutefois, si dans une cellule en colonne N j'indique dans ma liste déroulante que si l'une des 3 conditions suivantes est survenue : le stagiaire a abandonné/ne s'est pas présenté/a mis fin à sa formation, alors la cellule correspondante en colonne AM devrait s'effacer et ne devrait indiquer aucune date de suivi puisqu'il n'est plus là.
Les mentions exactes en colonne N sont :
A. Réalisé
B. Abandon (durant F)
C. Absence (jamais présenté)
D. Arrêt contrat (validation)
E. Intégration HD
F. Intégration T
G. Problème technique

Donc si j'indique par exemple dans la cellule N5 la raison B ou C ou D, alors la date en cellule AU 5 devrait s'effacer.
Au contraire, si on sélectionne A, E, F ou G, la date reste.

Quel code faut-il écrire quand on fait clic droit sur la feuille "Visualiser le code" !?

Je suis désolée de vous embêter, par avance, mais je ne trouve aucune aide et je ne comprends rien au langage VBA malgré toutes mes recherches.
Vraiment je vous remercie de tout coeur !
Bien cordialement,
Sand.
Bonjour,
Comme l'a très bien dit @Hasco, il suffit sans doute de modifier les formules de la colonne AM (à condition que ce contenu ne provienne pas d'une macro) comme suit, en supposant que l'on commence les modifications à partir de la ligne 1 (sinon, il faudra remplacer 1 par le "bon" numéro de ligne) :
VB:
=SI(ou(N1="B etc.";N1="C etc.";N1="D etc.");"";contenu actuel de la cellule AM1)
en remplaçant 'B etc.', 'C etc.' et 'D etc.' par le contenu complet des motifs B, C et D et 'contenu actuel de la cellule AM1' par le contenu actuel de la cellule AM1. Ensuite, il suffit d'étirer la formule sur la colonne (pas toute la colonne, juste le champ nécessaire).
Cordialement,
 
Dernière édition:

sandfer

XLDnaute Nouveau
Bonjour à vous, pardon pour le délai, week-end compliqué... :/
Déjà, merci beaucoup pour avoir pris le temps d'essayer de me comprendre !
@Hasco ci-joint un fichier simple, j'ai supprimé pas mal de colonnes entre, ainsi la N dont je parlais devient H, et AM = J. J'ai annoté une petite explication. Si une formule est plus simple, je laisse tomber VBA mais je ne vois pas trop vu que la formule que j'y ai déjà appliquée dépend de la précédente (I). Ne vous embêtez pas, dites-moi juste si je fais fausse route avec un code VBA et dans ce cas je chercherai une formule.

@Gégé-45550 : Merci à vous, en effet je regarde pour une formule si possible, un vrai casse tête mais j'y arriverai :) Je vais m'appliquer à tenter ce que vous me proposez !

Je vous remercie encore !
 

Pièces jointes

  • ex.xlsx
    13.7 KB · Affichages: 2

Hasco

XLDnaute Barbatruc
Repose en paix
Oooooohhhhhhhhhhhhhhhhhhhhhhhhhh je suis choquée !!!
Mais c'est génial ! je ne sais même pas quoi dire car tu m'as mis la formule toute faite (alors que je suis dessus depuis plus d'une heure déjà)
Vraiment un immense merci je gagne un temps de OUF !!!!!
🥰👏
Heu,

Je crois que j'ai inversé la condition, ce serait :
SI(OU(ESTNUM(CHERCHE(GAUCHE($H2;2);"A.E.F.G."));$I2<>"");[@[Fin formation]]+90;"")

Cordialement
 

sandfer

XLDnaute Nouveau
J'en reviens pas tellement c'est top !!!

Happy Thanks GIF
 

Discussions similaires

Statistiques des forums

Discussions
315 091
Messages
2 116 113
Membres
112 662
dernier inscrit
lou75