Microsoft 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!
 

Pièces jointes

  • Tableua bord forum.xlsx
    11.3 KB · Affichages: 10

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+
 

Pièces jointes

  • Tableua bord forumJulie.xlsm
    23.6 KB · Affichages: 8

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
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 902
Membres
101 834
dernier inscrit
Jeremy06510