Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion MysterPb
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 

Pièces jointes

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:
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.
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…