Résolu XL 2016 VBA : Extraire données tableau sur une autre colonne

Yücel

XLDnaute Junior
Bonjour à tous,

Je souhaiterai récupérer automatiquement (sans bouton) le nom des banques avec statuts "actives" et le reporter dans la colonne B à partir de la ligne 4 et sans avoir de doublon.

Est-ce possible ce genre de requête ?? ci-joint fichier

En vous remerciant d'avance pour votre aide !
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

Rouge

XLDnaute Occasionnel
Bonjour,

En B4, formule matricielle à valider avec CTRL + SHIFT + ENTREE et à tirer vers le bas
=SIERREUR(INDEX($C$4:$C$13;PETITE.VALEUR(SI($D$4:$D$13="ACTIVE";LIGNE(INDIRECT("1:"&LIGNES($C$4:$C$13))));LIGNES($1:1));1);"")

Cdlt
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

La formule proposée par Rouge :) ne gère pas les doublons.
Ci-joint une solution simple et rapide par power query

JHA
 

Fichiers joints

Rouge

XLDnaute Occasionnel
Bonjour JHA,
Effectivement je n'avais pas fait le test avec des doublons, je propose la correction, histoire de ne pas laisser une erreur, bien que POWER QUERY soit plus adapté.
la formule corrigée (toujours à valider avec CTRL + SHIFT + ENTREE):
=SIERREUR(SI(NB.SI($B3:$B$3;INDEX($C$3:$C$13;PETITE.VALEUR(SI($D$3:$D$13="ACTIVE";LIGNE(INDIRECT("1:"&LIGNES($C$3:$C$13))));LIGNES($1:1));))<>0;"";INDEX($C$3:$C$13;PETITE.VALEUR(SI($D$3:$D$13="ACTIVE";LIGNE(INDIRECT("1:"&LIGNES($C$3:$C$13))));LIGNES($1:1));));"")

Cdlt
 

Yücel

XLDnaute Junior
Bonjour et merci à Rouge et JHA,

Ce n'est pas exactement ce que je voulais, je sais que c'est compliqué ce que je veux mais je retente.

Je m'explique, dans le tableau j'ai le nom des banques dans la colonne C avec des doublons (normale car plusieurs clients).
Je voulais que dans la colonne B (que je masquerai par la suite), le nom des banques soit repris uniquement si le statut est " active" (sans formule plutôt avec VBA) et sans les doublons.

Exemple ici le résultat doit être :

B4 : Caisse d'épargne
B5 : HSBC
B6 : BNP
et ça s’arrête là.


En vous remerciant par avance.
Très bonne journée à vous.
 

Fichiers joints

Rouge

XLDnaute Occasionnel
Alors copiez ceci dans le module de la feuille (réagit à chaque intervention dans la colonne "STATUT")
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim DerLig As Long, Lig As Long
    DerLig = Range("C" & Rows.Count).End(xlUp).Row
    If Not Intersect(Target, Range("D4:D" & DerLig)) Is Nothing Then
        Application.ScreenUpdating = False
        Lig = 4
        For i = 4 To DerLig
            If Cells(i, "D") = "Active" Then
                Bq = Cells(i, "C")
                If Application.WorksheetFunction.CountIf(Range("B4:B" & DerLig), Bq) = 0 Then
                    Cells(Lig, "B") = Bq
                    Lig = Lig + 1
                End If
            End If
        Next
    End If
End Sub
Cdlt
 

Yücel

XLDnaute Junior
Bonjour Rouge,

Je viens de coller ce code sur la feuil1 du visual basic mais rien ne se passe en colonne B.

Merci à vous.
 

Yücel

XLDnaute Junior
Merci Rouge,

C'est presque ça !! merci :D

Problème :
Lorsque je supprime des banques en statut "active" ça me les retire pas en instantané dans la colonne B.
 

Rouge

XLDnaute Occasionnel
Voici la petite modification
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim DerLig As Long, Lig As Long
    Dim CellActive As String
    CellActive = Target.Address
    DerLig = Range("C" & Rows.Count).End(xlUp).Row
    Application.EnableEvents = False
    Range("B4:B" & DerLig).ClearContents
    If Not Intersect(Range(CellActive), Range("D4:D" & DerLig)) Is Nothing Then
        Application.ScreenUpdating = False
        Lig = 4
        For i = 4 To DerLig
            If Cells(i, "D") = "Active" Then
                Bq = Cells(i, "C")
                If Application.WorksheetFunction.CountIf(Range("B4:B" & DerLig), Bq) = 0 Then
                    Cells(Lig, "B") = Bq
                    Lig = Lig + 1
                End If
            End If
        Next
    End If
    Application.EnableEvents = True
End Sub
Le fichier
 
Ce message a été identifié comme étant une solution!

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