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
---------------------------------------------------------------------------------------------------------------------------------------------------------
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
---------------------------------------------------------------------------------------------------------------------------------------------------------
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
---------------------------------------------------------------------------------------------------------------------------------------------------------
C'est parfait, je travaille dessus et je commence à comprendre !!! Merci Jacky.
C'est parfait, je travaille dessus et je commence à comprendre !!! Merci Jacky.
C'est parfait, je travaille dessus et je commence à comprendre !!! Merci Jacky.