Office 365 Copier une ligne complète si une cellule de la colonne contient "Oui"

JulieMaz

XLDnaute Nouveau
Bonjour à tous,
Voilà mon problème: Dans mon fichier, j'aimerais afficher en dessous de mon tableau croisé dynamique, les lignes de ma feuille "Clients" dont la colonne U contient Oui. Je dois vous avouer que je commence à peine avec les fonctions avancées d'Excel et ça fait 2 semaines que je bûche pour trouver mais sans succès.
Je ne sais pas si je suis claire... Bref, je vous laisse mon fichier en espérant que quelqu'un pourra m'aider. Merci!
 

Fichiers joints

Calvus

XLDnaute Barbatruc
Bonsoir et bienvenue sur le forum,

Voici une proposition.
VB:
Option Explicit
Option Base 1

Sub Extraire()
Dim i As Integer, n As Single, j As Single, m As Single, t, a(), maxi As Single
t = Range("A1").CurrentRegion
ReDim t(1 To UBound(t), 23)
ReDim a(1 To UBound(t), 23)

For i = 2 To Cells(1, Columns.Count).End(xlToLeft).Column
    If LCase(Cells(i, 21)) = "oui" Then
        n = n + 1
            For j = 1 To 23
                t(n, j) = Cells(i, j)
            Next j

maxi = Cells(Rows.Count, 1).End(xlUp).Row
    Else
        m = m + 1
                If m > maxi Then Exit For
            For j = 1 To 23
                a(m, j) = Cells(i, j)
            Next j
    End If
Next i
Feuil2.[A10].Resize(UBound(t, 1), 23) = t
Feuil2.[A25].Resize(UBound(a, 1), 23) = a
End Sub
A+
 

Fichiers joints

JulieMaz

XLDnaute Nouveau
Merci Calvus!
Je l'ai essayé et, comme je n'y comprend pas grand chose, la réponse à été ceci: (voir image jointe).
Peut-être me suis-je trompée dans la retranscription ??
 

Fichiers joints

JulieMaz

XLDnaute Nouveau
Sur ma page Synthèse.... je crois....
Ouf, je me demande si ne serais pas mieux d'abandonner je ne veux pas vous faire perdre votre temps.... Je suis, je crois, pas assez avancée pour faire ça.
Peut-être que je serais mieux d'aller prendre un cours. :-/
 

Dim.Reichart

XLDnaute Occasionnel
Bonsoir,
J'ai passé la journée d'hier sur une formule de ce genre, je l'ai adapté, et ca donne ceci, à coller en A11:

=SI(LIGNES($11:11)=1;INDIRECT("clients!$a"&EQUIV("oui";INDIRECT("clients!$u$1:u"&NBVAL(Clients!$A:$A);VRAI);0);VRAI);SI(LIGNES($11:11)<=NB.SI(Clients!$U:$U;"oui");
INDIRECT("clients!$a"&EQUIV($A10;Clients!$A:$A;0)+EQUIV("oui";INDIRECT("clients!$u"&EQUIV($A10;Clients!$A:$A;0)&":u"&NBVAL(Clients!$A:$A);VRAI);0);VRAI);""))

Puis en B11:
=SI($A11="";"";RECHERCHEV($A11;INDIRECT("clients!l1c1:l"&NBVAL(Clients!$A:$A)&"c"&NBVAL(Clients!$1:$1);FAUX);COLONNES($A:B);FAUX))

Tu étires B11 jusque W11, sans rien modifier, et la ligne 11 jusqu'à la ligne 25.

Pour le second choix, tu reprend la formule de A11, tu modifies les "oui" par l'autre choix, et les numéros de ligne dans lignes($11:11). Pour Recherche V, tu peux reprendre la même qu'en B11 sans modification.

Si le tableau clients est modifié, la formule adapte sa zone de recherche, mais les emplacements restent limités par le second choix.
Dis moi si cela te convient.
 

Efgé

XLDnaute Barbatruc
Bonjour le fil, bonjour Dim.Reichart
Je pense que la version matricielle en Synthèse!$A$11 à tirer vers la droite et vers le bas
VB:
=SIERREUR(INDEX(DECALER(Tableau1[Numéro client];;COLONNES($A:A)-1);PETITE.VALEUR(SI(Tableau1[offre refusée]="OUI";LIGNE(Tableau1[Numéro client])-1);LIGNES($1:1)));"")
est plus courte et a l'avantage d'être unique sur l'ensemble de la zone de restitution.

Cordialement
 

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