XL 2016 SI + RECHERCHE = Renseigner automatiquement des valeurs dans un calendrier

nours955i

XLDnaute Nouveau
Bonjour,
voilà 9 ans que je n'étais pas revenu sur ce forum... mais la je bloque :(
Voici ma requête :
dans le fichier joint j'ai 2 onglets :
  • le 1er est un suivi de projets, de tâches et de période (date début/fin)
  • le 2ème est un calendrier 2016 vue par mois
Je souhaite, pour des questions de lisibilité, renseigner automatiquement les projets + tâches de l'onglet "suivi projets" dans l'onglet "calendrier 2016" en respectant les dates de début et de fin.
A cet effet, vous verrez que j'ai simulé cette relation entre la ligne 15 du premier onglet et la période du 25/05 au 03/06 dans le 2ème onglet.
Si à une date donnée il n'y a pas de tâche dans le 1er onglet alors la cellule du calendrier sera vierge
Fonction RECHERCHE, Macro ???? je suis à court d'idée !

Souhaitant avoir été assez clair et vous remerciant par avance pour votre aide :)
Bonne journée
Cdt
Philippe
Version Office 2016/Mac Sierra
 

Fichiers joints

nours955i

XLDnaute Nouveau
j'ai modifié le titre car, d'après mes recherches, il semblerait qu'une fonction combinant RECHERCHE et SI pourrait faire le job... enfin... selon moi
Sachant que je n'ai pas réussi en combinant ces 2 fonctions !
 

job75

XLDnaute Barbatruc
Bonsoir nours955i, bienvenue sur XLD,

Il faut des formules matricielles (validation par Ctrl+Maj+Entrée) et les cellules fusionnées ne les acceptent pas.

J'ai donc tout simplement supprimé les colonnes où elles se trouvaient et élargi les autres.

Voyez donc les fichiers joints et leurs 2 formules matricielles en C4 et C5 recopiées à droite puis vers le bas.

Notez la différence des résultats entre les 2 fichiers : le 1er utilise PETITE.VALEUR, le second GRANDE.VALEUR.

Donc 1ère ligne trouvée pour le 1er, dernière ligne trouvée pour le 2ème.

A+
 

Fichiers joints

nours955i

XLDnaute Nouveau
Bonsoir nours955i, bienvenue sur XLD,

Il faut des formules matricielles (validation par Ctrl+Maj+Entrée) et les cellules fusionnées ne les acceptent pas.

J'ai donc tout simplement supprimé les colonnes où elles se trouvaient et élargi les autres.

Voyez donc les fichiers joints et leurs 2 formules matricielles en C4 et C5 recopiées à droite puis vers le bas.

Notez la différence des résultats entre les 2 fichiers : le 1er utilise PETITE.VALEUR, le second GRANDE.VALEUR.

Donc 1ère ligne trouvée pour le 1er, dernière ligne trouvée pour le 2ème.

A+
@job75 : bonjour et merci pour cette aide :)
Effectivement... je n'aurai jamais trouvé seul !

Je note qu'il semble impossible de faire cohabiter sur une même feuille (un même calendrier) l'ensemble des projets/tâches afin de consolider l'ensemble des données.
Sans doute est-ce dû au fait que pour une même date et une période commune on peut avoir plusieurs projets et plusieurs tâches (d'où les 2 fichiers petite et grande valeur)
 

nours955i

XLDnaute Nouveau
Finalement si je revois mon besoin à la baisse :
  • définir une période (exemple une semaine de jours ouvrés du lundi 10 au vendredi 15 octobre 2016)
  • rechercher dans l'onglet "Suivi projet" s'il existe 1 ou plusieurs évènements (tâches) sur cette période
  • les afficher d'une façon ou d'une autre dans un autre onglet (pas forcément sous forme de calendrier tel que souhaité à l'origine
Merci et bon dimanche ;)
 

job75

XLDnaute Barbatruc
Bonjour nours955i, le forum,

Si l'on recherche tous les projets qui englobent une période donnée, utiliser une MFC :
Code:
=($G$3>=$C4)*($H$3<=$E4)
Fichier joint.

Bonne journée.
 

Fichiers joints

Dernière édition:

job75

XLDnaute Barbatruc
Re,

Et si l'on veut restituer le résultat dans une feuille, formule matricielle en Recherche!A5 :
Code:
=SIERREUR(INDEX('Suivi projets'!A$1:A$1000;PETITE.VALEUR(SI(($A$3>='Suivi projets'!$C$1:$C$1000)*($B$3<='Suivi projets'!$E$1:$E$1000);LIGNE('Suivi projets'!$A$1:$A$1000));LIGNES(A$5:A5)));"")
A tirer sur B5 et vers le bas.

Fichier (2).

A+
 

Fichiers joints

Dernière édition:

nours955i

XLDnaute Nouveau
Re,

Et si l'on veut restituer le résultat dans une feuille, formule matricielle en Recherche!A5 :
Code:
=SIERREUR(INDEX('Suivi projets'!A$1:A$1000;PETITE.VALEUR(SI(($A$3>='Suivi projets'!$C$1:$C$1000)*($B$3<='Suivi projets'!$E$1:$E$1000);LIGNE('Suivi projets'!$A$1:$A$1000));LIGNES(A$5:A5)));"")
A tirer sur B5 et vers le bas.

Fichier (2).

A+
Humm pas mal !
Je pense que je vais pouvoir atteindre mon objectif avec cette dernière proposition
Merci beaucoup :)
 

job75

XLDnaute Barbatruc
Re,

Un autre problème : lister tous les projets qui existent dans la période de recherche.

On peut alors utiliser cette fonction VBA :
Code:
Function DateExiste(deb&, fin&, DebutProjet As Range, FinProjet As Range)
If deb = 0 Then End 'sécurité si effacement
Dim a() As Boolean, i&, dat&
ReDim a(1 To DebutProjet.Count, 1 To 1)
For i = 1 To UBound(a)
  For dat = deb To fin
    If dat >= DebutProjet(i) And dat <= FinProjet(i) Then a(i, 1) = True: Exit For
Next dat, i
DateExiste = a 'vecteur vertical
End Function
Le code doit être impérativement dans un module standard.

Ensuite formule matricielle en Recherche!A5 :
Code:
=SIERREUR(INDEX('Suivi projets'!A$1:A$18;PETITE.VALEUR(SI(DateExiste($A$3;$B$3;'Suivi projets'!$C$1:$C$18;'Suivi projets'!$E$1:$E$18);LIGNE('Suivi projets'!$A$1:$A$18));LIGNES(A$5:A5)));"")
Fichier (3) d'extension .xlsm.

A+
 

Fichiers joints

Dernière édition:

Discussions similaires


Haut Bas