[RESOLU] VBA ou formule

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

  • essai excel.xlsm
    89.7 KB · Affichages: 48
  • essai excel.xlsm
    89.7 KB · Affichages: 46
Dernière modification par un modérateur:

Iznogood1

XLDnaute Impliqué
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

  • essai excel.xlsm
    91.1 KB · Affichages: 44
  • essai excel.xlsm
    91.1 KB · Affichages: 44

hbenalia

XLDnaute Occasionnel
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

  • Essai excel.xlsm
    64.1 KB · Affichages: 62
  • Essai excel.xlsm
    64.1 KB · Affichages: 65

lauriane

XLDnaute Nouveau
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...
 

lauriane

XLDnaute Nouveau
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 :confused:
 

lauriane

XLDnaute Nouveau
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:

lauriane

XLDnaute Nouveau
Re : VBA ou formule

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

@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:

lauriane

XLDnaute Nouveau
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?
 

Iznogood1

XLDnaute Impliqué
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)));"")
 

lauriane

XLDnaute Nouveau
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...:confused:
 

lauriane

XLDnaute Nouveau
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:mad::rolleyes::confused:

=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)));"")
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16