Faire un calendrier (fait) où les valeurs se superposent (pas fait)

Bonjour à tous,

Mon problème est simple mais la solution l’est moins :

J’ai dans un onglet BDD une colonne de dates et une autre de valeurs, j’aimerai faire dans un autre onglet un calendrier annuel où les valeurs s’inscrivent en fonction de leur date respectives :
Pour cela j’ai fais =SIERREUR(INDEX(BDD!$E$3:$E$105;EQUIV(DATE($A$1;MOIS(1&B$2);$A8);BDD!$M$3:$M$105;0));"")
Le seul problème c’est que certaines valeurs ont les mêmes dates associés, ce qui fait que je n’ai que la première valeur qui s’y inscrit.
Exemple : les valeurs 2, 3, 4 , 5 et 6 ont comme date associé le 15/01/19
et mon calendrier n’affichent que “2” à cette date là.
J’aimerai avoir 2/3/4/5/6

J’ai pensé à une boucle for en VBA ou à la limite à diviser mes jours en 5 en ajoutant une fonction qui trierai les valeurs déjà prise ou non, mais je n’ai ni la fonction et en plus cela serait moche.
Ci joint l’excel simplifié de mon problème :slight_smile:
Excel Simplifié.xlsx (26,3 Ko)
Merci d’avance ! Je suis preneur de toutes informations/conseils.

Bonjour,

A tester avec une petite fonction VBA personnalisée

la formule:
=SIERREUR(MaRecherche(DATE($A$1;COLONNE()-1;LIGNE()-2);BDD!$M$3:$M$105;-8);"")

La fonction macro

Function MaRecherche(Item As Variant, Plage As Range, Index As Integer)
Dim Tablo()
Dim Compteur%, i%
Dim c
Application.Volatile
Compteur = 1
  For Each c In Plage
    If c = Item Then
      ReDim Preserve Tablo(Compteur)
      Tablo(Compteur) = c.Offset(, Index)
      Compteur = Compteur + 1
    End If
  Next c
  For i = 1 To UBound(Tablo)
    MaRecherche = MaRecherche & " " & Tablo(i)
  Next i
End Function

Le classeur:
Excel Simplifié.xlsm (33,8 Ko)

Wow incroyable ! Ça marche !

Par contre j’ai oublié de préciser que je n’avais jamais fait de VBA avant aujourd’hui :sweat_smile:
Donc il va falloir que j’analyse ton code avant de tous comprendre ahah (j’aime bien comprendre ce que je fais)
Mais pour l’instant je vais utiliser ta solution sans réfléchir :slight_smile: (c’est pour le boulot)
Pour utiliser ta solution dans mon vrai Excel je copie le code dans le projet Module 1 (pour avoir la fonction MaRecherche) et la formule dans la case concernée ?
Je ne me trompe pas ?
Encore merci Mimimathy :stuck_out_tongue:
Je viens de découvrir, mais le VBA m’a l’air très sympa comme outil !

Cordialement,

Re,

C’est tout à fait cela

Je prendrai le temps de faire une explication détaillée plus tard :wink:

Re,

Voici la macro fonction un peu détaillée

Function MaRecherche(Item As Variant, Plage As Range, Index As Integer)
'déclaration des variables
Dim Tablo()
Dim Compteur%, i%
Dim c
Application.Volatile 'Pour que la fonction soit dynamique et recalculée chaque fois que le calcul se produit
Compteur = 1  'initialisation de la variable compteur
  For Each c In Plage 'boucle sur la plage
    If c = Item Then 'si la valeur c= item
      ReDim Preserve Tablo(Compteur) 'je redimensionne mon tablo
      Tablo(Compteur) = c.Offset(, Index) 'je renseigne en mémoire les données
      Compteur = Compteur + 1 'le compteur prend une valeur de plus au tour de boucle
    End If
  Next c 'fin de la boucle
  For i = 1 To UBound(Tablo) 'autre boucle pour mettre en place les données dans la cellule concernée
    MaRecherche = MaRecherche & " " & Tablo(i)
  Next i
End Function

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.