Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche entre 2 feuilles

14 réponses
Avatar
dyj Orange
Bonjour le groupe,
Je vous sollicite pour résoudre un problème qui me semble simple, mais je
n'y arrive pas.... A l'expérience !!!
J'ai deux feuilles au format identiques: A et B (même colonnes, mais de
longueurs différentes). Elles sont toutes les deux classées sur la même
colonne dans un ordre croissant.
Je voudrai obtenir dans une autre feuille C, les enregistrements de la
feuille A qui ne se trouve pas dans la feuille B et vice et versa.
Merci pour votre aide.

10 réponses

1 2
Avatar
Jacky
Bonjour,

Une solution manuel consiste à mettre dans la 3eme feuille une copie des deux autres l'une à la suite de
l'autre.
De mettre un entête à cette colonne et de faire une extraction dans doublon (Données / Filtrer /filtre
élaboré)
En vba cela pourrait ressembler à ceci

Il est supposé que les infos commencent en ligne 2 pour feuil1 et feuil2
'------------------------
Sub jj()
Dim derlg As Integer, derlgFeuil3 As Integer
Sheets("feuil3").Columns(1).Clear
Sheets("feuil3").[a1] = "Copie sans doublon"
derlg = Sheets("feuil1").Cells(Rows.Count, "A").End(3).Row
Sheets("feuil1").Range("A2:A" & derlg).Copy Sheets("feuil3").[a2]
derlg = Sheets("Feuil2").Cells(Rows.Count, "A").End(3).Row
derlgFeuil3 = Sheets("feuil3").Cells(Rows.Count, "A").End(3).Row + 1
Sheets("feuil2").Range("A2:A" & derlg).Copy Sheets("feuil3").Range("a" & derlgFeuil3)
With Sheets("feuil3")
.Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("B1"), Unique:=True
.Columns(1).Delete
End With
End Sub
'-------------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201010/cijPka4q2W.xls


--
Salutations
JJ


"dyj Orange" a écrit dans le message de news:
4cb97c3f$0$32423$
Bonjour le groupe,
Je vous sollicite pour résoudre un problème qui me semble simple, mais je n'y arrive pas.... A l'expérience
!!!
J'ai deux feuilles au format identiques: A et B (même colonnes, mais de longueurs différentes). Elles sont
toutes les deux classées sur la même colonne dans un ordre croissant.
Je voudrai obtenir dans une autre feuille C, les enregistrements de la feuille A qui ne se trouve pas dans
la feuille B et vice et versa.
Merci pour votre aide.
Avatar
Jacky
Re...
S'il devait y avoir plusieurs colonnes (A:D dans l'exemple) et avec la comparaison sur la colonne A
'-------------
Sub jj()
Dim derlg As Integer, derlgFeuil3 As Integer
Sheets("feuil3").Cells.Clear
Application.ScreenUpdating = False
calc = Application.Calculation
Application.Calculation = xlCalculationManual
'**
derlg = Sheets("feuil1").Cells(Rows.Count, "A").End(3).Row
Sheets("feuil1").Range("A1:d" & derlg).Copy Sheets("feuil3").[a1]
derlg = Sheets("Feuil2").Cells(Rows.Count, "A").End(3).Row
derlgFeuil3 = Sheets("feuil3").Cells(Rows.Count, "A").End(3).Row + 1
Sheets("feuil2").Range("A2:d" & derlg).Copy Sheets("feuil3").Range("a" & derlgFeuil3)
For i = Sheets("feuil3").Cells(Rows.Count, "A").End(3).Row To 2 Step -1
If Application.CountIf([a:a], Cells(i, 1)) > 1 Then Rows(i).Delete
Next
'**
Application.ScreenUpdating = True
Application.Calculation = calc
End Sub
'--------------------
--
Salutations
JJ


"Jacky" a écrit dans le message de news: i9c2oq$5hm$
Bonjour,

Une solution manuel consiste à mettre dans la 3eme feuille une copie des deux autres l'une à la suite de
l'autre.
De mettre un entête à cette colonne et de faire une extraction dans doublon (Données / Filtrer /filtre
élaboré)
En vba cela pourrait ressembler à ceci

Il est supposé que les infos commencent en ligne 2 pour feuil1 et feuil2
'------------------------
Sub jj()
Dim derlg As Integer, derlgFeuil3 As Integer
Sheets("feuil3").Columns(1).Clear
Sheets("feuil3").[a1] = "Copie sans doublon"
derlg = Sheets("feuil1").Cells(Rows.Count, "A").End(3).Row
Sheets("feuil1").Range("A2:A" & derlg).Copy Sheets("feuil3").[a2]
derlg = Sheets("Feuil2").Cells(Rows.Count, "A").End(3).Row
derlgFeuil3 = Sheets("feuil3").Cells(Rows.Count, "A").End(3).Row + 1
Sheets("feuil2").Range("A2:A" & derlg).Copy Sheets("feuil3").Range("a" & derlgFeuil3)
With Sheets("feuil3")
.Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("B1"), Unique:=True
.Columns(1).Delete
End With
End Sub
'-------------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201010/cijPka4q2W.xls


--
Salutations
JJ


"dyj Orange" a écrit dans le message de news:
4cb97c3f$0$32423$
Bonjour le groupe,
Je vous sollicite pour résoudre un problème qui me semble simple, mais je n'y arrive pas.... A l'expérience
!!!
J'ai deux feuilles au format identiques: A et B (même colonnes, mais de longueurs différentes). Elles sont
toutes les deux classées sur la même colonne dans un ordre croissant.
Je voudrai obtenir dans une autre feuille C, les enregistrements de la feuille A qui ne se trouve pas dans
la feuille B et vice et versa.
Merci pour votre aide.




Avatar
dyj Orange
Merci de ton aide.
Je pense que je me suis mal exprimé avec mon terme "vice et versa".
Effectivement ton exemple, que je vais conserver précieusement, donne bien
une liste sans doublon, mais je vais essayer d'être plus clair.
Si je pars de Feuil1 vers Feuil2, je voudrai que dans Feuil3 il n'y ait que
nom2 et nom3, car effectivement, ils sont bien dans Feuil1 mais absent de
Feuil2.
Si je pars de Feuil2 vers Feuil1, je voudrai que dans Feuil3 il n'y ait que
nom12 et nom33, car effectivement, ils sont bien dans Feuil2 mais absent de
Feuil1.
Est ce faisable à partir de ton code VBA. Merci.

"Jacky" a écrit dans le message de groupe de discussion :
i9c2oq$5hm$

Bonjour,

Une solution manuel consiste à mettre dans la 3eme feuille une copie des
deux autres l'une à la suite de
l'autre.
De mettre un entête à cette colonne et de faire une extraction dans doublon
(Données / Filtrer /filtre
élaboré)
En vba cela pourrait ressembler à ceci

Il est supposé que les infos commencent en ligne 2 pour feuil1 et feuil2
'------------------------
Sub jj()
Dim derlg As Integer, derlgFeuil3 As Integer
Sheets("feuil3").Columns(1).Clear
Sheets("feuil3").[a1] = "Copie sans doublon"
derlg = Sheets("feuil1").Cells(Rows.Count, "A").End(3).Row
Sheets("feuil1").Range("A2:A" & derlg).Copy Sheets("feuil3").[a2]
derlg = Sheets("Feuil2").Cells(Rows.Count, "A").End(3).Row
derlgFeuil3 = Sheets("feuil3").Cells(Rows.Count, "A").End(3).Row + 1
Sheets("feuil2").Range("A2:A" & derlg).Copy Sheets("feuil3").Range("a" &
derlgFeuil3)
With Sheets("feuil3")
.Columns("A:A").AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=.Range("B1"), Unique:=True
.Columns(1).Delete
End With
End Sub
'-------------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201010/cijPka4q2W.xls


--
Salutations
JJ


"dyj Orange" a écrit dans le message de news:
4cb97c3f$0$32423$
Bonjour le groupe,
Je vous sollicite pour résoudre un problème qui me semble simple, mais je
n'y arrive pas.... A l'expérience !!!
J'ai deux feuilles au format identiques: A et B (même colonnes, mais de
longueurs différentes). Elles sont toutes les deux classées sur la même
colonne dans un ordre croissant.
Je voudrai obtenir dans une autre feuille C, les enregistrements de la
feuille A qui ne se trouve pas dans la feuille B et vice et versa.
Merci pour votre aide.
Avatar
Jacky
Re..
Avec une seule colonne ?
Ou donne un exemple d'organisation des données.
--
Salutations
JJ


"dyj Orange" a écrit dans le message de news:
4cb9a86b$0$7706$
Merci de ton aide.
Je pense que je me suis mal exprimé avec mon terme "vice et versa". Effectivement ton exemple, que je vais
conserver précieusement, donne bien une liste sans doublon, mais je vais essayer d'être plus clair.
Si je pars de Feuil1 vers Feuil2, je voudrai que dans Feuil3 il n'y ait que nom2 et nom3, car effectivement,
ils sont bien dans Feuil1 mais absent de Feuil2.
Si je pars de Feuil2 vers Feuil1, je voudrai que dans Feuil3 il n'y ait que nom12 et nom33, car
effectivement, ils sont bien dans Feuil2 mais absent de Feuil1.
Est ce faisable à partir de ton code VBA. Merci.

"Jacky" a écrit dans le message de groupe de discussion : i9c2oq$5hm$

Bonjour,

Une solution manuel consiste à mettre dans la 3eme feuille une copie des deux autres l'une à la suite de
l'autre.
De mettre un entête à cette colonne et de faire une extraction dans doublon (Données / Filtrer /filtre
élaboré)
En vba cela pourrait ressembler à ceci

Il est supposé que les infos commencent en ligne 2 pour feuil1 et feuil2
'------------------------
Sub jj()
Dim derlg As Integer, derlgFeuil3 As Integer
Sheets("feuil3").Columns(1).Clear
Sheets("feuil3").[a1] = "Copie sans doublon"
derlg = Sheets("feuil1").Cells(Rows.Count, "A").End(3).Row
Sheets("feuil1").Range("A2:A" & derlg).Copy Sheets("feuil3").[a2]
derlg = Sheets("Feuil2").Cells(Rows.Count, "A").End(3).Row
derlgFeuil3 = Sheets("feuil3").Cells(Rows.Count, "A").End(3).Row + 1
Sheets("feuil2").Range("A2:A" & derlg).Copy Sheets("feuil3").Range("a" & derlgFeuil3)
With Sheets("feuil3")
.Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("B1"), Unique:=True
.Columns(1).Delete
End With
End Sub
'-------------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201010/cijPka4q2W.xls


--
Salutations
JJ


"dyj Orange" a écrit dans le message de news:
4cb97c3f$0$32423$
Bonjour le groupe,
Je vous sollicite pour résoudre un problème qui me semble simple, mais je n'y arrive pas.... A l'expérience
!!!
J'ai deux feuilles au format identiques: A et B (même colonnes, mais de longueurs différentes). Elles sont
toutes les deux classées sur la même colonne dans un ordre croissant.
Je voudrai obtenir dans une autre feuille C, les enregistrements de la feuille A qui ne se trouve pas dans
la feuille B et vice et versa.
Merci pour votre aide.



Avatar
dyj Orange
Quelque soit les feuilles "Feuil1" ou Feuil2" : Format identique comme suit:
Nombre de colonnes 12, de "A" à "L"
Nombre de lignes variable
En ligne 1: identification des colonnes, "K" pour N°contrat et "D" pour N°
Série
Pour chaque ligne de la Feuil1, je regarde si le couple "Kx"+"Dx" est
présent dans Feuil2. Si absent, enregistrement dans la Feuil3.

J'espère me faire comprendre. Si infos nécessaire, je reste sur le terminal.
Merci de t'intéresser à mon développement


"Jacky" a écrit dans le message de groupe de discussion :
i9ca8e$2p1$

Re..
Avec une seule colonne ?
Ou donne un exemple d'organisation des données.
--
Salutations
JJ


"dyj Orange" a écrit dans le message de news:
4cb9a86b$0$7706$
Merci de ton aide.
Je pense que je me suis mal exprimé avec mon terme "vice et versa".
Effectivement ton exemple, que je vais conserver précieusement, donne bien
une liste sans doublon, mais je vais essayer d'être plus clair.
Si je pars de Feuil1 vers Feuil2, je voudrai que dans Feuil3 il n'y ait
que nom2 et nom3, car effectivement, ils sont bien dans Feuil1 mais absent
de Feuil2.
Si je pars de Feuil2 vers Feuil1, je voudrai que dans Feuil3 il n'y ait
que nom12 et nom33, car effectivement, ils sont bien dans Feuil2 mais
absent de Feuil1.
Est ce faisable à partir de ton code VBA. Merci.

"Jacky" a écrit dans le message de groupe de discussion :
i9c2oq$5hm$

Bonjour,

Une solution manuel consiste à mettre dans la 3eme feuille une copie des
deux autres l'une à la suite de
l'autre.
De mettre un entête à cette colonne et de faire une extraction dans
doublon (Données / Filtrer /filtre
élaboré)
En vba cela pourrait ressembler à ceci

Il est supposé que les infos commencent en ligne 2 pour feuil1 et feuil2
'------------------------
Sub jj()
Dim derlg As Integer, derlgFeuil3 As Integer
Sheets("feuil3").Columns(1).Clear
Sheets("feuil3").[a1] = "Copie sans doublon"
derlg = Sheets("feuil1").Cells(Rows.Count, "A").End(3).Row
Sheets("feuil1").Range("A2:A" & derlg).Copy Sheets("feuil3").[a2]
derlg = Sheets("Feuil2").Cells(Rows.Count, "A").End(3).Row
derlgFeuil3 = Sheets("feuil3").Cells(Rows.Count, "A").End(3).Row + 1
Sheets("feuil2").Range("A2:A" & derlg).Copy Sheets("feuil3").Range("a"
& derlgFeuil3)
With Sheets("feuil3")
.Columns("A:A").AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=.Range("B1"), Unique:=True
.Columns(1).Delete
End With
End Sub
'-------------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201010/cijPka4q2W.xls


--
Salutations
JJ


"dyj Orange" a écrit dans le message de news:
4cb97c3f$0$32423$
Bonjour le groupe,
Je vous sollicite pour résoudre un problème qui me semble simple, mais je
n'y arrive pas.... A l'expérience !!!
J'ai deux feuilles au format identiques: A et B (même colonnes, mais de
longueurs différentes). Elles sont toutes les deux classées sur la même
colonne dans un ordre croissant.
Je voudrai obtenir dans une autre feuille C, les enregistrements de la
feuille A qui ne se trouve pas dans la feuille B et vice et versa.
Merci pour votre aide.



Avatar
Jacky
Re..
Regarde si ceci convient
'------------------
Sub NonPresenEnF2()
Dim derlgF1 As Integer, derlgF2 As Integer
Sheets("feuil3").Columns("a:l").Clear
Application.ScreenUpdating = False
calc = Application.Calculation
'**
Sheets("feuil1").Rows(1).Copy Sheets("feuil3").[a1]
derlgF1 = Sheets("feuil1").Cells(Rows.Count, "d").End(3).Row
derlgF2 = Sheets("feuil2").Cells(Rows.Count, "d").End(3).Row
Set plage1 = Sheets("feuil2").Range("d2:d" & derlgF2)
Set plage2 = Sheets("feuil2").Range("k2:k" & derlgF2)
With Sheets("feuil1")
For i = 2 To .Cells(.Rows.Count, "d").End(3).Row
If IsError(Application.Match(.Cells(i, 4), plage1, 0)) Or IsError(Application.Match(.Cells(i, 11),
plage2, 0)) Then
.Rows(i).Copy Range("a" & Sheets("feuil3").Cells(Rows.Count, "A").End(3).Row + 1)
End If
Next
End With
'**
Application.ScreenUpdating = True
Application.Calculation = calc
End Sub
'-------------------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201010/cijeJMZpdY.xls

--
Salutations
JJ
Avatar
dyj Orange
Après essai de ton classeur, ma réponse est OUI, tu réponds parfaitement à
ce que je veux faire et je t'en remercie. Je vais m'occuper un peu de la
famille ... et reprendre à tête reposée ton code pour l'insérer dans mon
développement.
Une fois encore un grand merci de ton aide.

"Jacky" a écrit dans le message de groupe de discussion :
i9cg41$sec$

Re..
Regarde si ceci convient
'------------------
Sub NonPresenEnF2()
Dim derlgF1 As Integer, derlgF2 As Integer
Sheets("feuil3").Columns("a:l").Clear
Application.ScreenUpdating = False
calc = Application.Calculation
'**
Sheets("feuil1").Rows(1).Copy Sheets("feuil3").[a1]
derlgF1 = Sheets("feuil1").Cells(Rows.Count, "d").End(3).Row
derlgF2 = Sheets("feuil2").Cells(Rows.Count, "d").End(3).Row
Set plage1 = Sheets("feuil2").Range("d2:d" & derlgF2)
Set plage2 = Sheets("feuil2").Range("k2:k" & derlgF2)
With Sheets("feuil1")
For i = 2 To .Cells(.Rows.Count, "d").End(3).Row
If IsError(Application.Match(.Cells(i, 4), plage1, 0)) Or
IsError(Application.Match(.Cells(i, 11),
plage2, 0)) Then
.Rows(i).Copy Range("a" & Sheets("feuil3").Cells(Rows.Count,
"A").End(3).Row + 1)
End If
Next
End With
'**
Application.ScreenUpdating = True
Application.Calculation = calc
End Sub
'-------------------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201010/cijeJMZpdY.xls

--
Salutations
JJ
Avatar
Jacky
Re...
Une mauvaise manip. de copier/coller à fait disparaitre la ligne
Application.Calculation = xlCalculationManual
A placer après la ligne
calc = Application.Calculation
Dans les deux procédures.
La vitesse d'exécution n'en sera que meilleur.



--
Salutations
JJ


"dyj Orange" a écrit dans le message de news:
4cb9c944$0$7697$
Après essai de ton classeur, ma réponse est OUI, tu réponds parfaitement à ce que je veux faire et je t'en
remercie. Je vais m'occuper un peu de la famille ... et reprendre à tête reposée ton code pour l'insérer
dans mon développement.
Une fois encore un grand merci de ton aide.

"Jacky" a écrit dans le message de groupe de discussion : i9cg41$sec$

Re..
Regarde si ceci convient
'------------------
Sub NonPresenEnF2()
Dim derlgF1 As Integer, derlgF2 As Integer
Sheets("feuil3").Columns("a:l").Clear
Application.ScreenUpdating = False
calc = Application.Calculation
'**
Sheets("feuil1").Rows(1).Copy Sheets("feuil3").[a1]
derlgF1 = Sheets("feuil1").Cells(Rows.Count, "d").End(3).Row
derlgF2 = Sheets("feuil2").Cells(Rows.Count, "d").End(3).Row
Set plage1 = Sheets("feuil2").Range("d2:d" & derlgF2)
Set plage2 = Sheets("feuil2").Range("k2:k" & derlgF2)
With Sheets("feuil1")
For i = 2 To .Cells(.Rows.Count, "d").End(3).Row
If IsError(Application.Match(.Cells(i, 4), plage1, 0)) Or IsError(Application.Match(.Cells(i, 11),
plage2, 0)) Then
.Rows(i).Copy Range("a" & Sheets("feuil3").Cells(Rows.Count, "A").End(3).Row + 1)
End If
Next
End With
'**
Application.ScreenUpdating = True
Application.Calculation = calc
End Sub
'-------------------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201010/cijeJMZpdY.xls

--
Salutations
JJ


Avatar
dyj Orange
Bonjour Jacky,
J'ai repris le fil de mon dvlpt. J'aimerai faire appel à tes connaissances
pour m'expliquer, si tu as le temps, un certain nombre d'instructions que je
ne possède pas. J'ai repris ton code et j'ai mis mes propres commentaires
pour essayer de comprendre la logique. Pour celles que je ne sais pas, ??,
Si tu pouvez me compléter les commentaires, je me sentirai un peu moins
automate, j'aime bien comprendre.
Merci encore. Ci dessous le code commenté par mes soins !!!
---------------------------------------------------------------------------------------------------------------------------------------------------
Sub NonPresenEnF2()
Dim derlgF1 As Integer, derlgF2 As Integer

Sheets("feuil3").Columns("a:l").Clear ' Clear F3

Application.ScreenUpdating = False ' ??
calc = Application.Calculation ' ??
Application.Calculation = xlCalculationManual ' ??

'**
Sheets("feuil1").Rows(1).Copy Sheets("feuil3").[a1] '
Copie Row 1 de feuil1 dans feuil3
derlgF1 = Sheets("feuil1").Cells(Rows.Count, "d").End(3).Row '
determine la dernirère ligne de feuil1
derlgF2 = Sheets("feuil2").Cells(Rows.Count, "d").End(3).Row '
determine la dernirère ligne de feuil2
Set plage1 = Sheets("feuil2").Range("d2:d" & derlgF2) '
determine une plage de 2 à la dernière ligne F1
Set plage2 = Sheets("feuil2").Range("k2:k" & derlgF2) '
determine une plage de 2 à la dernière ligne F2
With Sheets("feuil1")
' Travail avec la feuil1
For i = 2 To .Cells(.Rows.Count, "d").End(3).Row
' 2 à dernière ligne de F1 (derlgF1)

' ?? je ne comprends pas ces fonctions:
' Application.Match(.Cells(i, 4), plage1, 0)
' Application.Match(.Cells(i, 11), plage2, 0)

If IsError(Application.Match(.Cells(i, 4), plage1, 0)) Or _
IsError(Application.Match(.Cells(i, 11), plage2, 0)) Then

' La Range de F1 n'est pas trouvé dans F2, alors copy dans F3

.Rows(i).Copy Range("a" & Sheets("feuil3").Cells(Rows.Count,
"A").End(3).Row + 1)
End If
Next
End With
'**
Application.ScreenUpdating = True
Application.Calculation = calc
End Sub
---------------------------------------------------------------------------------------------------------------------------------------------------------

"dyj Orange" a écrit dans le message de groupe de discussion :
4cb9c944$0$7697$

Après essai de ton classeur, ma réponse est OUI, tu réponds parfaitement à
ce que je veux faire et je t'en remercie. Je vais m'occuper un peu de la
famille ... et reprendre à tête reposée ton code pour l'insérer dans mon
développement.
Une fois encore un grand merci de ton aide.

"Jacky" a écrit dans le message de groupe de discussion :
i9cg41$sec$

Re..
Regarde si ceci convient
'------------------
Sub NonPresenEnF2()
Dim derlgF1 As Integer, derlgF2 As Integer
Sheets("feuil3").Columns("a:l").Clear
Application.ScreenUpdating = False
calc = Application.Calculation
'**
Sheets("feuil1").Rows(1).Copy Sheets("feuil3").[a1]
derlgF1 = Sheets("feuil1").Cells(Rows.Count, "d").End(3).Row
derlgF2 = Sheets("feuil2").Cells(Rows.Count, "d").End(3).Row
Set plage1 = Sheets("feuil2").Range("d2:d" & derlgF2)
Set plage2 = Sheets("feuil2").Range("k2:k" & derlgF2)
With Sheets("feuil1")
For i = 2 To .Cells(.Rows.Count, "d").End(3).Row
If IsError(Application.Match(.Cells(i, 4), plage1, 0)) Or
IsError(Application.Match(.Cells(i, 11),
plage2, 0)) Then
.Rows(i).Copy Range("a" & Sheets("feuil3").Cells(Rows.Count,
"A").End(3).Row + 1)
End If
Next
End With
'**
Application.ScreenUpdating = True
Application.Calculation = calc
End Sub
'-------------------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201010/cijeJMZpdY.xls

--
Salutations
JJ
Avatar
Jacky
Re..
Ok
Es-ce plus clair ??
'---------------------------
Sub NonPresenEnF2()
Dim derlgF1 As Integer, derlgF2 As Integer

Sheets("feuil3").Columns("a:l").Clear ' Clear F3
'**L'objectif des 3 lignes ci-dessous est uniquement pour accelerer l'execution du code
Application.ScreenUpdating = False ' ??**Empeche le reffraichissement de l'ecran ( eventuel clignotement)
calc = Application.Calculation ' ??**Place dans la variable "Calc" l'état actuel de calculation(auto,
manuel..) pour la restituer en fin de procédure
Application.Calculation = xlCalculationManual ' ??**Met le calcul automatique sur manuel

'**
Sheets("feuil1").Rows(1).Copy Sheets("feuil3").[a1] '
Copie Row 1 de feuil1 dans feuil3
derlgF1 = Sheets("feuil1").Cells(Rows.Count, "d").End(3).Row '
determine la dernirère ligne de feuil1
derlgF2 = Sheets("feuil2").Cells(Rows.Count, "d").End(3).Row '
determine la dernirère ligne de feuil2
Set plage1 = Sheets("feuil2").Range("d2:d" & derlgF2) '
' ***determine une plage de 2 à la dernière ligne***** de la colonne D de la Feuil2
Set plage2 = Sheets("feuil2").Range("k2:k" & derlgF2) '
' ***determine une plage de 2 à la dernière ligne ***** de la colonne K de la Feuil2

With Sheets("feuil1")
' Travail avec la feuil1
For i = 2 To .Cells(.Rows.Count, "d").End(3).Row
' 2 à dernière ligne de F1 (derlgF1)

' ?? je ne comprends pas ces fonctions:
' Application.Match(.Cells(i, 4), plage1, 0)
' **Equivalent de la fonction " Equiv() " d'une feuille de calcul, ici contrôle si cell(i,4) est oui ou non
présent dans la plage définie par set plage1.
'**en plus simple. Regarde dans la colonne D de la feuil2 si la cellule définie par la boucle (for i=..) est
présent ou non
' Application.Match(.Cells(i, 11), plage2, 0)
' **idem que ci-dessus mais pour la colonne K

If IsError(Application.Match(.Cells(i, 4), plage1, 0)) Or _
IsError(Application.Match(.Cells(i, 11), plage2, 0)) Then
' ***ici," isError " contrôle si la cellule de la boucle (.Cells(i, 4),retourne une erreur, donc n'a pas
trouve dans la plage1 (colonne D de la feuile2)
' ***ET contrôle si la cellule de la boucle (.Cells(i, 11),retourne une erreur, donc n'a pas trouve dans la
plage1 (colonne K de la feuile2)
' ***L'objectif étant que si Cells(i, 4) de la feuil1 n"est pas présent dans la colonne D de la feuil2 OU
Cells(i, 11) de la feuil1 n'est pas présent dans la colonne K de la feuil2 ,de l'inscrire dans la feuil3

' La Range de F1 n'est pas trouvé dans F2, alors copy dans F3

.Rows(i).Copy Range("a" & Sheets("feuil3").Cells(Rows.Count,
"A").End(3).Row + 1)
End If
Next
End With
'**
Application.ScreenUpdating = True
Application.Calculation = calc
' ***remet le mode de calcul en l'état d'avant exécution du code
End Sub
---------------------------------------------------------------------------------------------------------------------------------------------------------
1 2