Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

XL2K VBA, simplifier recherches multiples, Array?

3 réponses
Avatar
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:=False

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@@

3 réponses

Avatar
Jex
On 30 août, 04:15, "J@@" wrote:
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.
Avatar
J
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@@" wrote:
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.
Avatar
J
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.