lenteur dans cette macro à l'activation de la feuille
17 réponses
magic-dd
bonjour
je voulais qu'une macro s'active des l'ouverture de la feuille mais je
trouve que le code est long =E0 s'executer
pourriez vous m'aider pour rendre plus efficace l'execution svp.
car il n'y que 30 lignes environ =E0 traiter alors sur 150 j'imagine
meme pas
aussi, n'est il pas plus facile de mettre le resultat d'une formule
plutot que la formule elle meme?
merci
Private Sub Worksheet_Activate()
For i =3D 6 To 30
'copie des bases
Range("a" & i) =3D "=3DIF('SEL 100m NL H'!R[-1]C[23]<>"""",'SEL 100m NL H'!
R[-1]C[23],"""")"
'100m brasse masculin
Range("b" & i) =3D "=3DIF(ISERROR(VLOOKUP(RC[-1],'SEL 100m BR H'!
R5C24:R34C25,2,0)),"""",(VLOOKUP(RC[-1],'SEL 100m BR H'!
R5C24:R34C25,2,0)))"
Bonsoir, Inscrire par VBA une formule dans la feuille a un réel intérêt si tu as besoin que le résultat se recalcule régulièrement, avec l'inconvénient du temps que ça prends. En l'occurrence, vu le nombre de formules que tu colles via une boucle, l'ensemble du classeur est recalculé à chaque pas et ceci explique la lenteur.
Tu peux au moins passer en calcul manuel en début de procédure : Application.Calculation = xlManual
et repasser en calcul auto à la fin : Application.Calculation = xlAutomatic -- Avec plaisir http://dj.joss.free.fr/trombine.htm http://jacxl.free.fr/mpfe/trombino.html Philippe.R Pour se connecter au forum : http://www.excelabo.net/mpfe/connexion.php News://news.microsoft.com/microsoft.public.fr.excel "magic-dd" a écrit dans le message de news: bonjour
je voulais qu'une macro s'active des l'ouverture de la feuille mais je trouve que le code est long à s'executer
pourriez vous m'aider pour rendre plus efficace l'execution svp.
car il n'y que 30 lignes environ à traiter alors sur 150 j'imagine meme pas
aussi, n'est il pas plus facile de mettre le resultat d'une formule plutot que la formule elle meme?
merci
Private Sub Worksheet_Activate() For i = 6 To 30 'copie des bases Range("a" & i) = "=IF('SEL 100m NL H'!R[-1]C[23]<>"""",'SEL 100m NL H'! R[-1]C[23],"""")" '100m brasse masculin
Range("b" & i) = "=IF(ISERROR(VLOOKUP(RC[-1],'SEL 100m BR H'! R5C24:R34C25,2,0)),"""",(VLOOKUP(RC[-1],'SEL 100m BR H'! R5C24:R34C25,2,0)))"
Bonsoir,
Inscrire par VBA une formule dans la feuille a un réel intérêt si tu as
besoin que le résultat se recalcule régulièrement, avec l'inconvénient du
temps que ça prends.
En l'occurrence, vu le nombre de formules que tu colles via une boucle,
l'ensemble du classeur est recalculé à chaque pas et ceci explique la
lenteur.
Tu peux au moins passer en calcul manuel en début de procédure :
Application.Calculation = xlManual
et repasser en calcul auto à la fin :
Application.Calculation = xlAutomatic
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"magic-dd" <ciolandre@gmail.com> a écrit dans le message de
news:d531c565-9b07-4a49-899e-a7a659dad4f8@j39g2000yqn.googlegroups.com...
bonjour
je voulais qu'une macro s'active des l'ouverture de la feuille mais je
trouve que le code est long à s'executer
pourriez vous m'aider pour rendre plus efficace l'execution svp.
car il n'y que 30 lignes environ à traiter alors sur 150 j'imagine
meme pas
aussi, n'est il pas plus facile de mettre le resultat d'une formule
plutot que la formule elle meme?
merci
Private Sub Worksheet_Activate()
For i = 6 To 30
'copie des bases
Range("a" & i) = "=IF('SEL 100m NL H'!R[-1]C[23]<>"""",'SEL 100m NL H'!
R[-1]C[23],"""")"
'100m brasse masculin
Range("b" & i) = "=IF(ISERROR(VLOOKUP(RC[-1],'SEL 100m BR H'!
R5C24:R34C25,2,0)),"""",(VLOOKUP(RC[-1],'SEL 100m BR H'!
R5C24:R34C25,2,0)))"
Bonsoir, Inscrire par VBA une formule dans la feuille a un réel intérêt si tu as besoin que le résultat se recalcule régulièrement, avec l'inconvénient du temps que ça prends. En l'occurrence, vu le nombre de formules que tu colles via une boucle, l'ensemble du classeur est recalculé à chaque pas et ceci explique la lenteur.
Tu peux au moins passer en calcul manuel en début de procédure : Application.Calculation = xlManual
et repasser en calcul auto à la fin : Application.Calculation = xlAutomatic -- Avec plaisir http://dj.joss.free.fr/trombine.htm http://jacxl.free.fr/mpfe/trombino.html Philippe.R Pour se connecter au forum : http://www.excelabo.net/mpfe/connexion.php News://news.microsoft.com/microsoft.public.fr.excel "magic-dd" a écrit dans le message de news: bonjour
je voulais qu'une macro s'active des l'ouverture de la feuille mais je trouve que le code est long à s'executer
pourriez vous m'aider pour rendre plus efficace l'execution svp.
car il n'y que 30 lignes environ à traiter alors sur 150 j'imagine meme pas
aussi, n'est il pas plus facile de mettre le resultat d'une formule plutot que la formule elle meme?
merci
Private Sub Worksheet_Activate() For i = 6 To 30 'copie des bases Range("a" & i) = "=IF('SEL 100m NL H'!R[-1]C[23]<>"""",'SEL 100m NL H'! R[-1]C[23],"""")" '100m brasse masculin
Range("b" & i) = "=IF(ISERROR(VLOOKUP(RC[-1],'SEL 100m BR H'! R5C24:R34C25,2,0)),"""",(VLOOKUP(RC[-1],'SEL 100m BR H'! R5C24:R34C25,2,0)))"
Bonjour. Tu n'es pas obligé non plus de faire une boucle :
Range("A6:A30").Formula = "=IF('SEL 100m NL H'!X5<>"""",'SEL 100m NL H'!X5,"""")" etc.
Daniel
bonjour
je voulais qu'une macro s'active des l'ouverture de la feuille mais je trouve que le code est long à s'executer
pourriez vous m'aider pour rendre plus efficace l'execution svp.
car il n'y que 30 lignes environ à traiter alors sur 150 j'imagine meme pas
aussi, n'est il pas plus facile de mettre le resultat d'une formule plutot que la formule elle meme?
merci
Private Sub Worksheet_Activate() For i = 6 To 30 'copie des bases Range("a" & i) = "=IF('SEL 100m NL H'!R[-1]C[23]<>"""",'SEL 100m NL H'! R[-1]C[23],"""")" '100m brasse masculin
Range("b" & i) = "=IF(ISERROR(VLOOKUP(RC[-1],'SEL 100m BR H'! R5C24:R34C25,2,0)),"""",(VLOOKUP(RC[-1],'SEL 100m BR H'! R5C24:R34C25,2,0)))"
Bonjour.
Tu n'es pas obligé non plus de faire une boucle :
Range("A6:A30").Formula = "=IF('SEL 100m NL H'!X5<>"""",'SEL 100m NL
H'!X5,"""")"
etc.
Daniel
bonjour
je voulais qu'une macro s'active des l'ouverture de la feuille mais je
trouve que le code est long à s'executer
pourriez vous m'aider pour rendre plus efficace l'execution svp.
car il n'y que 30 lignes environ à traiter alors sur 150 j'imagine
meme pas
aussi, n'est il pas plus facile de mettre le resultat d'une formule
plutot que la formule elle meme?
merci
Private Sub Worksheet_Activate()
For i = 6 To 30
'copie des bases
Range("a" & i) = "=IF('SEL 100m NL H'!R[-1]C[23]<>"""",'SEL 100m NL H'!
R[-1]C[23],"""")"
'100m brasse masculin
Range("b" & i) = "=IF(ISERROR(VLOOKUP(RC[-1],'SEL 100m BR H'!
R5C24:R34C25,2,0)),"""",(VLOOKUP(RC[-1],'SEL 100m BR H'!
R5C24:R34C25,2,0)))"
Bonjour. Tu n'es pas obligé non plus de faire une boucle :
Range("A6:A30").Formula = "=IF('SEL 100m NL H'!X5<>"""",'SEL 100m NL H'!X5,"""")" etc.
Daniel
bonjour
je voulais qu'une macro s'active des l'ouverture de la feuille mais je trouve que le code est long à s'executer
pourriez vous m'aider pour rendre plus efficace l'execution svp.
car il n'y que 30 lignes environ à traiter alors sur 150 j'imagine meme pas
aussi, n'est il pas plus facile de mettre le resultat d'une formule plutot que la formule elle meme?
merci
Private Sub Worksheet_Activate() For i = 6 To 30 'copie des bases Range("a" & i) = "=IF('SEL 100m NL H'!R[-1]C[23]<>"""",'SEL 100m NL H'! R[-1]C[23],"""")" '100m brasse masculin
Range("b" & i) = "=IF(ISERROR(VLOOKUP(RC[-1],'SEL 100m BR H'! R5C24:R34C25,2,0)),"""",(VLOOKUP(RC[-1],'SEL 100m BR H'! R5C24:R34C25,2,0)))"
Dans ta problématique, ta variable I = 30 et non 60. Tu devras corriger !
Daniel.C
Je ne sais pas si l'on peut utiliser Evaluate avec des formules codées R1C1; un exemple pour la première ligne : Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 & "<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")") Daniel
WAOUH!!!
ca calcul plus vite d'un coup
merci pour cette astuce mais je reste persuader que l'on peut ne mettre que le resultat dans la cellule au lieu de la formule
Je ne sais pas si l'on peut utiliser Evaluate avec des formules codées
R1C1; un exemple pour la première ligne :
Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 &
"<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")")
Daniel
WAOUH!!!
ca calcul plus vite d'un coup
merci pour cette astuce mais je reste persuader que l'on peut ne
mettre que le resultat dans la cellule au lieu de la formule
Je ne sais pas si l'on peut utiliser Evaluate avec des formules codées R1C1; un exemple pour la première ligne : Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 & "<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")") Daniel
WAOUH!!!
ca calcul plus vite d'un coup
merci pour cette astuce mais je reste persuader que l'on peut ne mettre que le resultat dans la cellule au lieu de la formule
magic-dd
cela à l'air de fonctionner mais pour les autres formules, je suis in fichu de les transformer
donc merci de m'aiguiller pour les autres
On 2 avr, 21:43, Daniel.C wrote:
Je ne sais pas si l'on peut utiliser Evaluate avec des formules codées R1C1; un exemple pour la première ligne : Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 & "<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")") Daniel
> WAOUH!!!
> ca calcul plus vite d'un coup
> merci pour cette astuce mais je reste persuader que l'on peut ne > mettre que le resultat dans la cellule au lieu de la formule
cela à l'air de fonctionner mais pour les autres formules, je suis in
fichu de les transformer
donc merci de m'aiguiller pour les autres
On 2 avr, 21:43, Daniel.C <dcolardelle...@gmail.com> wrote:
Je ne sais pas si l'on peut utiliser Evaluate avec des formules codées
R1C1; un exemple pour la première ligne :
Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 &
"<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")")
Daniel
> WAOUH!!!
> ca calcul plus vite d'un coup
> merci pour cette astuce mais je reste persuader que l'on peut ne
> mettre que le resultat dans la cellule au lieu de la formule
cela à l'air de fonctionner mais pour les autres formules, je suis in fichu de les transformer
donc merci de m'aiguiller pour les autres
On 2 avr, 21:43, Daniel.C wrote:
Je ne sais pas si l'on peut utiliser Evaluate avec des formules codées R1C1; un exemple pour la première ligne : Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 & "<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")") Daniel
> WAOUH!!!
> ca calcul plus vite d'un coup
> merci pour cette astuce mais je reste persuader que l'on peut ne > mettre que le resultat dans la cellule au lieu de la formule
Daniel.C
En ajoutant les lignes accélératrices (non testé) :
Private Sub Worksheet_Activate() For i = 6 To 8 'copie des bases Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 & "<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")") '100m brasse masculin
Range("b" & i) = Evaluate("=IF(ISERROR(VLOOKUP(A" & i & ",'SEL 100m BR H'!$X$5:$Y$34,2,0)),"",(VLOOKUP(A" & i & ",'SEL 100m BR H'!$X$5:$Y$34,2,0)))")
Range("f" & i) = Evaluate("IF(ISERROR(VLOOKUP(A" & i & ",'50 m NL F'!$X$5:$Y$34,2,0)),"""",(VLOOKUP(A" & i & ",'50 m NL F'!$X$5:$Y$34,2,0)))")
Range("g" & i) = Evaluate("IF(ISERROR(COUNT($F$6:$F$30)-F" & i & "+1),"""",(COUNT($F$6:$F$30)-F" & i & "+1))")
'100 m nage libre masculin
Range("H" & i) = Evaluate("IF(ISERROR(VLOOKUP(A" & i & ",'SEL 100m NL H'!$X$5:$Y$34,2,0)),"""",(VLOOKUP(A" & i & ",'SEL 100m NL H'!$X$5:$Y$34,2,0)))")
Range("I" & i) = Evaluate("IF(ISERROR(COUNT($H$6:$H$30)-H" & i & "+1),"""",(COUNT($H$6:$H$30)-H" & i & "+1))")
Next i
End Sub
Daniel
cela à l'air de fonctionner mais pour les autres formules, je suis in fichu de les transformer
donc merci de m'aiguiller pour les autres
On 2 avr, 21:43, Daniel.C wrote:
Je ne sais pas si l'on peut utiliser Evaluate avec des formules codées R1C1; un exemple pour la première ligne : Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 & "<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")") Daniel
WAOUH!!!
ca calcul plus vite d'un coup
merci pour cette astuce mais je reste persuader que l'on peut ne mettre que le resultat dans la cellule au lieu de la formule
En ajoutant les lignes accélératrices (non testé) :
Private Sub Worksheet_Activate()
For i = 6 To 8
'copie des bases
Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 &
"<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")")
'100m brasse masculin
Range("b" & i) = Evaluate("=IF(ISERROR(VLOOKUP(A" & i & ",'SEL 100m BR
H'!$X$5:$Y$34,2,0)),"",(VLOOKUP(A" & i & ",'SEL 100m BR
H'!$X$5:$Y$34,2,0)))")
Range("f" & i) = Evaluate("IF(ISERROR(VLOOKUP(A" & i & ",'50 m NL
F'!$X$5:$Y$34,2,0)),"""",(VLOOKUP(A" & i & ",'50 m NL
F'!$X$5:$Y$34,2,0)))")
Range("g" & i) = Evaluate("IF(ISERROR(COUNT($F$6:$F$30)-F" & i &
"+1),"""",(COUNT($F$6:$F$30)-F" & i & "+1))")
'100 m nage libre masculin
Range("H" & i) = Evaluate("IF(ISERROR(VLOOKUP(A" & i & ",'SEL 100m NL
H'!$X$5:$Y$34,2,0)),"""",(VLOOKUP(A" & i & ",'SEL 100m NL
H'!$X$5:$Y$34,2,0)))")
Range("I" & i) = Evaluate("IF(ISERROR(COUNT($H$6:$H$30)-H" & i &
"+1),"""",(COUNT($H$6:$H$30)-H" & i & "+1))")
Next i
End Sub
Daniel
cela à l'air de fonctionner mais pour les autres formules, je suis in
fichu de les transformer
donc merci de m'aiguiller pour les autres
On 2 avr, 21:43, Daniel.C <dcolardelle...@gmail.com> wrote:
Je ne sais pas si l'on peut utiliser Evaluate avec des formules codées
R1C1; un exemple pour la première ligne :
Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 &
"<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")")
Daniel
WAOUH!!!
ca calcul plus vite d'un coup
merci pour cette astuce mais je reste persuader que l'on peut ne
mettre que le resultat dans la cellule au lieu de la formule
En ajoutant les lignes accélératrices (non testé) :
Private Sub Worksheet_Activate() For i = 6 To 8 'copie des bases Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 & "<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")") '100m brasse masculin
Range("b" & i) = Evaluate("=IF(ISERROR(VLOOKUP(A" & i & ",'SEL 100m BR H'!$X$5:$Y$34,2,0)),"",(VLOOKUP(A" & i & ",'SEL 100m BR H'!$X$5:$Y$34,2,0)))")
Range("f" & i) = Evaluate("IF(ISERROR(VLOOKUP(A" & i & ",'50 m NL F'!$X$5:$Y$34,2,0)),"""",(VLOOKUP(A" & i & ",'50 m NL F'!$X$5:$Y$34,2,0)))")
Range("g" & i) = Evaluate("IF(ISERROR(COUNT($F$6:$F$30)-F" & i & "+1),"""",(COUNT($F$6:$F$30)-F" & i & "+1))")
'100 m nage libre masculin
Range("H" & i) = Evaluate("IF(ISERROR(VLOOKUP(A" & i & ",'SEL 100m NL H'!$X$5:$Y$34,2,0)),"""",(VLOOKUP(A" & i & ",'SEL 100m NL H'!$X$5:$Y$34,2,0)))")
Range("I" & i) = Evaluate("IF(ISERROR(COUNT($H$6:$H$30)-H" & i & "+1),"""",(COUNT($H$6:$H$30)-H" & i & "+1))")
Next i
End Sub
Daniel
cela à l'air de fonctionner mais pour les autres formules, je suis in fichu de les transformer
donc merci de m'aiguiller pour les autres
On 2 avr, 21:43, Daniel.C wrote:
Je ne sais pas si l'on peut utiliser Evaluate avec des formules codées R1C1; un exemple pour la première ligne : Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 & "<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")") Daniel
WAOUH!!!
ca calcul plus vite d'un coup
merci pour cette astuce mais je reste persuader que l'on peut ne mettre que le resultat dans la cellule au lieu de la formule
MichDenis
La première proposition que je t'ai faite est sûrement la plus rapide... mais avec Evaluate, tu n'as pas besoin de réévaluer constamment... sinon, tu es mieux de conserver les formules.
Si cela peut de donner des idées... Difficile de tester cela...
'------------------------------------------------- Private Sub Worksheet_Activate()
Dim I As Integer
For I = 6 To 30 'copie des bases Range("a" & I).FormulaLocal = Evaluate("if('SEL 100m NL H'!X" & _ I & "<>"""",'SEL 100m NL H'!X" & I & ","""")") '100m brasse masculin
Range("b" & I).FormulaLocal = Evaluate("If(iserror(Vlookup(XFD" & I & _ ",'SEL 100m BR H'!$X$5:$Y$34,2,0)),"""",(Vlookup(XFD" _ & I & ",'SEL 100m BR H'!$X$5:$Y$34,2,0)))")
Range("c" & I) = Range("a6:A" & _ I) = Evaluate("if(iserror(Count($B$6:$B$30)-XFD" & _ I & "+1),"""",(Count($B$6:$B$30)-XFD" & I & "+1))")
'50m nl feminin
Range("f" & I) = Evaluate("if(iserror(vlooKup(XEZ" & _ I & ",'50 m NL F'!$X$5:$Y$34,2,0)),"""",(vlookup(XEZ" & _ I & ",'50 m NL F'!$X$5:$Y$34,2,0)))")
Range("g" & I) = Evaluate("if(iserror(count($F$6:$F$30)-XFD" & _ I & "+1),"""",(count($F$6:$F$30)-XFD" & I & "+1))")
'100 m nage libre masculin
Range("H" & I) = Evaluate("If(iserror(Vlookup(XEX" & _ I & ",'SEL 100m NL H'!$X$5:$Y$34,2,0)),"""",(Vlookup(XEX" & _ I & ",'SEL 100m NL H'!$X$5:$Y$34,2,0)))")
Range("I" & I) = Evaluate("if(iserror(count($H$6:$H$30)-XFD" & _ I & "+1),"""",(count($H$6:$H$30)-XFD" & I & "+1))")
Next I
End Sub '-------------------------------------------------
"magic-dd" a écrit dans le message de groupe de discussion :
cela à l'air de fonctionner mais pour les autres formules, je suis in fichu de les transformer
donc merci de m'aiguiller pour les autres
On 2 avr, 21:43, Daniel.C wrote:
Je ne sais pas si l'on peut utiliser Evaluate avec des formules codées R1C1; un exemple pour la première ligne : Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 & "<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")") Daniel
> WAOUH!!!
> ca calcul plus vite d'un coup
> merci pour cette astuce mais je reste persuader que l'on peut ne > mettre que le resultat dans la cellule au lieu de la formule
La première proposition que je t'ai faite est sûrement la
plus rapide... mais avec Evaluate, tu n'as pas besoin de
réévaluer constamment... sinon, tu es mieux de conserver
les formules.
Si cela peut de donner des idées...
Difficile de tester cela...
'-------------------------------------------------
Private Sub Worksheet_Activate()
Dim I As Integer
For I = 6 To 30
'copie des bases
Range("a" & I).FormulaLocal = Evaluate("if('SEL 100m NL H'!X" & _
I & "<>"""",'SEL 100m NL H'!X" & I & ","""")")
'100m brasse masculin
Range("b" & I).FormulaLocal = Evaluate("If(iserror(Vlookup(XFD" & I & _
",'SEL 100m BR H'!$X$5:$Y$34,2,0)),"""",(Vlookup(XFD" _
& I & ",'SEL 100m BR H'!$X$5:$Y$34,2,0)))")
Range("c" & I) = Range("a6:A" & _
I) = Evaluate("if(iserror(Count($B$6:$B$30)-XFD" & _
I & "+1),"""",(Count($B$6:$B$30)-XFD" & I & "+1))")
'50m nl feminin
Range("f" & I) = Evaluate("if(iserror(vlooKup(XEZ" & _
I & ",'50 m NL F'!$X$5:$Y$34,2,0)),"""",(vlookup(XEZ" & _
I & ",'50 m NL F'!$X$5:$Y$34,2,0)))")
Range("g" & I) = Evaluate("if(iserror(count($F$6:$F$30)-XFD" & _
I & "+1),"""",(count($F$6:$F$30)-XFD" & I & "+1))")
'100 m nage libre masculin
Range("H" & I) = Evaluate("If(iserror(Vlookup(XEX" & _
I & ",'SEL 100m NL H'!$X$5:$Y$34,2,0)),"""",(Vlookup(XEX" & _
I & ",'SEL 100m NL H'!$X$5:$Y$34,2,0)))")
Range("I" & I) = Evaluate("if(iserror(count($H$6:$H$30)-XFD" & _
I & "+1),"""",(count($H$6:$H$30)-XFD" & I & "+1))")
Next I
End Sub
'-------------------------------------------------
"magic-dd" <ciolandre@gmail.com> a écrit dans le message de groupe de discussion :
b8b0a543-47eb-4c6a-8bbd-e59b56067831@l19g2000vba.googlegroups.com...
cela à l'air de fonctionner mais pour les autres formules, je suis in
fichu de les transformer
donc merci de m'aiguiller pour les autres
On 2 avr, 21:43, Daniel.C <dcolardelle...@gmail.com> wrote:
Je ne sais pas si l'on peut utiliser Evaluate avec des formules codées
R1C1; un exemple pour la première ligne :
Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 &
"<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")")
Daniel
> WAOUH!!!
> ca calcul plus vite d'un coup
> merci pour cette astuce mais je reste persuader que l'on peut ne
> mettre que le resultat dans la cellule au lieu de la formule
La première proposition que je t'ai faite est sûrement la plus rapide... mais avec Evaluate, tu n'as pas besoin de réévaluer constamment... sinon, tu es mieux de conserver les formules.
Si cela peut de donner des idées... Difficile de tester cela...
'------------------------------------------------- Private Sub Worksheet_Activate()
Dim I As Integer
For I = 6 To 30 'copie des bases Range("a" & I).FormulaLocal = Evaluate("if('SEL 100m NL H'!X" & _ I & "<>"""",'SEL 100m NL H'!X" & I & ","""")") '100m brasse masculin
Range("b" & I).FormulaLocal = Evaluate("If(iserror(Vlookup(XFD" & I & _ ",'SEL 100m BR H'!$X$5:$Y$34,2,0)),"""",(Vlookup(XFD" _ & I & ",'SEL 100m BR H'!$X$5:$Y$34,2,0)))")
Range("c" & I) = Range("a6:A" & _ I) = Evaluate("if(iserror(Count($B$6:$B$30)-XFD" & _ I & "+1),"""",(Count($B$6:$B$30)-XFD" & I & "+1))")
'50m nl feminin
Range("f" & I) = Evaluate("if(iserror(vlooKup(XEZ" & _ I & ",'50 m NL F'!$X$5:$Y$34,2,0)),"""",(vlookup(XEZ" & _ I & ",'50 m NL F'!$X$5:$Y$34,2,0)))")
Range("g" & I) = Evaluate("if(iserror(count($F$6:$F$30)-XFD" & _ I & "+1),"""",(count($F$6:$F$30)-XFD" & I & "+1))")
'100 m nage libre masculin
Range("H" & I) = Evaluate("If(iserror(Vlookup(XEX" & _ I & ",'SEL 100m NL H'!$X$5:$Y$34,2,0)),"""",(Vlookup(XEX" & _ I & ",'SEL 100m NL H'!$X$5:$Y$34,2,0)))")
Range("I" & I) = Evaluate("if(iserror(count($H$6:$H$30)-XFD" & _ I & "+1),"""",(count($H$6:$H$30)-XFD" & I & "+1))")
Next I
End Sub '-------------------------------------------------
"magic-dd" a écrit dans le message de groupe de discussion :
cela à l'air de fonctionner mais pour les autres formules, je suis in fichu de les transformer
donc merci de m'aiguiller pour les autres
On 2 avr, 21:43, Daniel.C wrote:
Je ne sais pas si l'on peut utiliser Evaluate avec des formules codées R1C1; un exemple pour la première ligne : Range("a" & i) = Evaluate("=IF('SEL 100m NL H'!X" & i - 1 & "<>"""",'SEL 100m NL H'!X" & i - 1 & ","""")") Daniel
> WAOUH!!!
> ca calcul plus vite d'un coup
> merci pour cette astuce mais je reste persuader que l'on peut ne > mettre que le resultat dans la cellule au lieu de la formule