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 !
 

Pièces jointes

  • Tuto 5.xlsx
    13 KB · Affichages: 14
Solution
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...

Rouge

XLDnaute Impliqué
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.
 

Pièces jointes

  • Tuto 5.xlsx
    13.9 KB · Affichages: 3

Rouge

XLDnaute Impliqué
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
 

Rouge

XLDnaute Impliqué
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
 

Pièces jointes

  • Yücel_VBA-Extraire données tableau sur une autre colonne.xlsm
    20.3 KB · Affichages: 5

Discussions similaires

Réponses
22
Affichages
742