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
 

Pièces jointes

  • Projet calendrier 2016 V1.xlsx
    55.2 KB · Affichages: 104

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+
 

Pièces jointes

  • Projet calendrier 2016 - PETITE.VALEUR(1).xlsx
    41.1 KB · Affichages: 110
  • Projet calendrier 2016 - GRANDE.VALEUR(1).xlsx
    41.5 KB · Affichages: 87

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.
 

Pièces jointes

  • Recherche de projet(1).xlsx
    15.9 KB · Affichages: 92
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+
 

Pièces jointes

  • Recherche de projet(2).xlsx
    19.5 KB · Affichages: 111
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+
 

Pièces jointes

  • Recherche de projet(3).xlsm
    26.4 KB · Affichages: 102
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 836
Messages
2 092 623
Membres
105 469
dernier inscrit
gautronmi