Microsoft 365 Filtre dans deux colonnes

  • Initiateur de la discussion Initiateur de la discussion iliess
  • Date de début Date de début

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 !

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

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

  • Question Question
Microsoft 365 Souci de copie
Réponses
8
Affichages
69
Réponses
18
Affichages
237
Réponses
10
Affichages
519
Retour