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

Le
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.)
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
Uncas Cooper
Le #9700341
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.)


JB
Le #9737441
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
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.)


Uncas Cooper
Le #9740451
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
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.)





Uncas Cooper
Le #9770021
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
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.)





JB
Le #10404701
Bonjour,

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

JB

On 27 juin, 21:51, 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$1 0)"

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

> JB

> On 27 juin, 15:56, Uncas Cooper >> 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 -


Publicité
Poster une réponse
Anonyme