recherchev avec plusieurs valeurs a renvoyer en concaténation

stock14

XLDnaute Nouveau
Bonjour,
Je souhaite a partir d'une date renvoyer dans la même cellule tous les événements d'une base a cette date.
Il me semble avoir compris qu'il faut utiliser la fonction decaler avec equiv, mais je n'arrive pas à le formaliser ni même à le comprendre.
Pouvez-vous m'aider ?

Il faudrait qu'en C4 je retrouve et "rédaction de l'AAPC, et validation de l'AAPC". (concatené avec &" "& entre les deux résultats.)

Et autre question si il y a plus de deux éléments à la même date, je souhaiterai avoir en résultat "rédaction de l'AAPC + x autres événements"

Merci de vos éclairages.
 

Fichiers joints

gosselien

XLDnaute Barbatruc
Re : recherchev avec plusieurs valeurs a renvoyer en concaténation

Bonjour,

juste pour ton info, une date ne DOIT PAS être scindée en deux (risque d'erreur)
donc ta cellule B1 et plus bas devraient être : jjj-jj/mmm/aaa (format/cellule/personnaliser)
sauf si tu as une raison particulière de faire comme dans ton fchier :)

P.
 

stock14

XLDnaute Nouveau
Re : recherchev avec plusieurs valeurs a renvoyer en concaténation

Bonjour la date n'est pas scindée, elle est juste au format jj-mmmm.
Ce qui sauf erreur de ma part n'impacte en rien la valeur de la cellule qui au format nombre renvoie 43843.
Cordialement
 

Iznogood1

XLDnaute Impliqué
Re : recherchev avec plusieurs valeurs a renvoyer en concaténation

Stock,

ci-dessous une formule (peut-être optimisable !) qui devrait satisfaire ton besoin (à coller en C1, puis à recopier)
Attention : limitée à 10 000 lignes ; si ce n'est pas suffisant, remplace le 10 000 par le nombre de ton choix dans la formule
Code:
=SI(SOMMEPROD((H:H=B1)*1)=1;RECHERCHEV(B1;H:L;5;0);SI(SOMMEPROD((H:H=B1)*1)=2;RECHERCHEV(B1;H:L;5;0) & " & " & INDEX(H:L;EQUIV(B1;H:H;0)+EQUIV(B1;DECALER($H$1;EQUIV(B1;H:H;0);0):H$10000;0);5);SI(SOMMEPROD((H:H=B1)*1)>2;INDEX(H:L;LIGNES($1:$1);5;EQUIV(B1;H:H;0)) &" + " & SOMMEPROD((H:H=B1)*1) -1 & " autres événements";"")))
Démo : (c) CJoint.com, 2012
 

gosselien

XLDnaute Barbatruc
Re : recherchev avec plusieurs valeurs a renvoyer en concaténation

Bonjour la date n'est pas scindée, elle est juste au format jj-mmmm.
Ce qui sauf erreur de ma part n'impacte en rien la valeur de la cellule qui au format nombre renvoie 43843.
Cordialement
Bonjour Stock14, Iznogood1 et le forum,

ce que je voulais dire, c'est que en colonne A tu indiques "L" pour lundi je présume et en B1 la date; ti tu mets le format proposé dans la cellule B1 , tu auras directement le jour exact de la date sans risque d'erreur ; tous les 13 janvier ne sont pas des lundis :)

Bonne journée
P.
 

stock14

XLDnaute Nouveau
Re : recherchev avec plusieurs valeurs a renvoyer en concaténation

Bonjour Stock14, Iznogood1 et le forum,

ce que je voulais dire, c'est que en colonne A tu indiques "L" pour lundi je présume et en B1 la date; ti tu mets le format proposé dans la cellule B1 , tu auras directement le jour exact de la date sans risque d'erreur ; tous les 13 janvier ne sont pas des lundis :)

Bonne journée
P.
Ok, je comprends mieux ta remarque.
En fait dans le fichier d'origine, Le "L" en B1 est calculé par une fonction recherchev, basée sur le résultat d'une fonction JOURSEM. J'ai supprimé cette formule dans l'extrait de fichier car ce n'était pas en lien direct de ma demande.
 

stock14

XLDnaute Nouveau
Re : recherchev avec plusieurs valeurs a renvoyer en concaténation

Stock,

ci-dessous une formule (peut-être optimisable !) qui devrait satisfaire ton besoin (à coller en C1, puis à recopier)
Attention : limitée à 10 000 lignes ; si ce n'est pas suffisant, remplace le 10 000 par le nombre de ton choix dans la formule
Code:
=SI(SOMMEPROD((H:H=B1)*1)=1;RECHERCHEV(B1;H:L;5;0);SI(SOMMEPROD((H:H=B1)*1)=2;RECHERCHEV(B1;H:L;5;0) & " & " & INDEX(H:L;EQUIV(B1;H:H;0)+EQUIV(B1;DECALER($H$1;EQUIV(B1;H:H;0);0):H$10000;0);5);SI(SOMMEPROD((H:H=B1)*1)>2;INDEX(H:L;LIGNES($1:$1);5;EQUIV(B1;H:H;0)) &" + " & SOMMEPROD((H:H=B1)*1) -1 & " autres événements";"")))
Démo : (c) CJoint.com, 2012
Bonjour Iznogood1,
Merci pour ta réponse.
J'ai essayé ta formule, elle me renvoi #NOMBRE ! en résultat, en C1, et dans les cellules qui sont copiées vers le bas.Je n'arrive pas à corriger la formule, et surtout première question, à quoi correspond cette erreur ?
Merci de ton aide.
 

Iznogood1

XLDnaute Impliqué
Re : recherchev avec plusieurs valeurs a renvoyer en concaténation

As-tu testé le fichier joint ?

Peux-un fichier exemple ?
 

klin89

XLDnaute Impliqué
Re : recherchev avec plusieurs valeurs a renvoyer en concaténation

Bonsoir à tous

A tester :
VB:
Sub Essai()
Dim a, i As Long, n As Long
    Application.ScreenUpdating = False
    With Sheets("Feuil1")
        a = .Range("E1").CurrentRegion.Value
        With CreateObject("Scripting.Dictionary")
            .CompareMode = 1
            For i = 1 To UBound(a, 1)
                If Not .exists(a(i, 1)) Then
                    n = n + 1
                    a(n, 1) = a(i, 1)
                    a(n, 2) = a(i, 5)
                    .Item(a(i, 1)) = n
                Else
                    a(.Item(a(i, 1)), 2) = a(.Item(a(i, 1)), 2) & " " & a(i, 5)
                End If
            Next
            ReDim Preserve a(1 To UBound(a, 1), 1 To 2)
            For i = 1 To n
                .Item(a(i, 1)) = Array(a(i, 1), a(i, 2))
            Next
            With Sheets("Feuil1")
                a = .Range("A1").CurrentRegion
            End With
            ReDim Preserve a(1 To UBound(a, 1), 1 To 3)
            For i = 1 To UBound(a, 1)
                If .exists(a(i, 2)) Then
                    a(i, 3) = .Item(a(i, 2))(1)
                End If
            Next
        End With
        .Cells(1).Resize(UBound(a, 1), 3).Value = a
    End With
    Application.ScreenUpdating = True
End Sub
klin89
 

Fichiers joints

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas