[RESOLU] VBA ou formule

  • Initiateur de la discussion Initiateur de la discussion lauriane
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

lauriane

XLDnaute Nouveau
Bonjour,

Débutante en macro mais ne lâchant rien, j'aurais quand même besoin de vos lumières pour finaliser mon tableau de suivi de formations:

Mon problème:
Je voudrais afficher, sur la feuille "détails retard" (données sur feuille "suivi formations"):
si la date de validité (en G10) est supérieure à la date du jour (en C2:C3) ET si F10 (case pour signaler possession formation ou non par un "X"), contient "X" ALORS, afficher nom+prénom (en D10)

J'ai réussi à faire apparaître les salariés qui possédaient la formation concernée :
=si(nb.si('suivi formations'!F10;"*X*");'suivi formations'! D10;"")

Mais je n'arrive pas à rajouter la condition de la date:
J'ai tenté =si(nb.si('suivi formations'!F10:G10;">"&JOUR())+nb.si('suivi formations'!F10;"*X*");'suivi formations'! D10;"")
Mais ça me signale toutes les personnes qui ont la formation, pas seulement ceux dont la date de validité est dépassée.

J'ai enregistrée les macro de ces formules pour tenter la création d'une vba (avec countifs entre autre ) mais c'est là que je bloques vraiment.

Si vous avez l'esprit à l'entreaide, merci!
sinon tant pis
 

Pièces jointes

Dernière modification par un modérateur:
Re : VBA ou formule

Ca fonctionne par formule

Ci-joint un exemple avec synthèse des retard pour CACES 1 et CACES 1B
Pour les colonnes suivantes, recopie la formule (matricielle - validée par CTRL + MAJ + Entrée)
de la cellule A4
Code:
=SIERREUR(INDEX('Suivi Formations'!D:D;PETITE.VALEUR(SI('Suivi Formations'!$G$10:$G$74<>"";SI('Suivi Formations'!$G$10:$G$74<='Suivi Formations'!$C$2;LIGNE('Suivi Formations'!$G$10:$G$74);1E+99);1E+99);LIGNES($A$1:A1)));"")

en remplaçant $G$10:$G$74 par la plage relative à la formation
($M$10:$M$74 pour le CACES 3A par exemple)

Puis étire la formule vers le bas
 

Pièces jointes

Re : VBA ou formule

Bonjour à tous, lauriane, Iznogood1

Une petite amélioration de la formule d'Iznogood1 avec ajout de plages nommées: Rng, Col_1, Col_2... Une seule formule (matricielle validée par: Ctrl+Maj+Entree) qu'on saisi dans la cellule A4 de la feuille "détails en retard" puis qu'on recopie dans les autres cellules... Revoir la condition de date...

Cordialement
 

Pièces jointes

Re : VBA ou formule

Ca fonctionne par formule

Ci-joint un exemple avec synthèse des retard pour CACES 1 et CACES 1B
Pour les colonnes suivantes, recopie la formule (matricielle - validée par CTRL + MAJ + Entrée)
de la cellule A4
Code:
=SIERREUR(INDEX('Suivi Formations'!D:D;PETITE.VALEUR(SI('Suivi Formations'!$G$10:$G$74<>"";SI('Suivi Formations'!$G$10:$G$74<='Suivi Formations'!$C$2;LIGNE('Suivi Formations'!$G$10:$G$74);1E+99);1E+99);LIGNES($A$1:A1)));"")

en remplaçant $G$10:$G$74 par la plage relative à la formation
($M$10:$M$74 pour le CACES 3A par exemple)

Puis étire la formule vers le bas


Tu as réussi (en m'apprenant de nouvelles formules : petite valeur et ligne...) mais , même en restant sur le fichier que tu as envoyé, rien ne s'affiche quand je copie sur les autres colonnes... même pas une erreur de signalée...
 
Re : VBA ou formule

Bonjour à tous, lauriane, Iznogood1

Une petite amélioration de la formule d'Iznogood1 avec ajout de plages nommées: Rng, Col_1, Col_2... Une seule formule (matricielle validée par: Ctrl+Maj+Entree) qu'on saisi dans la cellule A4 de la feuille "détails en retard" puis qu'on recopie dans les autres cellules... Revoir la condition de date...

Cordialement

Merci! Par contre même problème qu'Iznogood1: rien ne s'affiche 😕
 
Re : VBA ou formule

@ hbenalia

Bien vu, mais n'aurais-tu pas fais une erreur dans la définition de
Code:
Col_1=DECALER(Rng;;2*COLONNE()-2)

Ne serait-ce pas plutôt
Code:
Col_1=DECALER(Rng;;2*COLONNE()-1)


je n'arrive pas à trouver la plage nommée... g10:g74? (en exemple)
==> finalement si, c'est diiingue ce qu'on apprend en ligne et grâce aux "anciens"
 
Dernière modification par un modérateur:
Re : VBA ou formule

Merci! Par contre même problème qu'Iznogood1: rien ne s'affiche 😕

@hbnalia : J'ai réussi sur la 1ère ligne mais comment puis-je la copier sur les lignes suivantes? si j'étire vers le bas ça ne répètera que le 1er nom.
(jai pris en compte la modif apportée par Iznogood1)

===> et finalement, c'est en cherchant qu'on trouve

Merci énormément @hbnalia et @iznogood1, you make my day!
 
Dernière modification par un modérateur:
Re : [Resolu] VBA ou formule

bon dernière question (de toute façon c'est bientôt le week-end et l'overdose excelienne est en approche), si je veux utiliser la même formule mais en changeant de date ( si la date est entre date du jour et date du jour +30):
J'ai tenté un C2+30, un <=C2&F2 (aujourdhui + 30) mais ça serait trop beau... un conseil?
 
Re : VBA ou formule

Je verrais bien (avec le fichier de hbenalia, en modifiant la formule de Col_1 comme dans mon message de 14:34)

Code:
=SIERREUR(INDEX('Suivi Formations'!$D:$D;PETITE.VALEUR(SI(Col_1<>"";SI(ET(Col_2>='Suivi Formations'!$C$2;Col_2<'Suivi Formations'!$C$2+31);LIGNE(Col_1);1E+99);1E+99);LIGNE($A1)));"")

ou, si tu conserves le mien
Code:
=SIERREUR(INDEX('Suivi Formations'!D:D;PETITE.VALEUR(SI('Suivi Formations'!$G$10:$G$74<>"";SI(ET('Suivi Formations'!$G$10:$G$74>='Suivi Formations'!$C$2;'Suivi Formations'!$G$10:$G$74<'Suivi Formations'!$C$2+31);LIGNE('Suivi Formations'!$G$10:$G$74);1E+99);1E+99);LIGNES($A$1:A1)));"")
 
Re : VBA ou formule

Je verrais bien (avec le fichier de hbenalia, en modifiant la formule de Col_1 comme dans mon message de 14:34)

Code:
=SIERREUR(INDEX('Suivi Formations'!$D:$D;PETITE.VALEUR(SI(Col_1<>"";SI(ET(Col_2>='Suivi Formations'!$C$2;Col_2<'Suivi Formations'!$C$2+31);LIGNE(Col_1);1E+99);1E+99);LIGNE($A1)));"")

ou, si tu conserves le mien
Code:
=SIERREUR(INDEX('Suivi Formations'!D:D;PETITE.VALEUR(SI('Suivi Formations'!$G$10:$G$74<>"";SI(ET('Suivi Formations'!$G$10:$G$74>='Suivi Formations'!$C$2;'Suivi Formations'!$G$10:$G$74<'Suivi Formations'!$C$2+31);LIGNE('Suivi Formations'!$G$10:$G$74);1E+99);1E+99);LIGNES($A$1:A1)));"")



Nada...😕
 
Re : VBA ou formule

Je verrais bien (avec le fichier de hbenalia, en modifiant la formule de Col_1 comme dans mon message de 14:34)

Code:
=SIERREUR(INDEX('Suivi Formations'!$D:$D;PETITE.VALEUR(SI(Col_1<>"";SI(ET(Col_2>='Suivi Formations'!$C$2;Col_2<'Suivi Formations'!$C$2+31);LIGNE(Col_1);1E+99);1E+99);LIGNE($A1)));"")

ou, si tu conserves le mien
Code:
=SIERREUR(INDEX('Suivi Formations'!D:D;PETITE.VALEUR(SI('Suivi Formations'!$G$10:$G$74<>"";SI(ET('Suivi Formations'!$G$10:$G$74>='Suivi Formations'!$C$2;'Suivi Formations'!$G$10:$G$74<'Suivi Formations'!$C$2+31);LIGNE('Suivi Formations'!$G$10:$G$74);1E+99);1E+99);LIGNES($A$1:A1)));"")

A vrai dire, même en tentant : (C2 date du jour et F2 date du jour +30), rien ne s'affiche😡🙄😕

=SIERREUR(INDEX('Suivi Formations'!$D:$D;PETITE.VALEUR(SI(col_1<>"";SI(ET(col_2>='Suivi Formations'!$C$2;col_2<='Suivi Formations'!$F$2);LIGNE(col_1);1E+99);1E+99);LIGNE(A1)));"")
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Formule ou VBA
Réponses
6
Affichages
333
Réponses
17
Affichages
2 K
Réponses
12
Affichages
1 K
Retour