XL2K VBA, simplifier recherches multiples, Array?

Le
J
Bonjour à tous
Sur une page de AR colonnes, 1200 lignes, je dois faire (tous les jours,
une feuille semblable mais nouvelle) un remplacement de pleins de mots.

Je le fais comme cela :
Cells.Replace What:="technique", Replacement:="tech", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:úlse

Cela fonctionne mais c'est assez lent, et lourd.
Y aurait-il moyen de faire plus rapide, un array serait-il une solution
et comment?

Merci
@+
J@@
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jex
Le #22519391
On 30 août, 04:15, "J@@"
Bonjour à tous
Sur une page de AR colonnes, 1200 lignes, je dois faire (tous les jours,
une feuille semblable mais nouvelle) un remplacement de pleins de mots.

Je le fais comme cela :
Cells.Replace What:="technique", Replacement:="tech", LookAt:= _
   xlPart, SearchOrder:=xlByRows, MatchCase:úlse

Cela fonctionne mais c'est assez lent, et lourd.
Y aurait-il moyen de faire plus rapide, un array serait-il une solution
et comment?

Merci
@+
J@@



Bonjour,

un array peut faciliter l'écriture du code, mais pas la vitesse.
Pour la vitesse, avant les remplacements, il faut mettre
Application.ScreenUpdating = False
pour figer l'affichage, puis après les remplacements, il faut
réactiver l'affichage avec
Application.ScreenUpdating = True

Pour un code avec Array, vous pouvez adapter ceci :

Dim I As Integer
Dim A()

'Array des valeurs
A = Array(ValeurARemplacer1", "ValeurDeRemplacement1", _
"ValeurARemplacer2", "ValeurDeRemplacement2", _
"ValeurARemplacer3", "ValeurDeRemplacement3")

Application.ScreenUpdating = False 'figé
'boucle de remplacement
For I = 0 To UBound(A) Step 2
Cells.Replace What:=A(I), Replacement:=A(I + 1), LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:úlse
Next I
Application.ScreenUpdating = True

Idem pour vos questions sur les colonnes, en supprimant "Step 2" de la
boucle et en n'utilisant que A(I).

Bons tests, Jex.
J
Le #22521521
bonjour et merci pour les idées.
Je vais m'y atteler

Application.ScreenUpdating déjà fait

Cordialement
J@@

Le 29/08/2010 23:41, Jex a écrit :
On 30 août, 04:15, "J@@"
Bonjour à tous
Sur une page de AR colonnes, 1200 lignes, je dois faire (tous les jours,
une feuille semblable mais nouvelle) un remplacement de pleins de mots.

Je le fais comme cela :
Cells.Replace What:="technique", Replacement:="tech", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:úlse

Cela fonctionne mais c'est assez lent, et lourd.
Y aurait-il moyen de faire plus rapide, un array serait-il une solution
et comment?

Merci
@+
J@@



Bonjour,

un array peut faciliter l'écriture du code, mais pas la vitesse.
Pour la vitesse, avant les remplacements, il faut mettre
Application.ScreenUpdating = False
pour figer l'affichage, puis après les remplacements, il faut
réactiver l'affichage avec
Application.ScreenUpdating = True

Pour un code avec Array, vous pouvez adapter ceci :

Dim I As Integer
Dim A()

'Array des valeurs
A = Array(ValeurARemplacer1", "ValeurDeRemplacement1", _
"ValeurARemplacer2", "ValeurDeRemplacement2", _
"ValeurARemplacer3", "ValeurDeRemplacement3")

Application.ScreenUpdating = False 'figé
'boucle de remplacement
For I = 0 To UBound(A) Step 2
Cells.Replace What:=A(I), Replacement:=A(I + 1), LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:úlse
Next I
Application.ScreenUpdating = True

Idem pour vos questions sur les colonnes, en supprimant "Step 2" de la
boucle et en n'utilisant que A(I).

Bons tests, Jex.
J
Le #22523321
Impeccable, Jex
cela a bien allégé mon code.
Merci @+
J@@

Le 29/08/2010 23:41, Jex a écrit :
On 30 août, 04:15, "J@@"
Sur une page de AR colonnes, 1200 lignes, je dois faire (tous les jours,
une feuille semblable mais nouvelle) un remplacement de pleins de mots.

Je le fais comme cela :
Cells.Replace What:="technique", Replacement:="tech", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:úlse

Cela fonctionne mais c'est assez lent, et lourd.
Y aurait-il moyen de faire plus rapide, un array serait-il une solution
et comment?



Bonjour,

un array peut faciliter l'écriture du code, mais pas la vitesse.
Pour la vitesse, avant les remplacements, il faut mettre
Application.ScreenUpdating = False
pour figer l'affichage, puis après les remplacements, il faut
réactiver l'affichage avec
Application.ScreenUpdating = True

Pour un code avec Array, vous pouvez adapter ceci :

Dim I As Integer
Dim A()

'Array des valeurs
A = Array(ValeurARemplacer1", "ValeurDeRemplacement1", _
"ValeurARemplacer2", "ValeurDeRemplacement2", _
"ValeurARemplacer3", "ValeurDeRemplacement3")

Application.ScreenUpdating = False 'figé
'boucle de remplacement
For I = 0 To UBound(A) Step 2
Cells.Replace What:=A(I), Replacement:=A(I + 1), LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:úlse
Next I
Application.ScreenUpdating = True

Idem pour vos questions sur les colonnes, en supprimant "Step 2" de la
boucle et en n'utilisant que A(I).

Bons tests, Jex.
Publicité
Poster une réponse
Anonyme