Bonsoir,
Il te faut faire un appareillage (comme on dit dans le milieu
informatique) aménagé :
1 - Trier les 2 feuilles
2 - Faire ta boucle de lecture de la feuille A
3 - Comparer un à un les éléments de la feuille B
3a - Si tu as égalité => action dans feuille A
3b - Si cellule feuille B> cellule feuille A => passage à la cellule
suivante de la feuille A
4 - Test de cette nouvelle cellule de la feuille A par rapport à la
cellule de la feuille B qui a permis d'arrêter la boucle précédente (3b)
5 - revenir par la même méthode au point 3
6 - Faire la séquence 3-3a-3b-4 jusqu'à épuisement des cellules de la
feuille A
Exemple :
En feuille A, tu as les 5 valeurs 3, 4, 5, 6 et 8 dans les cellules A1 à
A5
En feuille B, tu as les 4 valeurs 1, 3, 5 et 7 dans les cellules B1 à B4
L'algorythme est le suivant :
Début de Traitement
INDICE_B = 1
POUR I =1 à 5 par pas de 1
POUR J = INDICE_B à 4 par pas de 1
SI B[J]>=A[I]
ALORS
SI B[J]=A[I]
ALORS
Ecriture dans Feuille A ou autre action
FIN_SI
INDICE_B=J (=> les autres valeurs de A sont au moins égales à
celle de B référencée par INDICE_B => servira dans la prochaine boucle J)
SORTIR BOUCLE J (ou J=4) (les autres valeurs de B ne peuvent
convenir => arrêt boucle)
FIN_SI
J SUIVANT
SI INDICE_B=4 ET A[I]>B[INDICE_B] (=> la valeur actuelle de A est
supérieure à la plus grande valeur de B (dernière) => plus de possibilité
de cas identiques)
ALORS
SORTIR BOUCLE I (ou I=5)
FIN_SI
I SUIVANT
Fin de Traitement
PS : 4 et 5 devront bien entendu être variabilisés
J'espère que cela pourra t'aider dans ta programmation VBA
Cordialement
"Patrice FY" a écrit dans le message
de news: 0b9a01c537aa$54e97080$
Bonjour,
Mon problème est le suivant:
J'ai environ 10000 lignes dans une feuille A et environ
9800 dans une feuille B. Je compare pour chaque ligne de
ma feuille A le contenu d'une cellule au contenu d'une
cellule de ma feuille B pour trouver les contenu
indentiques et mettre un e valeur dans une autre cellule
de ma feuille A. J'ai utilisé deux boucles FOR TO NEXT
style
For a = 1 to 10000
For b= 1 to 9800
je compare mes lignes feuille A range("a") et feuille
B range("b")et si égalité je mets une valeur dans ma
feuille A
Next b
Next a
Cela fonctionne parfaitement mais la macro dure de très
très longues heures !!!
Comment réduire la durée de cette macro ???? Merci
Bonsoir,
Il te faut faire un appareillage (comme on dit dans le milieu
informatique) aménagé :
1 - Trier les 2 feuilles
2 - Faire ta boucle de lecture de la feuille A
3 - Comparer un à un les éléments de la feuille B
3a - Si tu as égalité => action dans feuille A
3b - Si cellule feuille B> cellule feuille A => passage à la cellule
suivante de la feuille A
4 - Test de cette nouvelle cellule de la feuille A par rapport à la
cellule de la feuille B qui a permis d'arrêter la boucle précédente (3b)
5 - revenir par la même méthode au point 3
6 - Faire la séquence 3-3a-3b-4 jusqu'à épuisement des cellules de la
feuille A
Exemple :
En feuille A, tu as les 5 valeurs 3, 4, 5, 6 et 8 dans les cellules A1 à
A5
En feuille B, tu as les 4 valeurs 1, 3, 5 et 7 dans les cellules B1 à B4
L'algorythme est le suivant :
Début de Traitement
INDICE_B = 1
POUR I =1 à 5 par pas de 1
POUR J = INDICE_B à 4 par pas de 1
SI B[J]>=A[I]
ALORS
SI B[J]=A[I]
ALORS
Ecriture dans Feuille A ou autre action
FIN_SI
INDICE_B=J (=> les autres valeurs de A sont au moins égales à
celle de B référencée par INDICE_B => servira dans la prochaine boucle J)
SORTIR BOUCLE J (ou J=4) (les autres valeurs de B ne peuvent
convenir => arrêt boucle)
FIN_SI
J SUIVANT
SI INDICE_B=4 ET A[I]>B[INDICE_B] (=> la valeur actuelle de A est
supérieure à la plus grande valeur de B (dernière) => plus de possibilité
de cas identiques)
ALORS
SORTIR BOUCLE I (ou I=5)
FIN_SI
I SUIVANT
Fin de Traitement
PS : 4 et 5 devront bien entendu être variabilisés
J'espère que cela pourra t'aider dans ta programmation VBA
Cordialement
"Patrice FY" <anonymous@discussions.microsoft.com> a écrit dans le message
de news: 0b9a01c537aa$54e97080$a501280a@phx.gbl...
Bonjour,
Mon problème est le suivant:
J'ai environ 10000 lignes dans une feuille A et environ
9800 dans une feuille B. Je compare pour chaque ligne de
ma feuille A le contenu d'une cellule au contenu d'une
cellule de ma feuille B pour trouver les contenu
indentiques et mettre un e valeur dans une autre cellule
de ma feuille A. J'ai utilisé deux boucles FOR TO NEXT
style
For a = 1 to 10000
For b= 1 to 9800
je compare mes lignes feuille A range("a") et feuille
B range("b")et si égalité je mets une valeur dans ma
feuille A
Next b
Next a
Cela fonctionne parfaitement mais la macro dure de très
très longues heures !!!
Comment réduire la durée de cette macro ???? Merci
Bonsoir,
Il te faut faire un appareillage (comme on dit dans le milieu
informatique) aménagé :
1 - Trier les 2 feuilles
2 - Faire ta boucle de lecture de la feuille A
3 - Comparer un à un les éléments de la feuille B
3a - Si tu as égalité => action dans feuille A
3b - Si cellule feuille B> cellule feuille A => passage à la cellule
suivante de la feuille A
4 - Test de cette nouvelle cellule de la feuille A par rapport à la
cellule de la feuille B qui a permis d'arrêter la boucle précédente (3b)
5 - revenir par la même méthode au point 3
6 - Faire la séquence 3-3a-3b-4 jusqu'à épuisement des cellules de la
feuille A
Exemple :
En feuille A, tu as les 5 valeurs 3, 4, 5, 6 et 8 dans les cellules A1 à
A5
En feuille B, tu as les 4 valeurs 1, 3, 5 et 7 dans les cellules B1 à B4
L'algorythme est le suivant :
Début de Traitement
INDICE_B = 1
POUR I =1 à 5 par pas de 1
POUR J = INDICE_B à 4 par pas de 1
SI B[J]>=A[I]
ALORS
SI B[J]=A[I]
ALORS
Ecriture dans Feuille A ou autre action
FIN_SI
INDICE_B=J (=> les autres valeurs de A sont au moins égales à
celle de B référencée par INDICE_B => servira dans la prochaine boucle J)
SORTIR BOUCLE J (ou J=4) (les autres valeurs de B ne peuvent
convenir => arrêt boucle)
FIN_SI
J SUIVANT
SI INDICE_B=4 ET A[I]>B[INDICE_B] (=> la valeur actuelle de A est
supérieure à la plus grande valeur de B (dernière) => plus de possibilité
de cas identiques)
ALORS
SORTIR BOUCLE I (ou I=5)
FIN_SI
I SUIVANT
Fin de Traitement
PS : 4 et 5 devront bien entendu être variabilisés
J'espère que cela pourra t'aider dans ta programmation VBA
Cordialement
"Patrice FY" a écrit dans le message
de news: 0b9a01c537aa$54e97080$
Bonjour,
Mon problème est le suivant:
J'ai environ 10000 lignes dans une feuille A et environ
9800 dans une feuille B. Je compare pour chaque ligne de
ma feuille A le contenu d'une cellule au contenu d'une
cellule de ma feuille B pour trouver les contenu
indentiques et mettre un e valeur dans une autre cellule
de ma feuille A. J'ai utilisé deux boucles FOR TO NEXT
style
For a = 1 to 10000
For b= 1 to 9800
je compare mes lignes feuille A range("a") et feuille
B range("b")et si égalité je mets une valeur dans ma
feuille A
Next b
Next a
Cela fonctionne parfaitement mais la macro dure de très
très longues heures !!!
Comment réduire la durée de cette macro ???? Merci
Re,
Alors, s'il s'avère qu'il n'y a qu'une colonne de Feuil1 à comparer avec
une de Feuil2
Sans VBA cela prend quelques secondes dans la colonne adjacente cette
formule en b2 à recopier vers le bas suffirait:
=NB.SI(Feuil2!$A$2:$A$9801;A2)
lSteph
"Patrice FY" a écrit dans le message
de news: 0b9a01c537aa$54e97080$
Bonjour,
Mon problème est le suivant:
J'ai environ 10000 lignes dans une feuille A et environ
9800 dans une feuille B. Je compare pour chaque ligne de
ma feuille A le contenu d'une cellule au contenu d'une
cellule de ma feuille B pour trouver les contenu
indentiques et mettre un e valeur dans une autre cellule
de ma feuille A. J'ai utilisé deux boucles FOR TO NEXT
style
For a = 1 to 10000
For b= 1 to 9800
je compare mes lignes feuille A range("a") et feuille
B range("b")et si égalité je mets une valeur dans ma
feuille A
Next b
Next a
Cela fonctionne parfaitement mais la macro dure de très
très longues heures !!!
Comment réduire la durée de cette macro ???? Merci
Re,
Alors, s'il s'avère qu'il n'y a qu'une colonne de Feuil1 à comparer avec
une de Feuil2
Sans VBA cela prend quelques secondes dans la colonne adjacente cette
formule en b2 à recopier vers le bas suffirait:
=NB.SI(Feuil2!$A$2:$A$9801;A2)
lSteph
"Patrice FY" <anonymous@discussions.microsoft.com> a écrit dans le message
de news: 0b9a01c537aa$54e97080$a501280a@phx.gbl...
Bonjour,
Mon problème est le suivant:
J'ai environ 10000 lignes dans une feuille A et environ
9800 dans une feuille B. Je compare pour chaque ligne de
ma feuille A le contenu d'une cellule au contenu d'une
cellule de ma feuille B pour trouver les contenu
indentiques et mettre un e valeur dans une autre cellule
de ma feuille A. J'ai utilisé deux boucles FOR TO NEXT
style
For a = 1 to 10000
For b= 1 to 9800
je compare mes lignes feuille A range("a") et feuille
B range("b")et si égalité je mets une valeur dans ma
feuille A
Next b
Next a
Cela fonctionne parfaitement mais la macro dure de très
très longues heures !!!
Comment réduire la durée de cette macro ???? Merci
Re,
Alors, s'il s'avère qu'il n'y a qu'une colonne de Feuil1 à comparer avec
une de Feuil2
Sans VBA cela prend quelques secondes dans la colonne adjacente cette
formule en b2 à recopier vers le bas suffirait:
=NB.SI(Feuil2!$A$2:$A$9801;A2)
lSteph
"Patrice FY" a écrit dans le message
de news: 0b9a01c537aa$54e97080$
Bonjour,
Mon problème est le suivant:
J'ai environ 10000 lignes dans une feuille A et environ
9800 dans une feuille B. Je compare pour chaque ligne de
ma feuille A le contenu d'une cellule au contenu d'une
cellule de ma feuille B pour trouver les contenu
indentiques et mettre un e valeur dans une autre cellule
de ma feuille A. J'ai utilisé deux boucles FOR TO NEXT
style
For a = 1 to 10000
For b= 1 to 9800
je compare mes lignes feuille A range("a") et feuille
B range("b")et si égalité je mets une valeur dans ma
feuille A
Next b
Next a
Cela fonctionne parfaitement mais la macro dure de très
très longues heures !!!
Comment réduire la durée de cette macro ???? Merci
Bonjour LSteph,
Tu as donc donné une solution partielle à ton problème.
Le mieux est d'activer le magnétophone et d'enregistrer toutes les manip
faites à la main
- sélection de la plage de cellules
- écriture de la formule =NB.SI(Feuil2!$A$2:$A$9801;A2)
- recopie vers le bas (CtrlB ou Alt Enter en restant dans l'éditeur)
- exploiter les résultats et mettre les valeurs dans les autres cellules
- resélectionner la plage et effacer
- sélectionner A1
- après arrêt, nettoyer ou adapter la macro
En en-tête, tu peux ajouter :
Application.Calculation = xlCalculationManual ' au cas où il serait
désactivé
Application.ScreenUpdating = False 'pour accélérer un peu le
traitement
... et à la fin
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True 'nécessaire avant un Msgbox ou
un affichage de boite de dialogue par exemple
Pour traiter plusieurs milliers de lignes, j'emploie toujours en priorité
cette méthode bien plus rapide que des boucles VBA
pour les fonctions de tableur INDEX, INDEX/EQUIV, NB, NBVAL, SOMME.SI,
etc...
Cordialement
Robert Dezan
"LSteph" a écrit dans le message de news:
%Re,
Alors, s'il s'avère qu'il n'y a qu'une colonne de Feuil1 à comparer avec
une de Feuil2
Sans VBA cela prend quelques secondes dans la colonne adjacente cette
formule en b2 à recopier vers le bas suffirait:
=NB.SI(Feuil2!$A$2:$A$9801;A2)
lSteph
"Patrice FY" a écrit dans le
message de news: 0b9a01c537aa$54e97080$
Bonjour,
Mon problème est le suivant:
J'ai environ 10000 lignes dans une feuille A et environ
9800 dans une feuille B. Je compare pour chaque ligne de
ma feuille A le contenu d'une cellule au contenu d'une
cellule de ma feuille B pour trouver les contenu
indentiques et mettre un e valeur dans une autre cellule
de ma feuille A. J'ai utilisé deux boucles FOR TO NEXT
style
For a = 1 to 10000
For b= 1 to 9800
je compare mes lignes feuille A range("a") et feuille
B range("b")et si égalité je mets une valeur dans ma
feuille A
Next b
Next a
Cela fonctionne parfaitement mais la macro dure de très
très longues heures !!!
Comment réduire la durée de cette macro ???? Merci
Bonjour LSteph,
Tu as donc donné une solution partielle à ton problème.
Le mieux est d'activer le magnétophone et d'enregistrer toutes les manip
faites à la main
- sélection de la plage de cellules
- écriture de la formule =NB.SI(Feuil2!$A$2:$A$9801;A2)
- recopie vers le bas (CtrlB ou Alt Enter en restant dans l'éditeur)
- exploiter les résultats et mettre les valeurs dans les autres cellules
- resélectionner la plage et effacer
- sélectionner A1
- après arrêt, nettoyer ou adapter la macro
En en-tête, tu peux ajouter :
Application.Calculation = xlCalculationManual ' au cas où il serait
désactivé
Application.ScreenUpdating = False 'pour accélérer un peu le
traitement
... et à la fin
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True 'nécessaire avant un Msgbox ou
un affichage de boite de dialogue par exemple
Pour traiter plusieurs milliers de lignes, j'emploie toujours en priorité
cette méthode bien plus rapide que des boucles VBA
pour les fonctions de tableur INDEX, INDEX/EQUIV, NB, NBVAL, SOMME.SI,
etc...
Cordialement
Robert Dezan
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
%23KRslq7NFHA.3296@TK2MSFTNGP15.phx.gbl...
Re,
Alors, s'il s'avère qu'il n'y a qu'une colonne de Feuil1 à comparer avec
une de Feuil2
Sans VBA cela prend quelques secondes dans la colonne adjacente cette
formule en b2 à recopier vers le bas suffirait:
=NB.SI(Feuil2!$A$2:$A$9801;A2)
lSteph
"Patrice FY" <anonymous@discussions.microsoft.com> a écrit dans le
message de news: 0b9a01c537aa$54e97080$a501280a@phx.gbl...
Bonjour,
Mon problème est le suivant:
J'ai environ 10000 lignes dans une feuille A et environ
9800 dans une feuille B. Je compare pour chaque ligne de
ma feuille A le contenu d'une cellule au contenu d'une
cellule de ma feuille B pour trouver les contenu
indentiques et mettre un e valeur dans une autre cellule
de ma feuille A. J'ai utilisé deux boucles FOR TO NEXT
style
For a = 1 to 10000
For b= 1 to 9800
je compare mes lignes feuille A range("a") et feuille
B range("b")et si égalité je mets une valeur dans ma
feuille A
Next b
Next a
Cela fonctionne parfaitement mais la macro dure de très
très longues heures !!!
Comment réduire la durée de cette macro ???? Merci
Bonjour LSteph,
Tu as donc donné une solution partielle à ton problème.
Le mieux est d'activer le magnétophone et d'enregistrer toutes les manip
faites à la main
- sélection de la plage de cellules
- écriture de la formule =NB.SI(Feuil2!$A$2:$A$9801;A2)
- recopie vers le bas (CtrlB ou Alt Enter en restant dans l'éditeur)
- exploiter les résultats et mettre les valeurs dans les autres cellules
- resélectionner la plage et effacer
- sélectionner A1
- après arrêt, nettoyer ou adapter la macro
En en-tête, tu peux ajouter :
Application.Calculation = xlCalculationManual ' au cas où il serait
désactivé
Application.ScreenUpdating = False 'pour accélérer un peu le
traitement
... et à la fin
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True 'nécessaire avant un Msgbox ou
un affichage de boite de dialogue par exemple
Pour traiter plusieurs milliers de lignes, j'emploie toujours en priorité
cette méthode bien plus rapide que des boucles VBA
pour les fonctions de tableur INDEX, INDEX/EQUIV, NB, NBVAL, SOMME.SI,
etc...
Cordialement
Robert Dezan
"LSteph" a écrit dans le message de news:
%Re,
Alors, s'il s'avère qu'il n'y a qu'une colonne de Feuil1 à comparer avec
une de Feuil2
Sans VBA cela prend quelques secondes dans la colonne adjacente cette
formule en b2 à recopier vers le bas suffirait:
=NB.SI(Feuil2!$A$2:$A$9801;A2)
lSteph
"Patrice FY" a écrit dans le
message de news: 0b9a01c537aa$54e97080$
Bonjour,
Mon problème est le suivant:
J'ai environ 10000 lignes dans une feuille A et environ
9800 dans une feuille B. Je compare pour chaque ligne de
ma feuille A le contenu d'une cellule au contenu d'une
cellule de ma feuille B pour trouver les contenu
indentiques et mettre un e valeur dans une autre cellule
de ma feuille A. J'ai utilisé deux boucles FOR TO NEXT
style
For a = 1 to 10000
For b= 1 to 9800
je compare mes lignes feuille A range("a") et feuille
B range("b")et si égalité je mets une valeur dans ma
feuille A
Next b
Next a
Cela fonctionne parfaitement mais la macro dure de très
très longues heures !!!
Comment réduire la durée de cette macro ???? Merci
Bonjour LSteph,
Tu as donc donné une solution partielle à ton problème.
Le mieux est d'activer le magnétophone et d'enregistrer toutes les manip
faites à la main
- sélection de la plage de cellules
- écriture de la formule =NB.SI(Feuil2!$A$2:$A$9801;A2)
- recopie vers le bas (CtrlB ou Alt Enter en restant dans l'éditeur)
- exploiter les résultats et mettre les valeurs dans les autres cellules
- resélectionner la plage et effacer
- sélectionner A1
- après arrêt, nettoyer ou adapter la macro
En en-tête, tu peux ajouter :
Application.Calculation = xlCalculationManual ' au cas où il serait
désactivé
Application.ScreenUpdating = False 'pour accélérer un peu le
traitement
... et à la fin
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True 'nécessaire avant un Msgbox ou
un affichage de boite de dialogue par exemple
Pour traiter plusieurs milliers de lignes, j'emploie toujours en priorité
cette méthode bien plus rapide que des boucles VBA
pour les fonctions de tableur INDEX, INDEX/EQUIV, NB, NBVAL, SOMME.SI,
etc...
Cordialement
Robert Dezan
"LSteph" a écrit dans le message de news:
%Re,
Alors, s'il s'avère qu'il n'y a qu'une colonne de Feuil1 à comparer avec
une de Feuil2
Sans VBA cela prend quelques secondes dans la colonne adjacente cette
formule en b2 à recopier vers le bas suffirait:
=NB.SI(Feuil2!$A$2:$A$9801;A2)
lSteph
"Patrice FY" a écrit dans le
message de news: 0b9a01c537aa$54e97080$
Bonjour,
Mon problème est le suivant:
J'ai environ 10000 lignes dans une feuille A et environ
9800 dans une feuille B. Je compare pour chaque ligne de
ma feuille A le contenu d'une cellule au contenu d'une
cellule de ma feuille B pour trouver les contenu
indentiques et mettre un e valeur dans une autre cellule
de ma feuille A. J'ai utilisé deux boucles FOR TO NEXT
style
For a = 1 to 10000
For b= 1 to 9800
je compare mes lignes feuille A range("a") et feuille
B range("b")et si égalité je mets une valeur dans ma
feuille A
Next b
Next a
Cela fonctionne parfaitement mais la macro dure de très
très longues heures !!!
Comment réduire la durée de cette macro ???? Merci
Bonjour LSteph,
Tu as donc donné une solution partielle à ton problème.
Le mieux est d'activer le magnétophone et d'enregistrer toutes les manip
faites à la main
- sélection de la plage de cellules
- écriture de la formule =NB.SI(Feuil2!$A$2:$A$9801;A2)
- recopie vers le bas (CtrlB ou Alt Enter en restant dans l'éditeur)
- exploiter les résultats et mettre les valeurs dans les autres cellules
- resélectionner la plage et effacer
- sélectionner A1
- après arrêt, nettoyer ou adapter la macro
En en-tête, tu peux ajouter :
Application.Calculation = xlCalculationManual ' au cas où il serait
désactivé
Application.ScreenUpdating = False 'pour accélérer un peu le
traitement
... et à la fin
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True 'nécessaire avant un Msgbox ou
un affichage de boite de dialogue par exemple
Pour traiter plusieurs milliers de lignes, j'emploie toujours en priorité
cette méthode bien plus rapide que des boucles VBA
pour les fonctions de tableur INDEX, INDEX/EQUIV, NB, NBVAL, SOMME.SI,
etc...
Cordialement
Robert Dezan
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
%23KRslq7NFHA.3296@TK2MSFTNGP15.phx.gbl...
Re,
Alors, s'il s'avère qu'il n'y a qu'une colonne de Feuil1 à comparer avec
une de Feuil2
Sans VBA cela prend quelques secondes dans la colonne adjacente cette
formule en b2 à recopier vers le bas suffirait:
=NB.SI(Feuil2!$A$2:$A$9801;A2)
lSteph
"Patrice FY" <anonymous@discussions.microsoft.com> a écrit dans le
message de news: 0b9a01c537aa$54e97080$a501280a@phx.gbl...
Bonjour,
Mon problème est le suivant:
J'ai environ 10000 lignes dans une feuille A et environ
9800 dans une feuille B. Je compare pour chaque ligne de
ma feuille A le contenu d'une cellule au contenu d'une
cellule de ma feuille B pour trouver les contenu
indentiques et mettre un e valeur dans une autre cellule
de ma feuille A. J'ai utilisé deux boucles FOR TO NEXT
style
For a = 1 to 10000
For b= 1 to 9800
je compare mes lignes feuille A range("a") et feuille
B range("b")et si égalité je mets une valeur dans ma
feuille A
Next b
Next a
Cela fonctionne parfaitement mais la macro dure de très
très longues heures !!!
Comment réduire la durée de cette macro ???? Merci
Bonjour LSteph,
Tu as donc donné une solution partielle à ton problème.
Le mieux est d'activer le magnétophone et d'enregistrer toutes les manip
faites à la main
- sélection de la plage de cellules
- écriture de la formule =NB.SI(Feuil2!$A$2:$A$9801;A2)
- recopie vers le bas (CtrlB ou Alt Enter en restant dans l'éditeur)
- exploiter les résultats et mettre les valeurs dans les autres cellules
- resélectionner la plage et effacer
- sélectionner A1
- après arrêt, nettoyer ou adapter la macro
En en-tête, tu peux ajouter :
Application.Calculation = xlCalculationManual ' au cas où il serait
désactivé
Application.ScreenUpdating = False 'pour accélérer un peu le
traitement
... et à la fin
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True 'nécessaire avant un Msgbox ou
un affichage de boite de dialogue par exemple
Pour traiter plusieurs milliers de lignes, j'emploie toujours en priorité
cette méthode bien plus rapide que des boucles VBA
pour les fonctions de tableur INDEX, INDEX/EQUIV, NB, NBVAL, SOMME.SI,
etc...
Cordialement
Robert Dezan
"LSteph" a écrit dans le message de news:
%Re,
Alors, s'il s'avère qu'il n'y a qu'une colonne de Feuil1 à comparer avec
une de Feuil2
Sans VBA cela prend quelques secondes dans la colonne adjacente cette
formule en b2 à recopier vers le bas suffirait:
=NB.SI(Feuil2!$A$2:$A$9801;A2)
lSteph
"Patrice FY" a écrit dans le
message de news: 0b9a01c537aa$54e97080$
Bonjour,
Mon problème est le suivant:
J'ai environ 10000 lignes dans une feuille A et environ
9800 dans une feuille B. Je compare pour chaque ligne de
ma feuille A le contenu d'une cellule au contenu d'une
cellule de ma feuille B pour trouver les contenu
indentiques et mettre un e valeur dans une autre cellule
de ma feuille A. J'ai utilisé deux boucles FOR TO NEXT
style
For a = 1 to 10000
For b= 1 to 9800
je compare mes lignes feuille A range("a") et feuille
B range("b")et si égalité je mets une valeur dans ma
feuille A
Next b
Next a
Cela fonctionne parfaitement mais la macro dure de très
très longues heures !!!
Comment réduire la durée de cette macro ???? Merci