OVH Cloud OVH Cloud

Listes diff maj

5 réponses
Avatar
news.wanadoo.fr
Bonsoir,
Comment puis je comparer deux listes ou deux feuilles excel pour en extraire
les enregistrements différents (en clair les mises à jour dans l'une d'elle)
Merci à tous ;-)

5 réponses

Avatar
ChrisV
Bonjour,

Sans autre précision...
En supposant que la liste 1 se situe en Feuil1!A1:A15 (plage nommée Zn1) et
la liste 2 en Feuil2!A1:A15 (plage nommée Zn2), et que tu veuilles extraire
sur un onglet différent les éléments de Zn1 non-présents en Zn2...

Sub comPar()
Dim inF As String, x As Long, c As Range
Dim reC
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
On Error Resume Next
Sheets("Comp").Delete
Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Comp"
x = 1
For Each c In Range("Zn1")
Set reC = Range("Zn2").Find(c)
If reC Is Nothing Then
Range("A" & x) = c
x = x + 1
End If
Next
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
If IsEmpty([A1]) Then _
MsgBox "Toutes les données correspondent !"
Set reC = Nothing
End Sub


ChrisV


"news.wanadoo.fr" a écrit dans le message de news:
bv6laq$gmm$
Bonsoir,
Comment puis je comparer deux listes ou deux feuilles excel pour en
extraire

les enregistrements différents (en clair les mises à jour dans l'une
d'elle)

Merci à tous ;-)




Avatar
news.wanadoo.fr
Merci je teste ;-)
"ChrisV" a écrit dans le message de
news:
Bonjour,

Sans autre précision...
En supposant que la liste 1 se situe en Feuil1!A1:A15 (plage nommée Zn1)
et

la liste 2 en Feuil2!A1:A15 (plage nommée Zn2), et que tu veuilles
extraire

sur un onglet différent les éléments de Zn1 non-présents en Zn2...

Sub comPar()
Dim inF As String, x As Long, c As Range
Dim reC
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
On Error Resume Next
Sheets("Comp").Delete
Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Comp"
x = 1
For Each c In Range("Zn1")
Set reC = Range("Zn2").Find(c)
If reC Is Nothing Then
Range("A" & x) = c
x = x + 1
End If
Next
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
If IsEmpty([A1]) Then _
MsgBox "Toutes les données correspondent !"
Set reC = Nothing
End Sub


ChrisV


"news.wanadoo.fr" a écrit dans le message de news:
bv6laq$gmm$
Bonsoir,
Comment puis je comparer deux listes ou deux feuilles excel pour en
extraire

les enregistrements différents (en clair les mises à jour dans l'une
d'elle)

Merci à tous ;-)








Avatar
news.wanadoo.fr
Bonjour,
ça marche mais je n'ai pas donné assez d'informations.
Les infos sont regroupées dans une seule colonne, alors que mes tableaux
sont formatés de A1 à H1.
je ne vois pas à quel endroit modifier la plage dans la macro.
merci

"ChrisV" a écrit dans le message de
news:
Bonjour,

Sans autre précision...
En supposant que la liste 1 se situe en Feuil1!A1:A15 (plage nommée Zn1)
et

la liste 2 en Feuil2!A1:A15 (plage nommée Zn2), et que tu veuilles
extraire

sur un onglet différent les éléments de Zn1 non-présents en Zn2...

Sub comPar()
Dim inF As String, x As Long, c As Range
Dim reC
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
On Error Resume Next
Sheets("Comp").Delete
Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Comp"
x = 1
For Each c In Range("Zn1")
Set reC = Range("Zn2").Find(c)
If reC Is Nothing Then
Range("A" & x) = c
x = x + 1
End If
Next
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
If IsEmpty([A1]) Then _
MsgBox "Toutes les données correspondent !"
Set reC = Nothing
End Sub


ChrisV


"news.wanadoo.fr" a écrit dans le message de news:
bv6laq$gmm$
Bonsoir,
Comment puis je comparer deux listes ou deux feuilles excel pour en
extraire

les enregistrements différents (en clair les mises à jour dans l'une
d'elle)

Merci à tous ;-)








Avatar
Michel Gaboly
Bonjour,

Voici une varaiante sans boucle, qui affiche dans la feuille "Comp", au même
emplacement, les valeurs de la seconde feuille, lorsqu'elles diffèrent de celles
de la première feuille.


Sub Compare()
ListeDiff Sheets("Feuil1"), Sheets("Feuil2")
End Sub

Private Sub ListeDiff(F1 As Worksheet, F2 As Worksheet)
Dim Plage As String
Plage = F1.UsedRange.Address(False, False)
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
On Error Resume Next
Sheets("Comp").Delete
On Error GoTo 0
Sheets.Add , Sheets(Sheets.Count)
ActiveSheet.Name = "Comp"
With Range(Plage)
.FormulaR1C1 = "=IF(EXACT(Feuil1!RC,Feuil2!RC),"""",Feuil2!RC)"
.Value = .Value
End With
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub



Bonjour,
ça marche mais je n'ai pas donné assez d'informations.
Les infos sont regroupées dans une seule colonne, alors que mes tableaux
sont formatés de A1 à H1.
je ne vois pas à quel endroit modifier la plage dans la macro.
merci

"ChrisV" a écrit dans le message de
news:
Bonjour,

Sans autre précision...
En supposant que la liste 1 se situe en Feuil1!A1:A15 (plage nommée Zn1)
et

la liste 2 en Feuil2!A1:A15 (plage nommée Zn2), et que tu veuilles
extraire

sur un onglet différent les éléments de Zn1 non-présents en Zn2...

Sub comPar()
Dim inF As String, x As Long, c As Range
Dim reC
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
On Error Resume Next
Sheets("Comp").Delete
Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Comp"
x = 1
For Each c In Range("Zn1")
Set reC = Range("Zn2").Find(c)
If reC Is Nothing Then
Range("A" & x) = c
x = x + 1
End If
Next
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
If IsEmpty([A1]) Then _
MsgBox "Toutes les données correspondent !"
Set reC = Nothing
End Sub


ChrisV


"news.wanadoo.fr" a écrit dans le message de news:
bv6laq$gmm$
Bonsoir,
Comment puis je comparer deux listes ou deux feuilles excel pour en
extraire

les enregistrements différents (en clair les mises à jour dans l'une
d'elle)

Merci à tous ;-)








--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
DB
Merci Michel,
Cela fonctionne mais je retombe sur la liste la plus ancienne et non pas sur
la MAJ !
Feuil1 = nouvelle liste
Feuil2 = ancienne liste
je voudrais que la feuille "comp" m'affiche les nouveaux enregistrements.
Merci pour votre patience
Didier
"Michel Gaboly" a écrit dans le message de
news:
Bonjour,

Voici une varaiante sans boucle, qui affiche dans la feuille "Comp", au
même

emplacement, les valeurs de la seconde feuille, lorsqu'elles diffèrent de
celles

de la première feuille.


Sub Compare()
ListeDiff Sheets("Feuil1"), Sheets("Feuil2")
End Sub

Private Sub ListeDiff(F1 As Worksheet, F2 As Worksheet)
Dim Plage As String
Plage = F1.UsedRange.Address(False, False)
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
On Error Resume Next
Sheets("Comp").Delete
On Error GoTo 0
Sheets.Add , Sheets(Sheets.Count)
ActiveSheet.Name = "Comp"
With Range(Plage)
.FormulaR1C1 "=IF(EXACT(Feuil1!RC,Feuil2!RC),"""",Feuil2!RC)"
.Value = .Value
End With
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub



Bonjour,
ça marche mais je n'ai pas donné assez d'informations.
Les infos sont regroupées dans une seule colonne, alors que mes tableaux
sont formatés de A1 à H1.
je ne vois pas à quel endroit modifier la plage dans la macro.
merci

"ChrisV" a écrit dans le message de
news:
Bonjour,

Sans autre précision...
En supposant que la liste 1 se situe en Feuil1!A1:A15 (plage nommée
Zn1)



et
la liste 2 en Feuil2!A1:A15 (plage nommée Zn2), et que tu veuilles
extraire

sur un onglet différent les éléments de Zn1 non-présents en Zn2...

Sub comPar()
Dim inF As String, x As Long, c As Range
Dim reC
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
On Error Resume Next
Sheets("Comp").Delete
Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Comp"
x = 1
For Each c In Range("Zn1")
Set reC = Range("Zn2").Find(c)
If reC Is Nothing Then
Range("A" & x) = c
x = x + 1
End If
Next
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
If IsEmpty([A1]) Then _
MsgBox "Toutes les données correspondent !"
Set reC = Nothing
End Sub


ChrisV


"news.wanadoo.fr" a écrit dans le message de news:
bv6laq$gmm$
Bonsoir,
Comment puis je comparer deux listes ou deux feuilles excel pour en
extraire

les enregistrements différents (en clair les mises à jour dans l'une
d'elle)

Merci à tous ;-)








--
Cordialement,

Michel Gaboly
http://www.gaboly.com