J'ai une macro susceptible de comparer 2 colonnes qui fonctionne sauf=20
lorsque les cl=E9s dans Feuil2 n'existent pas dans Feuil3 ; J'ai une=20
erreur code 1004 qui bloque la macro.
Comment serait-il possible de ne pas tenir compte de ces lignes.
Dans ce classeur, je r=E9cup=E8re (copier/coller) des donn=E9es d'une bas=
e =E0=20
sur la Feuil1.
Avec la macro :
Je cr=E9e des cl=E9s uniques qui me serviront =E0 comparer ces 2 feuilles=
=2E
Je copie les donn=E9es de Feil1 dans Feuil3 (pour garder l'original des=20
donn=E9es).
Je compare les cl=E9s existantes de Feuil2 par rapport aux cl=E9s de Feui=
l3=20
et lorsqu'elles existent, je supprime la ligne dans Feuil3 (je ne=20
conserve ainsi que les 'nouvelles' lignes - qui sont en fait des=20
inscriptions).
Pour expliquer qu'en Feuil2 on peut avoir des lignes qui ne sont pas=20
dans Feuil 3 (Feuil 1 en fait), c'est simplement des inscriptions qui=20
ont =E9t=E9 annul=E9es sur la base depuis la derni=E8re visite.
Merci d'avance de toute aide sur la question.
Daniel
Voici mon code
Sub Feuil1_Vs_Feuil2()
'
'D=E9finition des variables
Dim i As Long
Dim j As Long
Dim k As Long
Dim derlin As Long
Dim derling As Long
' Cr=E9ation des Cl=E9s de contr=F4le qui serviront =E0 comparer
'Call Creation_Cle_controle (NDRL cette macro fonctionne parfaitement=20
pour concat=E9ner le contenu de 2 lignes et ainsi cr=E9er une cl=E9 uniqu=
e en=20
colonne BJ)
' Copie de la liste issue de la base de donn=E9e et coll=E9e en "Feuil1" =
ainsi que les cl=E9s de contr=F4le vers la feuille "Feuil3" pour conserve=
r=20
le contenu sur "Feuil1"
i =3D WorksheetFunction.Match(Worksheets("Feuil2").Cells(j,=20
62).Value, Worksheets("Feuil3").Columns(63), 0) 'Comparaison de la=20
valeur des cl=E9s des feuilles "Feuil2" avec "Feuil3"
If Err Then i =3D 0
If i <> 0 Then
Worksheets("Feuil3").Rows(i).EntireRow.Delete Shift:=3DxlUp=20
'Supprime la ligne qui existe dans Feuil2
End If
j =3D j + 1 'On passe au traitement de la ligne suivante dans la=20
feuille "Feuil2"
Wend
' Mettre le statut 'Nouvelle inscription' dans la 1=E8re colonne
k =3D 2
While Not IsEmpty(Cells(k, 2))
If Cells(k, 2) <> "" Then Cells(k, 1) =3D "Nouvelle inscription"
k =3D k + 1
Wend
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
h2so4
bonjour,
j'ai fait des corrections dans ton code, pour ajouter le traitement d'erreur. Mais je n'ai pas testé.
danielos submitted this idea :
Bonjour,
J'ai une macro susceptible de comparer 2 colonnes qui fonctionne sauf lorsque les clés dans Feuil2 n'existent pas dans Feuil3 ; J'ai une erreur code 1004 qui bloque la macro. Comment serait-il possible de ne pas tenir compte de ces lignes.
Dans ce classeur, je récupère (copier/coller) des données d'une base à sur la Feuil1. Avec la macro : Je crée des clés uniques qui me serviront à comparer ces 2 feuilles. Je copie les données de Feil1 dans Feuil3 (pour garder l'original des données). Je compare les clés existantes de Feuil2 par rapport aux clés de Feuil3 et lorsqu'elles existent, je supprime la ligne dans Feuil3 (je ne conserve ainsi que les 'nouvelles' lignes - qui sont en fait des inscriptions).
Pour expliquer qu'en Feuil2 on peut avoir des lignes qui ne sont pas dans Feuil 3 (Feuil 1 en fait), c'est simplement des inscriptions qui ont été annulées sur la base depuis la dernière visite.
Merci d'avance de toute aide sur la question. Daniel
Voici mon code
Sub Feuil1_Vs_Feuil2() ' 'Définition des variables Dim i As Long Dim j As Long Dim k As Long Dim derlin As Long Dim derling As Long
' Création des Clés de contrôle qui serviront à comparer
'Call Creation_Cle_controle (NDRL cette macro fonctionne parfaitement pour concaténer le contenu de 2 lignes et ainsi créer une clé unique en colonne BJ)
' Copie de la liste issue de la base de donnée et collée en "Feuil1" ainsi que les clés de contrôle vers la feuille "Feuil3" pour conserver le contenu sur "Feuil1"
j = 2 While Worksheets("Feuil2").Cells(j, 62) <> "" 'la colonne BJ est la 62ème.
on error goto pastrouvé
i = WorksheetFunction.Match(Worksheets("Feuil2").Cells(j, 62).Value, Worksheets("Feuil3").Columns(63), 0) 'Comparaison de la valeur des clés des feuilles "Feuil2" avec "Feuil3"
on error goto 0
If i <> 0 Then Worksheets("Feuil3").Rows(i).EntireRow.Delete Shift:=xlUp 'Supprime la ligne qui existe dans Feuil2
End If j = j + 1 'On passe au traitement de la ligne suivante dans la feuille "Feuil2" Wend
' Mettre le statut 'Nouvelle inscription' dans la 1ère colonne
k = 2 While Not IsEmpty(Cells(k, 2)) If Cells(k, 2) <> "" Then Cells(k, 1) = "Nouvelle inscription" k = k + 1 Wend
exit sub pasatrouvé: i=0 resume next
End Sub
bonjour,
j'ai fait des corrections dans ton code, pour ajouter le traitement
d'erreur. Mais je n'ai pas testé.
danielos submitted this idea :
Bonjour,
J'ai une macro susceptible de comparer 2 colonnes qui fonctionne sauf lorsque
les clés dans Feuil2 n'existent pas dans Feuil3 ; J'ai une erreur code 1004
qui bloque la macro.
Comment serait-il possible de ne pas tenir compte de ces lignes.
Dans ce classeur, je récupère (copier/coller) des données d'une base à sur la
Feuil1.
Avec la macro :
Je crée des clés uniques qui me serviront à comparer ces 2 feuilles.
Je copie les données de Feil1 dans Feuil3 (pour garder l'original des
données).
Je compare les clés existantes de Feuil2 par rapport aux clés de Feuil3 et
lorsqu'elles existent, je supprime la ligne dans Feuil3 (je ne conserve ainsi
que les 'nouvelles' lignes - qui sont en fait des inscriptions).
Pour expliquer qu'en Feuil2 on peut avoir des lignes qui ne sont pas dans
Feuil 3 (Feuil 1 en fait), c'est simplement des inscriptions qui ont été
annulées sur la base depuis la dernière visite.
Merci d'avance de toute aide sur la question.
Daniel
Voici mon code
Sub Feuil1_Vs_Feuil2()
'
'Définition des variables
Dim i As Long
Dim j As Long
Dim k As Long
Dim derlin As Long
Dim derling As Long
' Création des Clés de contrôle qui serviront à comparer
'Call Creation_Cle_controle (NDRL cette macro fonctionne parfaitement pour
concaténer le contenu de 2 lignes et ainsi créer une clé unique en colonne
BJ)
' Copie de la liste issue de la base de donnée et collée en "Feuil1" ainsi
que les clés de contrôle vers la feuille "Feuil3" pour conserver le contenu
sur "Feuil1"
j = 2
While Worksheets("Feuil2").Cells(j, 62) <> "" 'la colonne BJ est
la 62ème.
on error goto pastrouvé
i = WorksheetFunction.Match(Worksheets("Feuil2").Cells(j, 62).Value,
Worksheets("Feuil3").Columns(63), 0) 'Comparaison de la valeur des clés des
feuilles "Feuil2" avec "Feuil3"
on error goto 0
If i <> 0 Then
Worksheets("Feuil3").Rows(i).EntireRow.Delete Shift:=xlUp 'Supprime la
ligne qui existe dans Feuil2
End If
j = j + 1 'On passe au traitement de la ligne suivante dans la feuille
"Feuil2"
Wend
' Mettre le statut 'Nouvelle inscription' dans la 1ère colonne
k = 2
While Not IsEmpty(Cells(k, 2))
If Cells(k, 2) <> "" Then Cells(k, 1) = "Nouvelle inscription"
k = k + 1
Wend
j'ai fait des corrections dans ton code, pour ajouter le traitement d'erreur. Mais je n'ai pas testé.
danielos submitted this idea :
Bonjour,
J'ai une macro susceptible de comparer 2 colonnes qui fonctionne sauf lorsque les clés dans Feuil2 n'existent pas dans Feuil3 ; J'ai une erreur code 1004 qui bloque la macro. Comment serait-il possible de ne pas tenir compte de ces lignes.
Dans ce classeur, je récupère (copier/coller) des données d'une base à sur la Feuil1. Avec la macro : Je crée des clés uniques qui me serviront à comparer ces 2 feuilles. Je copie les données de Feil1 dans Feuil3 (pour garder l'original des données). Je compare les clés existantes de Feuil2 par rapport aux clés de Feuil3 et lorsqu'elles existent, je supprime la ligne dans Feuil3 (je ne conserve ainsi que les 'nouvelles' lignes - qui sont en fait des inscriptions).
Pour expliquer qu'en Feuil2 on peut avoir des lignes qui ne sont pas dans Feuil 3 (Feuil 1 en fait), c'est simplement des inscriptions qui ont été annulées sur la base depuis la dernière visite.
Merci d'avance de toute aide sur la question. Daniel
Voici mon code
Sub Feuil1_Vs_Feuil2() ' 'Définition des variables Dim i As Long Dim j As Long Dim k As Long Dim derlin As Long Dim derling As Long
' Création des Clés de contrôle qui serviront à comparer
'Call Creation_Cle_controle (NDRL cette macro fonctionne parfaitement pour concaténer le contenu de 2 lignes et ainsi créer une clé unique en colonne BJ)
' Copie de la liste issue de la base de donnée et collée en "Feuil1" ainsi que les clés de contrôle vers la feuille "Feuil3" pour conserver le contenu sur "Feuil1"
j = 2 While Worksheets("Feuil2").Cells(j, 62) <> "" 'la colonne BJ est la 62ème.
on error goto pastrouvé
i = WorksheetFunction.Match(Worksheets("Feuil2").Cells(j, 62).Value, Worksheets("Feuil3").Columns(63), 0) 'Comparaison de la valeur des clés des feuilles "Feuil2" avec "Feuil3"
on error goto 0
If i <> 0 Then Worksheets("Feuil3").Rows(i).EntireRow.Delete Shift:=xlUp 'Supprime la ligne qui existe dans Feuil2
End If j = j + 1 'On passe au traitement de la ligne suivante dans la feuille "Feuil2" Wend
' Mettre le statut 'Nouvelle inscription' dans la 1ère colonne
k = 2 While Not IsEmpty(Cells(k, 2)) If Cells(k, 2) <> "" Then Cells(k, 1) = "Nouvelle inscription" k = k + 1 Wend
exit sub pasatrouvé: i=0 resume next
End Sub
h2so4
h2so4 presented the following explanation : erreur de frappe corrigée.
j = 2 While Worksheets("Feuil2").Cells(j, 62) <> "" 'la colonne BJ est la 62ème.
on error goto pastrouvé
i = WorksheetFunction.Match(Worksheets("Feuil2").Cells(j, 62).Value, Worksheets("Feuil3").Columns(63), 0) 'Comparaison de la valeur des clés des feuilles "Feuil2" avec "Feuil3"
on error goto 0
If i <> 0 Then Worksheets("Feuil3").Rows(i).EntireRow.Delete Shift:=xlUp 'Supprime la ligne qui existe dans Feuil2
End If j = j + 1 'On passe au traitement de la ligne suivante dans la feuille "Feuil2" Wend
' Mettre le statut 'Nouvelle inscription' dans la 1ère colonne
k = 2 While Not IsEmpty(Cells(k, 2)) If Cells(k, 2) <> "" Then Cells(k, 1) = "Nouvelle inscription" k = k + 1 Wend
exit sub pastrouvé: i=0 resume next
End Sub
h2so4 presented the following explanation :
erreur de frappe corrigée.
j = 2
While Worksheets("Feuil2").Cells(j, 62) <> "" 'la colonne BJ
est la 62ème.
on error goto pastrouvé
i = WorksheetFunction.Match(Worksheets("Feuil2").Cells(j, 62).Value,
Worksheets("Feuil3").Columns(63), 0) 'Comparaison de la valeur des clés des
feuilles "Feuil2" avec "Feuil3"
on error goto 0
If i <> 0 Then
Worksheets("Feuil3").Rows(i).EntireRow.Delete Shift:=xlUp 'Supprime
la ligne qui existe dans Feuil2
End If
j = j + 1 'On passe au traitement de la ligne suivante dans la
feuille "Feuil2"
Wend
' Mettre le statut 'Nouvelle inscription' dans la 1ère colonne
k = 2
While Not IsEmpty(Cells(k, 2))
If Cells(k, 2) <> "" Then Cells(k, 1) = "Nouvelle inscription"
k = k + 1
Wend
h2so4 presented the following explanation : erreur de frappe corrigée.
j = 2 While Worksheets("Feuil2").Cells(j, 62) <> "" 'la colonne BJ est la 62ème.
on error goto pastrouvé
i = WorksheetFunction.Match(Worksheets("Feuil2").Cells(j, 62).Value, Worksheets("Feuil3").Columns(63), 0) 'Comparaison de la valeur des clés des feuilles "Feuil2" avec "Feuil3"
on error goto 0
If i <> 0 Then Worksheets("Feuil3").Rows(i).EntireRow.Delete Shift:=xlUp 'Supprime la ligne qui existe dans Feuil2
End If j = j + 1 'On passe au traitement de la ligne suivante dans la feuille "Feuil2" Wend
' Mettre le statut 'Nouvelle inscription' dans la 1ère colonne
k = 2 While Not IsEmpty(Cells(k, 2)) If Cells(k, 2) <> "" Then Cells(k, 1) = "Nouvelle inscription" k = k + 1 Wend
exit sub pastrouvé: i=0 resume next
End Sub
danielos
ça fonctionne, Merci beaucoup de l'aide. Daniel
h2so4 a écrit :
h2so4 presented the following explanation : erreur de frappe corrigée.
j = 2 While Worksheets("Feuil2").Cells(j, 62) <> "" 'la colonne BJ est la 62ème.
on error goto pastrouvé
i = WorksheetFunction.Match(Worksheets("Feuil2").Cells(j, 62).Value, Worksheets("Feuil3").Columns(63), 0) 'Comparaison de la valeur des clés des feuilles "Feuil2" avec "Feuil3"
on error goto 0
If i <> 0 Then Worksheets("Feuil3").Rows(i).EntireRow.Delete Shift:=xlUp 'Supprime la ligne qui existe dans Feuil2
End If j = j + 1 'On passe au traitement de la ligne suivante dans la feuille "Feuil2" Wend
' Mettre le statut 'Nouvelle inscription' dans la 1ère colonne
k = 2 While Not IsEmpty(Cells(k, 2)) If Cells(k, 2) <> "" Then Cells(k, 1) = "Nouvelle inscription" k = k + 1 Wend
exit sub pastrouvé: i=0 resume next
End Sub
ça fonctionne,
Merci beaucoup de l'aide.
Daniel
h2so4 a écrit :
h2so4 presented the following explanation :
erreur de frappe corrigée.
j = 2
While Worksheets("Feuil2").Cells(j, 62) <> "" 'la colonne
BJ est la 62ème.
on error goto pastrouvé
i = WorksheetFunction.Match(Worksheets("Feuil2").Cells(j,
62).Value, Worksheets("Feuil3").Columns(63), 0) 'Comparaison de la
valeur des clés des feuilles "Feuil2" avec "Feuil3"
on error goto 0
If i <> 0 Then
Worksheets("Feuil3").Rows(i).EntireRow.Delete Shift:=xlUp
'Supprime la ligne qui existe dans Feuil2
End If
j = j + 1 'On passe au traitement de la ligne suivante dans la
feuille "Feuil2"
Wend
' Mettre le statut 'Nouvelle inscription' dans la 1ère colonne
k = 2
While Not IsEmpty(Cells(k, 2))
If Cells(k, 2) <> "" Then Cells(k, 1) = "Nouvelle inscription"
k = k + 1
Wend
h2so4 presented the following explanation : erreur de frappe corrigée.
j = 2 While Worksheets("Feuil2").Cells(j, 62) <> "" 'la colonne BJ est la 62ème.
on error goto pastrouvé
i = WorksheetFunction.Match(Worksheets("Feuil2").Cells(j, 62).Value, Worksheets("Feuil3").Columns(63), 0) 'Comparaison de la valeur des clés des feuilles "Feuil2" avec "Feuil3"
on error goto 0
If i <> 0 Then Worksheets("Feuil3").Rows(i).EntireRow.Delete Shift:=xlUp 'Supprime la ligne qui existe dans Feuil2
End If j = j + 1 'On passe au traitement de la ligne suivante dans la feuille "Feuil2" Wend
' Mettre le statut 'Nouvelle inscription' dans la 1ère colonne
k = 2 While Not IsEmpty(Cells(k, 2)) If Cells(k, 2) <> "" Then Cells(k, 1) = "Nouvelle inscription" k = k + 1 Wend