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

Alternative à une boucle? bonnes pratiques pour avoir des macros rapides?

5 réponses
Avatar
Uncas Cooper
Bonjour,

Je cherche à rendre plus rapide une macro d'une lenteur effarante qui
utilise actuellement une boucle.

En gros ma boucle va de cellule en cellule sur la plage "B2:Z2000" et si
la cellule est vide (test if) elle ecrit une formule dedans.

Je me demandais s'il était possible de definir une selection (B2:Z2000
dans mon cas) et en une seule fois remplir toutes les cellules vide par
la formule?

1) est ce possible dans un cas simple? par exemple ecrire toujours le
meme texte. =min($A$1) par exemple

2) est ce possible dans un cas plus complexe? par exemple = min(B1) pour
les cellules de la colonne B, min(C1) pour les cellules de la colonne C, etc



En regardant mon probleme de façon plus general quelles sont les bonnes
pratiques pour avoir des macros plus rapides? j'imagine qu'il faut
eviter des boucles? Y a-t-il des fonctions reputees lentes?

(Dans ma boucle j'utilise la methode find.)

5 réponses

Avatar
Uncas Cooper
Excusez moi fausse manip...

Bien evidemment, merci a tous pour votre aide!

Uncas



Uncas Cooper escribió:
Bonjour,

Je cherche à rendre plus rapide une macro d'une lenteur effarante qui
utilise actuellement une boucle.

En gros ma boucle va de cellule en cellule sur la plage "B2:Z2000" et si
la cellule est vide (test if) elle ecrit une formule dedans.

Je me demandais s'il était possible de definir une selection (B2:Z2000
dans mon cas) et en une seule fois remplir toutes les cellules vide par
la formule?

1) est ce possible dans un cas simple? par exemple ecrire toujours le
meme texte. =min($A$1) par exemple

2) est ce possible dans un cas plus complexe? par exemple = min(B1) pour
les cellules de la colonne B, min(C1) pour les cellules de la colonne C,
etc



En regardant mon probleme de façon plus general quelles sont les bonnes
pratiques pour avoir des macros plus rapides? j'imagine qu'il faut
eviter des boucles? Y a-t-il des fonctions reputees lentes?

(Dans ma boucle j'utilise la methode find.)


Avatar
JB
Bonsoir,

[B:B].SpecialCells(xlCellTypeBlanks).FormulaLocal = "=Min($A$1:$A$10)"

Il faut passer en calcul manuel pendant l'écriture des formules.

JB


On 27 juin, 15:56, Uncas Cooper wrote:
Bonjour,

Je cherche à rendre plus rapide une macro d'une lenteur effarante qui
utilise actuellement une boucle.

En gros ma boucle va de cellule en cellule sur la plage "B2:Z2000" et si
la cellule est vide (test if) elle ecrit une formule dedans.

Je me demandais s'il était possible de definir une selection (B2:Z2000
dans mon cas) et en une seule fois remplir toutes les cellules vide par
la formule?

1) est ce possible dans un cas simple? par exemple ecrire toujours le
meme texte. =min($A$1) par exemple

2) est ce possible dans un cas plus complexe? par exemple = min(B1) pou r
les cellules de la colonne B, min(C1) pour les cellules de la colonne C, etc

En regardant mon probleme de façon plus general quelles sont les bonnes
pratiques pour avoir des macros plus rapides? j'imagine qu'il faut
eviter des  boucles? Y a-t-il des fonctions reputees lentes?

(Dans ma boucle j'utilise la methode find.)


Avatar
Uncas Cooper
Excellent, merci beaucoup!!!


JB escribió:
Bonsoir,

[B:B].SpecialCells(xlCellTypeBlanks).FormulaLocal = "=Min($A$1:$A$10)"

Il faut passer en calcul manuel pendant l'écriture des formules.

JB


On 27 juin, 15:56, Uncas Cooper wrote:
Bonjour,

Je cherche à rendre plus rapide une macro d'une lenteur effarante qui
utilise actuellement une boucle.

En gros ma boucle va de cellule en cellule sur la plage "B2:Z2000" et si
la cellule est vide (test if) elle ecrit une formule dedans.

Je me demandais s'il était possible de definir une selection (B2:Z2000
dans mon cas) et en une seule fois remplir toutes les cellules vide par
la formule?

1) est ce possible dans un cas simple? par exemple ecrire toujours le
meme texte. =min($A$1) par exemple

2) est ce possible dans un cas plus complexe? par exemple = min(B1) pour
les cellules de la colonne B, min(C1) pour les cellules de la colonne C, etc

En regardant mon probleme de façon plus general quelles sont les bonnes
pratiques pour avoir des macros plus rapides? j'imagine qu'il faut
eviter des boucles? Y a-t-il des fonctions reputees lentes?

(Dans ma boucle j'utilise la methode find.)





Avatar
Uncas Cooper
Bonsoir JB,

Merci pour ton aide.
J'ai essayé d'adapter la ligne de code que tu donnes mais sans succes
pour l'instant:

'fonctionne
[E:E].SpecialCells(xlCellTypeBlanks).FormulaLocal = "=Min($A$1:$A$10)"

'ne fonctionne pas
[F:F].SpecialCells(xlCellTypeBlanks).FormulaLocal =
"=+VLOOKUP(RC1,Import_Fortuneo!C[-1]:C[2],4,FALSE)"

J'essaie d'utiliser la fonction VLOOKUP, sachant que idealement il
faudrait en plus que cette formule soit "flottante", j'entends par là
que si je l'ecrivais dans excel je n'utiliserais pas les "$":
ex: recherchev(A1; tableau;3;faux) et non recherchv($A$1;tableau;3;faux)

Est ce que tu peux m'aider encore un peu?

Merci!

Uncas


JB escribió:
Bonsoir,

[B:B].SpecialCells(xlCellTypeBlanks).FormulaLocal = "=Min($A$1:$A$10)"

Il faut passer en calcul manuel pendant l'écriture des formules.

JB


On 27 juin, 15:56, Uncas Cooper wrote:
Bonjour,

Je cherche à rendre plus rapide une macro d'une lenteur effarante qui
utilise actuellement une boucle.

En gros ma boucle va de cellule en cellule sur la plage "B2:Z2000" et si
la cellule est vide (test if) elle ecrit une formule dedans.

Je me demandais s'il était possible de definir une selection (B2:Z2000
dans mon cas) et en une seule fois remplir toutes les cellules vide par
la formule?

1) est ce possible dans un cas simple? par exemple ecrire toujours le
meme texte. =min($A$1) par exemple

2) est ce possible dans un cas plus complexe? par exemple = min(B1) pour
les cellules de la colonne B, min(C1) pour les cellules de la colonne C, etc

En regardant mon probleme de façon plus general quelles sont les bonnes
pratiques pour avoir des macros plus rapides? j'imagine qu'il faut
eviter des boucles? Y a-t-il des fonctions reputees lentes?

(Dans ma boucle j'utilise la methode find.)





Avatar
JB
Bonjour,

La formule est en Anglais: utiliser Formula au lieu de FormulaLocal

JB

On 27 juin, 21:51, Uncas Cooper wrote:
Bonsoir JB,

Merci pour ton aide.
J'ai essayé d'adapter la ligne de code que tu donnes mais sans succes
pour l'instant:

'fonctionne
[E:E].SpecialCells(xlCellTypeBlanks).FormulaLocal = "=Min($A$1:$A$10) "

'ne fonctionne pas
[F:F].SpecialCells(xlCellTypeBlanks).FormulaLocal =
"=+VLOOKUP(RC1,Import_Fortuneo!C[-1]:C[2],4,FALSE)"

J'essaie d'utiliser la fonction VLOOKUP, sachant que idealement il
faudrait en plus que cette formule soit "flottante", j'entends par là
que si je l'ecrivais dans excel je n'utiliserais pas les "$":
ex: recherchev(A1; tableau;3;faux) et non recherchv($A$1;tableau;3;faux)

Est ce que tu peux m'aider encore un peu?

Merci!

Uncas

JB escribió:



> Bonsoir,

> [B:B].SpecialCells(xlCellTypeBlanks).FormulaLocal = "=Min($A$1:$A$1 0)"

> Il faut passer en calcul manuel pendant  l'écriture des formules.

> JB

> On 27 juin, 15:56, Uncas Cooper wrote:
>> Bonjour,

>> Je cherche à rendre plus rapide une macro d'une lenteur effarante qu i
>> utilise actuellement une boucle.

>> En gros ma boucle va de cellule en cellule sur la plage "B2:Z2000" et si
>> la cellule est vide (test if) elle ecrit une formule dedans.

>> Je me demandais s'il était possible de definir une selection (B2:Z20 00
>> dans mon cas) et en une seule fois remplir toutes les cellules vide pa r
>> la formule?

>> 1) est ce possible dans un cas simple? par exemple ecrire toujours le
>> meme texte. =min($A$1) par exemple

>> 2) est ce possible dans un cas plus complexe? par exemple = min(B1) pour
>> les cellules de la colonne B, min(C1) pour les cellules de la colonne C, etc

>> En regardant mon probleme de façon plus general quelles sont les bon nes
>> pratiques pour avoir des macros plus rapides? j'imagine qu'il faut
>> eviter des  boucles? Y a-t-il des fonctions reputees lentes?

>> (Dans ma boucle j'utilise la methode find.)- Masquer le texte des mess ages précédents -

- Afficher le texte des messages précédents -