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

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 !

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

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

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. :-/
 
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.
 
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
 
- 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

Retour