Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Filtre dans deux colonnes

iliess

XLDnaute Occasionnel
Bonjour
Voici mon tableau qui se compose de deux parties, une pour la société et l'autre pour la banque.
J'ai recherché dans la colonne B les valeurs qui se trouvent dans la société et la banque et dans la colonne C les valeurs dans la banque qui se trouvent dans la société.
Maintenant, quelle est la fonction en Excel ou VBA dans la colonne A qui me permet de filtrer les mêmes valeurs dans les deux sociétés et banques en même temps.
Salutations.
 

Pièces jointes

  • filtre dans deux colonnes.xlsx
    17.4 KB · Affichages: 7

iliess

XLDnaute Occasionnel
J'ai trouvé une solution en VBA (en cours d'amélioration).
VB:
Option Explicit
Sub test_identiue()
Dim i As Long, j As Long
Dim LastRowD As Long, LastRowG As Long
Dim Arr() As Variant, Brr() As Variant
Dim plageA As Range, plageB As Range
Dim cellA As Range, cellB As Range
LastRowD = Range("D" & Rows.Count).End(xlUp).Row
LastRowG = Range("G" & Rows.Count).End(xlUp).Row
Set plageA = Sheets("Feuil1").Range("A4:D" & LastRowD)
Set plageB = Sheets("Feuil1").Range("B4:G" & LastRowD)
'==============================================================================
ReDim Arr(1 To plageA.Rows.Count, 1 To 2)
i = 1
    For Each cellA In plageA.Rows
        If cellA.Cells(1, 1).Value = "Non trouvé" Then
            Arr(i, 1) = cellA.Cells(1, 3).Value ' Colonne C
            Arr(i, 2) = cellA.Cells(1, 4).Value ' Colonne D
        Else
        GoTo PlusA
        End If
        i = i + 1
PlusA:
    Next cellA
[K1].Resize(UBound(Arr, 1), UBound(Arr, 2)) = Arr
'================================================================================
ReDim Brr(1 To plageB.Rows.Count, 1 To 2)
j = 1
    For Each cellB In plageB.Rows
        If cellB.Cells(1, 1).Value = "Non trouvé" Then
            Brr(j, 1) = cellB.Cells(1, 6).Value ' Colonne F
            Brr(j, 2) = cellB.Cells(1, 7).Value ' Colonne G
        Else
        GoTo PlusB
        End If
        j = j + 1
PlusB:
    Next cellB
[M1].Resize(UBound(Brr, 1), UBound(Brr, 2)) = Brr

End Sub

Si quelqu’un souhaite apporter des modifications ou ajouter davantage pour optimiser le code et le rendre plus rapide, je lui en serais très reconnaissant.
 

alexga78

XLDnaute Occasionnel
Bonjour à tous,

Et pourquoi ne pas utiliser Power Query ? Certes un autre tableau mais bien plus simple.

PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    ColName = List.Split(List.Skip(Table.ColumnNames(Source),3),3),
    Banque = Table.AddIndexColumn(Table.SelectRows(Table.SelectColumns(Source,ColName{1}), each Record.Field(_, ColName{1}{2}) <> null), "Sort",0,1),
    Societé = Table.AddIndexColumn(Table.SelectRows(Table.SelectColumns(Source,ColName{0}), each List.Contains(Table.Column(Banque, ColName{1}{2}), Record.Field(_,ColName{0}{2}))), "Sort",Table.RowCount(Banque),1),
    #"Added Résultat" = Table.SelectColumns(Table.Sort(Banque & Societé,{"Sort", Order.Ascending}), List.Union(ColName))
in
    #"Added Résultat"

Bonne journée
 

Discussions similaires

Réponses
16
Affichages
728
Réponses
2
Affichages
420
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…