XL 2016 Différence entre deux tables

KTM

XLDnaute Impliqué
Bonjours chers tous
je voudrais extraire la liste des patients qui sont pas venus pour leur rendez vous
Dans ma plage 1 : Les attendus
Dans ma plage 2 : Les reçus
Dans ma plage 3 : Je voudrais les patients non reçus
Merci
 

Pièces jointes

  • Classeur1.xlsm
    13.9 KB · Affichages: 25

dysorthographie

XLDnaute Accro
Bonjour,
VB:
Option Explicit
Sub test()
Dim P1 As String, P2 As String, Sql As String
With Sheets("Feuil2")
    P1 = Replace(Range(.Range("A3"), .Cells(.Cells.Rows.Count, "C").End(xlUp)).Address, "$", "")
    P2 = Replace(Range(.Range("E3"), .Cells(.Cells.Rows.Count, "G").End(xlUp)).Address, "$", "")
End With

With CreateObject("Adodb.connection")
    .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=no;"""
  Sql = "select [F1],[F2],[F3] from"
   Sql = Sql & "( select * from [Feuil2$" & P1 & "]"
   Sql = Sql & " union all"
   Sql = Sql & " select * from [Feuil2$" & P2 & "]) "
   Sql = Sql & " Group By [F1],[F2],[F3]"
   Sql = Sql & " Having count([F1])=1"
     Sheets("Feuil2").Range("I3").CopyFromRecordset .Execute(Sql)
    .Close
 
End With

End Sub
 

job75

XLDnaute Barbatruc
Bonjour KTM, goube, dys...,

C'est un problème vraiment très classique avec cette formule matricielle en I3 :
Code:
=SIERREUR(INDEX(A:A;PETITE.VALEUR(SI(NON(NB.SI(E$3:E$1000;A$3:A$1000))*(A$3:A$1000<>"");LIGNE(A$3:A$1000));LIGNES(I$3:I3)));"")
Encore plus classique en J3.

A+
 

Pièces jointes

  • Classeur(1).xlsx
    11 KB · Affichages: 2

KTM

XLDnaute Impliqué
Bonjour,
VB:
Option Explicit
Sub test()
Dim P1 As String, P2 As String, Sql As String
With Sheets("Feuil2")
    P1 = Replace(Range(.Range("A3"), .Cells(.Cells.Rows.Count, "C").End(xlUp)).Address, "$", "")
    P2 = Replace(Range(.Range("E3"), .Cells(.Cells.Rows.Count, "G").End(xlUp)).Address, "$", "")
End With

With CreateObject("Adodb.connection")
    .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=no;"""
  Sql = "select [F1],[F2],[F3] from"
   Sql = Sql & "( select * from [Feuil2$" & P1 & "]"
   Sql = Sql & " union all"
   Sql = Sql & " select * from [Feuil2$" & P2 & "]) "
   Sql = Sql & " Group By [F1],[F2],[F3]"
   Sql = Sql & " Having count([F1])=1"
     Sheets("Feuil2").Range("I3").CopyFromRecordset .Execute(Sql)
    .Close

End With

End Sub
Merci
C'est très fort.
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 011
Membres
101 866
dernier inscrit
XFPRO