bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille, mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille, mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille, mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
Bonjour Claude
Pour ce type de problème j'utilise la méthode suivante :
1. Je me positionne dans l'onglet source
2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
en
mémoire
3. Je me positionne dans l'onglet cible
4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
en
mémoire
5. Je comprare en mémoire les colonnes que je souhaite et détecte les
différences ou les ressemblances
6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
VRAI
ou faux
7. Tu exploites manuellement ce résultat à ta convenance avec des tri des
filtres ....
Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
chaque onglet
Et la comparaison en mémoire est quasi immédiate
Bien penser à supprimer le mode de calcul automatique et le
raffrachissement
d'écran
--
Papyjac
"claude" a écrit :bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
Bonjour Claude
Pour ce type de problème j'utilise la méthode suivante :
1. Je me positionne dans l'onglet source
2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
en
mémoire
3. Je me positionne dans l'onglet cible
4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
en
mémoire
5. Je comprare en mémoire les colonnes que je souhaite et détecte les
différences ou les ressemblances
6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
VRAI
ou faux
7. Tu exploites manuellement ce résultat à ta convenance avec des tri des
filtres ....
Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
chaque onglet
Et la comparaison en mémoire est quasi immédiate
Bien penser à supprimer le mode de calcul automatique et le
raffrachissement
d'écran
--
Papyjac
"claude" a écrit :
bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
Bonjour Claude
Pour ce type de problème j'utilise la méthode suivante :
1. Je me positionne dans l'onglet source
2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
en
mémoire
3. Je me positionne dans l'onglet cible
4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
en
mémoire
5. Je comprare en mémoire les colonnes que je souhaite et détecte les
différences ou les ressemblances
6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
VRAI
ou faux
7. Tu exploites manuellement ce résultat à ta convenance avec des tri des
filtres ....
Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
chaque onglet
Et la comparaison en mémoire est quasi immédiate
Bien penser à supprimer le mode de calcul automatique et le
raffrachissement
d'écran
--
Papyjac
"claude" a écrit :bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
Bonjour Claude
Pour ce type de problème j'utilise la méthode suivante :
1. Je me positionne dans l'onglet source
2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
en
mémoire
3. Je me positionne dans l'onglet cible
4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
en
mémoire
5. Je comprare en mémoire les colonnes que je souhaite et détecte les
différences ou les ressemblances
6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
VRAI
ou faux
7. Tu exploites manuellement ce résultat à ta convenance avec des tri des
filtres ....
Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
chaque onglet
Et la comparaison en mémoire est quasi immédiate
Bien penser à supprimer le mode de calcul automatique et le
raffrachissement
d'écran
--
Papyjac
"claude" a écrit :bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
Bonjour Claude
Pour ce type de problème j'utilise la méthode suivante :
1. Je me positionne dans l'onglet source
2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
en
mémoire
3. Je me positionne dans l'onglet cible
4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
en
mémoire
5. Je comprare en mémoire les colonnes que je souhaite et détecte les
différences ou les ressemblances
6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
VRAI
ou faux
7. Tu exploites manuellement ce résultat à ta convenance avec des tri des
filtres ....
Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
chaque onglet
Et la comparaison en mémoire est quasi immédiate
Bien penser à supprimer le mode de calcul automatique et le
raffrachissement
d'écran
--
Papyjac
"claude" a écrit :
bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
Bonjour Claude
Pour ce type de problème j'utilise la méthode suivante :
1. Je me positionne dans l'onglet source
2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
en
mémoire
3. Je me positionne dans l'onglet cible
4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
en
mémoire
5. Je comprare en mémoire les colonnes que je souhaite et détecte les
différences ou les ressemblances
6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
VRAI
ou faux
7. Tu exploites manuellement ce résultat à ta convenance avec des tri des
filtres ....
Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
chaque onglet
Et la comparaison en mémoire est quasi immédiate
Bien penser à supprimer le mode de calcul automatique et le
raffrachissement
d'écran
--
Papyjac
"claude" a écrit :bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
merci de l'idée
en fait j'ai essayé par le méthode find en jonglant d'une feuille à
l'autre
excel est tellement puissant que çà ne prend pas beaucoup de temps
mais c'est toujours bon de comparer les idées
et puis le simple fait d'exposer son problème permet d'avancer
:--))
claude
"Papyjac" a écrit dans le message de
news:Bonjour Claude
Pour ce type de problème j'utilise la méthode suivante :
1. Je me positionne dans l'onglet source
2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
en
mémoire
3. Je me positionne dans l'onglet cible
4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
en
mémoire
5. Je comprare en mémoire les colonnes que je souhaite et détecte les
différences ou les ressemblances
6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
VRAI
ou faux
7. Tu exploites manuellement ce résultat à ta convenance avec des tri
des
filtres ....
Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
chaque onglet
Et la comparaison en mémoire est quasi immédiate
Bien penser à supprimer le mode de calcul automatique et le
raffrachissement
d'écran
--
Papyjac
"claude" a écrit :bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
merci de l'idée
en fait j'ai essayé par le méthode find en jonglant d'une feuille à
l'autre
excel est tellement puissant que çà ne prend pas beaucoup de temps
mais c'est toujours bon de comparer les idées
et puis le simple fait d'exposer son problème permet d'avancer
:--))
claude
"Papyjac" <Papyjac@discussions.microsoft.com> a écrit dans le message de
news: 14BD0242-3786-4601-97E3-2BDF0BD522C9@microsoft.com...
Bonjour Claude
Pour ce type de problème j'utilise la méthode suivante :
1. Je me positionne dans l'onglet source
2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
en
mémoire
3. Je me positionne dans l'onglet cible
4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
en
mémoire
5. Je comprare en mémoire les colonnes que je souhaite et détecte les
différences ou les ressemblances
6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
VRAI
ou faux
7. Tu exploites manuellement ce résultat à ta convenance avec des tri
des
filtres ....
Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
chaque onglet
Et la comparaison en mémoire est quasi immédiate
Bien penser à supprimer le mode de calcul automatique et le
raffrachissement
d'écran
--
Papyjac
"claude" a écrit :
bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
merci de l'idée
en fait j'ai essayé par le méthode find en jonglant d'une feuille à
l'autre
excel est tellement puissant que çà ne prend pas beaucoup de temps
mais c'est toujours bon de comparer les idées
et puis le simple fait d'exposer son problème permet d'avancer
:--))
claude
"Papyjac" a écrit dans le message de
news:Bonjour Claude
Pour ce type de problème j'utilise la méthode suivante :
1. Je me positionne dans l'onglet source
2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
en
mémoire
3. Je me positionne dans l'onglet cible
4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
en
mémoire
5. Je comprare en mémoire les colonnes que je souhaite et détecte les
différences ou les ressemblances
6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
VRAI
ou faux
7. Tu exploites manuellement ce résultat à ta convenance avec des tri
des
filtres ....
Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
chaque onglet
Et la comparaison en mémoire est quasi immédiate
Bien penser à supprimer le mode de calcul automatique et le
raffrachissement
d'écran
--
Papyjac
"claude" a écrit :bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
merci de l'idée
en fait j'ai essayé par le méthode find en jonglant d'une feuille à l'autre
excel est tellement puissant que çà ne prend pas beaucoup de temps
mais c'est toujours bon de comparer les idées
et puis le simple fait d'exposer son problème permet d'avancer
:--))
claude
"Papyjac" a écrit dans le message de
news:
> Bonjour Claude
>
> Pour ce type de problème j'utilise la méthode suivante :
> 1. Je me positionne dans l'onglet source
> 2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
> en
> mémoire
> 3. Je me positionne dans l'onglet cible
> 4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
> en
> mémoire
> 5. Je comprare en mémoire les colonnes que je souhaite et détecte les
> différences ou les ressemblances
> 6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
> éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
> VRAI
> ou faux
> 7. Tu exploites manuellement ce résultat à ta convenance avec des tri des
> filtres ....
>
> Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
> chaque onglet
> Et la comparaison en mémoire est quasi immédiate
> Bien penser à supprimer le mode de calcul automatique et le
> raffrachissement
> d'écran
>
>
> --
> Papyjac
>
>
> "claude" a écrit :
>
>> bonjour (soir ) à tous
>> j'aimagine que ma question est récurrente ...
>> j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
>> j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
>> feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
>> feuille
>>
>> j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
>> mais
>> j'ai peur que çà soit très long pour plusieurs milliers de lignes
>> correct ou çà va durer des heures ???
>>
>> merci d'avance
>> claude
>>
>>
>>
merci de l'idée
en fait j'ai essayé par le méthode find en jonglant d'une feuille à l'autre
excel est tellement puissant que çà ne prend pas beaucoup de temps
mais c'est toujours bon de comparer les idées
et puis le simple fait d'exposer son problème permet d'avancer
:--))
claude
"Papyjac" <Papyjac@discussions.microsoft.com> a écrit dans le message de
news: 14BD0242-3786-4601-97E3-2BDF0BD522C9@microsoft.com...
> Bonjour Claude
>
> Pour ce type de problème j'utilise la méthode suivante :
> 1. Je me positionne dans l'onglet source
> 2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
> en
> mémoire
> 3. Je me positionne dans l'onglet cible
> 4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
> en
> mémoire
> 5. Je comprare en mémoire les colonnes que je souhaite et détecte les
> différences ou les ressemblances
> 6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
> éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
> VRAI
> ou faux
> 7. Tu exploites manuellement ce résultat à ta convenance avec des tri des
> filtres ....
>
> Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
> chaque onglet
> Et la comparaison en mémoire est quasi immédiate
> Bien penser à supprimer le mode de calcul automatique et le
> raffrachissement
> d'écran
>
>
> --
> Papyjac
>
>
> "claude" a écrit :
>
>> bonjour (soir ) à tous
>> j'aimagine que ma question est récurrente ...
>> j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
>> j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
>> feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
>> feuille
>>
>> j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
>> mais
>> j'ai peur que çà soit très long pour plusieurs milliers de lignes
>> correct ou çà va durer des heures ???
>>
>> merci d'avance
>> claude
>>
>>
>>
merci de l'idée
en fait j'ai essayé par le méthode find en jonglant d'une feuille à l'autre
excel est tellement puissant que çà ne prend pas beaucoup de temps
mais c'est toujours bon de comparer les idées
et puis le simple fait d'exposer son problème permet d'avancer
:--))
claude
"Papyjac" a écrit dans le message de
news:
> Bonjour Claude
>
> Pour ce type de problème j'utilise la méthode suivante :
> 1. Je me positionne dans l'onglet source
> 2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
> en
> mémoire
> 3. Je me positionne dans l'onglet cible
> 4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
> en
> mémoire
> 5. Je comprare en mémoire les colonnes que je souhaite et détecte les
> différences ou les ressemblances
> 6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
> éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
> VRAI
> ou faux
> 7. Tu exploites manuellement ce résultat à ta convenance avec des tri des
> filtres ....
>
> Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
> chaque onglet
> Et la comparaison en mémoire est quasi immédiate
> Bien penser à supprimer le mode de calcul automatique et le
> raffrachissement
> d'écran
>
>
> --
> Papyjac
>
>
> "claude" a écrit :
>
>> bonjour (soir ) à tous
>> j'aimagine que ma question est récurrente ...
>> j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
>> j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
>> feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
>> feuille
>>
>> j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
>> mais
>> j'ai peur que çà soit très long pour plusieurs milliers de lignes
>> correct ou çà va durer des heures ???
>>
>> merci d'avance
>> claude
>>
>>
>>
JB n'étant pas la pour te répondre, trois routine de sa composition
Sub ComparaisonChamp()
t = Timer()
Application.ScreenUpdating = False
Set MonDico1 = CreateObject("Scripting.Dictionary")
Set MonDico2 = CreateObject("Scripting.Dictionary")
Workbooks("classeur1.xls").Activate
For Each C In
Sheets(1).Range("A1:B5000").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico1.Exists(C.Value) Then MonDico1.Add C.Value,
C.Address
Next
Workbooks("classeur2.xls").Activate
For Each C In
Sheets(1).Range("A1:B5000").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico2.Exists(C.Value) Then MonDico2.Add C.Value,
C.Address
Next
Workbooks("classeur1.xls").Activate
For Each e In MonDico1
Range(MonDico1.Item(e)).Font.Color = IIf(MonDico2.Exists(e),
vblack, vbRed)
Next
[C1] = Timer - t
Application.ScreenUpdating = True
MsgBox Timer() - t
End Sub
Sub ComparaisonColonne()
t = Timer()
F = 1 'no feuille
Application.ScreenUpdating = False
Set MonDico1 = CreateObject("Scripting.Dictionary")
Set MonDico2 = CreateObject("Scripting.Dictionary")
Workbooks("classeur1.xls").Activate
For Each C In
Sheets(F).Range("A1:A450").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico1.Exists(C.Value) Then MonDico1.Add C.Value,
C.Address
Next
Workbooks("classeur2.xls").Activate
Sheets(F).Activate
For Each C In
Sheets(F).Range("A1:A450").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico2.Exists(C.Value) Then MonDico2.Add C.Value,
C.Address
Next
Workbooks("classeur1.xls").Activate
Sheets(F).Activate
For Each e In MonDico1
If Not MonDico2.Exists(e) Then
Range(MonDico1.Item(e)).Font.Color = vbRed
Else
Range(MonDico1.Item(e)).Font.Color = vbBlack
End If
Next
Application.ScreenUpdating = True
[C1] = Timer - t
MsgBox Timer() - t
End Sub
Sub ComparaisonChamptriple()
t = Timer()
Application.ScreenUpdating = False
Set MonDico1 = CreateObject("Scripting.Dictionary")
Set MonDico2 = CreateObject("Scripting.Dictionary")
Workbooks("classeur1.xls").Activate
For Each C In
Sheets(1).Range("A1:B5000").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico1.Exists(C.Value) Then MonDico1.Add C.Value,
C.Address
Next
Workbooks("classeur2.xls").Activate
For Each C In
Sheets(1).Range("A1:B5000").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico2.Exists(C.Value) Then MonDico2.Add C.Value,
C.Address
Next
"claude" a écrit dans le message de news:
4937096f$0$8428$merci de l'idée
en fait j'ai essayé par le méthode find en jonglant d'une feuille à
l'autre
excel est tellement puissant que çà ne prend pas beaucoup de temps
mais c'est toujours bon de comparer les idées
et puis le simple fait d'exposer son problème permet d'avancer
:--))
claude
"Papyjac" a écrit dans le message de
news:Bonjour Claude
Pour ce type de problème j'utilise la méthode suivante :
1. Je me positionne dans l'onglet source
2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
en
mémoire
3. Je me positionne dans l'onglet cible
4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
en
mémoire
5. Je comprare en mémoire les colonnes que je souhaite et détecte les
différences ou les ressemblances
6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
VRAI
ou faux
7. Tu exploites manuellement ce résultat à ta convenance avec des tri
des
filtres ....
Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
chaque onglet
Et la comparaison en mémoire est quasi immédiate
Bien penser à supprimer le mode de calcul automatique et le
raffrachissement
d'écran
--
Papyjac
"claude" a écrit :bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
JB n'étant pas la pour te répondre, trois routine de sa composition
Sub ComparaisonChamp()
t = Timer()
Application.ScreenUpdating = False
Set MonDico1 = CreateObject("Scripting.Dictionary")
Set MonDico2 = CreateObject("Scripting.Dictionary")
Workbooks("classeur1.xls").Activate
For Each C In
Sheets(1).Range("A1:B5000").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico1.Exists(C.Value) Then MonDico1.Add C.Value,
C.Address
Next
Workbooks("classeur2.xls").Activate
For Each C In
Sheets(1).Range("A1:B5000").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico2.Exists(C.Value) Then MonDico2.Add C.Value,
C.Address
Next
Workbooks("classeur1.xls").Activate
For Each e In MonDico1
Range(MonDico1.Item(e)).Font.Color = IIf(MonDico2.Exists(e),
vblack, vbRed)
Next
[C1] = Timer - t
Application.ScreenUpdating = True
MsgBox Timer() - t
End Sub
Sub ComparaisonColonne()
t = Timer()
F = 1 'no feuille
Application.ScreenUpdating = False
Set MonDico1 = CreateObject("Scripting.Dictionary")
Set MonDico2 = CreateObject("Scripting.Dictionary")
Workbooks("classeur1.xls").Activate
For Each C In
Sheets(F).Range("A1:A450").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico1.Exists(C.Value) Then MonDico1.Add C.Value,
C.Address
Next
Workbooks("classeur2.xls").Activate
Sheets(F).Activate
For Each C In
Sheets(F).Range("A1:A450").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico2.Exists(C.Value) Then MonDico2.Add C.Value,
C.Address
Next
Workbooks("classeur1.xls").Activate
Sheets(F).Activate
For Each e In MonDico1
If Not MonDico2.Exists(e) Then
Range(MonDico1.Item(e)).Font.Color = vbRed
Else
Range(MonDico1.Item(e)).Font.Color = vbBlack
End If
Next
Application.ScreenUpdating = True
[C1] = Timer - t
MsgBox Timer() - t
End Sub
Sub ComparaisonChamptriple()
t = Timer()
Application.ScreenUpdating = False
Set MonDico1 = CreateObject("Scripting.Dictionary")
Set MonDico2 = CreateObject("Scripting.Dictionary")
Workbooks("classeur1.xls").Activate
For Each C In
Sheets(1).Range("A1:B5000").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico1.Exists(C.Value) Then MonDico1.Add C.Value,
C.Address
Next
Workbooks("classeur2.xls").Activate
For Each C In
Sheets(1).Range("A1:B5000").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico2.Exists(C.Value) Then MonDico2.Add C.Value,
C.Address
Next
"claude" <nospam_doclaude@free.fr> a écrit dans le message de news:
4937096f$0$8428$426a74cc@news.free.fr...
merci de l'idée
en fait j'ai essayé par le méthode find en jonglant d'une feuille à
l'autre
excel est tellement puissant que çà ne prend pas beaucoup de temps
mais c'est toujours bon de comparer les idées
et puis le simple fait d'exposer son problème permet d'avancer
:--))
claude
"Papyjac" <Papyjac@discussions.microsoft.com> a écrit dans le message de
news: 14BD0242-3786-4601-97E3-2BDF0BD522C9@microsoft.com...
Bonjour Claude
Pour ce type de problème j'utilise la méthode suivante :
1. Je me positionne dans l'onglet source
2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
en
mémoire
3. Je me positionne dans l'onglet cible
4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
en
mémoire
5. Je comprare en mémoire les colonnes que je souhaite et détecte les
différences ou les ressemblances
6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
VRAI
ou faux
7. Tu exploites manuellement ce résultat à ta convenance avec des tri
des
filtres ....
Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
chaque onglet
Et la comparaison en mémoire est quasi immédiate
Bien penser à supprimer le mode de calcul automatique et le
raffrachissement
d'écran
--
Papyjac
"claude" a écrit :
bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude
JB n'étant pas la pour te répondre, trois routine de sa composition
Sub ComparaisonChamp()
t = Timer()
Application.ScreenUpdating = False
Set MonDico1 = CreateObject("Scripting.Dictionary")
Set MonDico2 = CreateObject("Scripting.Dictionary")
Workbooks("classeur1.xls").Activate
For Each C In
Sheets(1).Range("A1:B5000").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico1.Exists(C.Value) Then MonDico1.Add C.Value,
C.Address
Next
Workbooks("classeur2.xls").Activate
For Each C In
Sheets(1).Range("A1:B5000").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico2.Exists(C.Value) Then MonDico2.Add C.Value,
C.Address
Next
Workbooks("classeur1.xls").Activate
For Each e In MonDico1
Range(MonDico1.Item(e)).Font.Color = IIf(MonDico2.Exists(e),
vblack, vbRed)
Next
[C1] = Timer - t
Application.ScreenUpdating = True
MsgBox Timer() - t
End Sub
Sub ComparaisonColonne()
t = Timer()
F = 1 'no feuille
Application.ScreenUpdating = False
Set MonDico1 = CreateObject("Scripting.Dictionary")
Set MonDico2 = CreateObject("Scripting.Dictionary")
Workbooks("classeur1.xls").Activate
For Each C In
Sheets(F).Range("A1:A450").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico1.Exists(C.Value) Then MonDico1.Add C.Value,
C.Address
Next
Workbooks("classeur2.xls").Activate
Sheets(F).Activate
For Each C In
Sheets(F).Range("A1:A450").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico2.Exists(C.Value) Then MonDico2.Add C.Value,
C.Address
Next
Workbooks("classeur1.xls").Activate
Sheets(F).Activate
For Each e In MonDico1
If Not MonDico2.Exists(e) Then
Range(MonDico1.Item(e)).Font.Color = vbRed
Else
Range(MonDico1.Item(e)).Font.Color = vbBlack
End If
Next
Application.ScreenUpdating = True
[C1] = Timer - t
MsgBox Timer() - t
End Sub
Sub ComparaisonChamptriple()
t = Timer()
Application.ScreenUpdating = False
Set MonDico1 = CreateObject("Scripting.Dictionary")
Set MonDico2 = CreateObject("Scripting.Dictionary")
Workbooks("classeur1.xls").Activate
For Each C In
Sheets(1).Range("A1:B5000").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico1.Exists(C.Value) Then MonDico1.Add C.Value,
C.Address
Next
Workbooks("classeur2.xls").Activate
For Each C In
Sheets(1).Range("A1:B5000").SpecialCells(xlCellTypeConstants, 23)
If Not MonDico2.Exists(C.Value) Then MonDico2.Add C.Value,
C.Address
Next
"claude" a écrit dans le message de news:
4937096f$0$8428$merci de l'idée
en fait j'ai essayé par le méthode find en jonglant d'une feuille à
l'autre
excel est tellement puissant que çà ne prend pas beaucoup de temps
mais c'est toujours bon de comparer les idées
et puis le simple fait d'exposer son problème permet d'avancer
:--))
claude
"Papyjac" a écrit dans le message de
news:Bonjour Claude
Pour ce type de problème j'utilise la méthode suivante :
1. Je me positionne dans l'onglet source
2. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T1
en
mémoire
3. Je me positionne dans l'onglet cible
4. Je stocke en mémoire les colonnes dont j'ai besoin dans un tableau T2
en
mémoire
5. Je comprare en mémoire les colonnes que je souhaite et détecte les
différences ou les ressemblances
6. Je restitue le résultat dans l'onglet cible (ou source) mais il faut
éviter d'utiliser une couleur, mieux vaut ajouter une colonne résultat
VRAI
ou faux
7. Tu exploites manuellement ce résultat à ta convenance avec des tri
des
filtres ....
Je n'ai rien trouvé de plus performant car je ne lit qu'une seule fois
chaque onglet
Et la comparaison en mémoire est quasi immédiate
Bien penser à supprimer le mode de calcul automatique et le
raffrachissement
d'écran
--
Papyjac
"claude" a écrit :bonjour (soir ) à tous
j'aimagine que ma question est récurrente ...
j'ai deux feuilles contenant pas mal de lignes (plusieurs milliers)
j'aimerai écrire une macro qui parte d'une feuille, aille dans l'autre
feuille marquer (en couleur par exemple) ceux qui ne sont pas dans la
feuille
j'ai pensé à boucler sur chaque ligne avec un find sur l'autre feuille,
mais
j'ai peur que çà soit très long pour plusieurs milliers de lignes
correct ou çà va durer des heures ???
merci d'avance
claude