XL 2013 Alimenter une colonne avec toutes les données ayant la même date - rechercheV++

MysterPb

XLDnaute Nouveau
Bonjour à tous,

Ce n'est pas hyper simple à expliquer. j'aimerai faire une rechercheV mais qui ne ressort pas uniquement la 1ère valeur trouvée mais toutes les valeurs disponible.

Le mieux est d'expliquer par un exemple que vous trouverez en PJ.

pouvez-vous me guider ?

j'aimerai passer par le VBA mais je ne suis pas super à l'aise avec. et il y a peut-être une formule plus simple, une sorte de rechercheV ++ :)

merci de votre aide précieuse
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonjour
Ce serait une fonction matricielle alors ?
Dans un module standard :
VB:
Option Explicit
Function Ressortir(ByVal Quoi, ByVal VClé, ByVal Dans)
   Dim RngAC As Range, LDon As Long, LRés As Long, TRés()
   If TypeOf Quoi Is Range Then Quoi = Quoi.Value
   If TypeOf VClé Is Range Then VClé = VClé.Value
   If TypeOf Dans Is Range Then Dans = Dans.Value
   Set RngAC = Application.Caller
   ReDim TRés(1 To RngAC.Rows.Count, 1 To 1)
   For LDon = 1 To UBound(Dans, 1)
      If Dans(LDon, 1) = VClé Then LRés = LRés + 1: TRés(LRés, 1) = Quoi(LDon, 1)
      Next LDon
   While LRés < UBound(TRés, 1): LRés = LRés + 1: TRés(LRés, 1) = "": Wend
   Ressortir = TRés
   End Function
En C4:C9 validé par Ctrl+Maj+Entrée :
Code:
=Ressortir(présence!$C$2:$C$26;B4;présence!$B$2:$B$26)
Puis copiez collez cette formule dans les paquets en dessous.
 
Dernière édition:

MysterPb

XLDnaute Nouveau
Merci pour ton retour rapide !
Cependant, je ne trouve pas le résultat escompté. je t'ai remis mon fichier complété en PJ.

peux-tu me dire si j'ai fait quelques chose de travers ?

merci à toi
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Sélectionnez la plage C4:C9, cliquez dans la barre de formule et validez en matriciel (Ctrl+Shift+Entrée)
Ensuite copiez et collez cette plage devenue matricielle dans les autres paquets.
 

Dranreb

XLDnaute Barbatruc
Attention vous avez changé à tort la clé B4 que j'avais mise. À la rigueur mettez $B4 mais surement pas $B$4
 

MysterPb

XLDnaute Nouveau
c'est incroyable. Merci beaucoup de votre aide.

Pouvez-vous m'expliquer, me détailler votre code VBA ainsi que le fonctionnement de votre ? je souhaiterais comprendre comment ça fonctionne.

merci
 

Dranreb

XLDnaute Barbatruc
VB:
Function Ressortir(ByVal Quoi, ByVal VClé, ByVal Dans)
   Dim RngAC As Range, LDon As Long, LRés As Long, TRés()
   If TypeOf Quoi Is Range Then Quoi = Quoi.Value
   If TypeOf VClé Is Range Then VClé = VClé.Value
   If TypeOf Dans Is Range Then Dans = Dans.Value
   Set RngAC = Application.Caller ' Plage d'où est invoquée la fonction.
   ReDim TRés(1 To RngAC.Rows.Count, 1 To 1) ' Réserve le nombre de lignes de cette plage × 1 seule colonne au tableau résultant.
   For LDon = 1 To UBound(Dans, 1) ' Pour LDon = 1 jusqu'au nombre de ligne de Dans
      If Dans(LDon, 1) = VClé Then LRés = LRés + 1: TRés(LRés, 1) = Quoi(LDon, 1)
      Next LDon
   While LRés < UBound(TRés, 1): LRés = LRés + 1: TRés(LRés, 1) = "": Wend ' Complète d'une chaîne vide les postes non renseignés (Sinon Excel assume 0)
   Ressortir = TRés ' Renvoie le tableau dynamique résultant.
   End Function
 

Discussions similaires


Haut Bas