bonjour
encore un petit souci,
quelle est la limite pour faire un calcul en VB ....
parce que la macro suivante donne une erreur :
Sub calculSomprod()
Range("D4").Select
ActiveCell.FormulaR1C1 = _
"=ISERROR(SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvol)*100/SUMPRODUCT(CtrlID*Ctr
lSemaines*BaseEffectifs))=TRUE """" R2C1=1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEffectifs)?R2C1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvolpH)"
End Sub
merci
bonjour
encore un petit souci,
quelle est la limite pour faire un calcul en VB ....
parce que la macro suivante donne une erreur :
Sub calculSomprod()
Range("D4").Select
ActiveCell.FormulaR1C1 = _
"=ISERROR(SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvol)*100/SUMPRODUCT(CtrlID*Ctr
lSemaines*BaseEffectifs))=TRUE """" R2C1=1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEffectifs)?R2C1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvolpH)"
End Sub
merci
bonjour
encore un petit souci,
quelle est la limite pour faire un calcul en VB ....
parce que la macro suivante donne une erreur :
Sub calculSomprod()
Range("D4").Select
ActiveCell.FormulaR1C1 = _
"=ISERROR(SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvol)*100/SUMPRODUCT(CtrlID*Ctr
lSemaines*BaseEffectifs))=TRUE """" R2C1=1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEffectifs)?R2C1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvolpH)"
End Sub
merci
Bonjour,
A part la longueur (à vérifier), il y a nettement confusion dans la
formulation.
Peux-tu nous indiquer ta formule si tu l'entres dans une feuille de
calcul ou ce que tu veux faire ?
@+
FxMbonjour
encore un petit souci,
quelle est la limite pour faire un calcul en VB ....
parce que la macro suivante donne une erreur :
Sub calculSomprod()
Range("D4").Select
ActiveCell.FormulaR1C1 = _
"=ISERROR(SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvol)*100/SUMPRODUCT(CtrlID*Ctr
lSemaines*BaseEffectifs))=TRUE """" R2C1=1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEffectifs)?R2C1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvolpH)"
End Sub
merci
Bonjour,
A part la longueur (à vérifier), il y a nettement confusion dans la
formulation.
Peux-tu nous indiquer ta formule si tu l'entres dans une feuille de
calcul ou ce que tu veux faire ?
@+
FxM
bonjour
encore un petit souci,
quelle est la limite pour faire un calcul en VB ....
parce que la macro suivante donne une erreur :
Sub calculSomprod()
Range("D4").Select
ActiveCell.FormulaR1C1 = _
"=ISERROR(SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvol)*100/SUMPRODUCT(CtrlID*Ctr
lSemaines*BaseEffectifs))=TRUE """" R2C1=1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEffectifs)?R2C1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvolpH)"
End Sub
merci
Bonjour,
A part la longueur (à vérifier), il y a nettement confusion dans la
formulation.
Peux-tu nous indiquer ta formule si tu l'entres dans une feuille de
calcul ou ce que tu veux faire ?
@+
FxMbonjour
encore un petit souci,
quelle est la limite pour faire un calcul en VB ....
parce que la macro suivante donne une erreur :
Sub calculSomprod()
Range("D4").Select
ActiveCell.FormulaR1C1 = _
"=ISERROR(SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvol)*100/SUMPRODUCT(CtrlID*Ctr
lSemaines*BaseEffectifs))=TRUE """" R2C1=1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEffectifs)?R2C1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvolpH)"
End Sub
merci
Bonjour,
A part la longueur (à vérifier), il y a nettement confusion dans la
formulation.
Peux-tu nous indiquer ta formule si tu l'entres dans une feuille de
calcul ou ce que tu veux faire ?
@+
FxMbonjour
encore un petit souci,
quelle est la limite pour faire un calcul en VB ....
parce que la macro suivante donne une erreur :
Sub calculSomprod()
Range("D4").Select
ActiveCell.FormulaR1C1 = _
"=ISERROR(SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvol)*100/SUMPRODUCT(CtrlID*Ctr
lSemaines*BaseEffectifs))=TRUE """" R2C1=1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEffectifs)?R2C1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvolpH)"
End Sub
merci
Bonjour,
A part la longueur (à vérifier), il y a nettement confusion dans la
formulation.
Peux-tu nous indiquer ta formule si tu l'entres dans une feuille de
calcul ou ce que tu veux faire ?
@+
FxM
bonjour
encore un petit souci,
quelle est la limite pour faire un calcul en VB ....
parce que la macro suivante donne une erreur :
Sub calculSomprod()
Range("D4").Select
ActiveCell.FormulaR1C1 = _
"=ISERROR(SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvol)*100/SUMPRODUCT(CtrlID*Ctr
lSemaines*BaseEffectifs))=TRUE """" R2C1=1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEffectifs)?R2C1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvolpH)"
End Sub
merci
Bonjour,
A part la longueur (à vérifier), il y a nettement confusion dans la
formulation.
Peux-tu nous indiquer ta formule si tu l'entres dans une feuille de
calcul ou ce que tu veux faire ?
@+
FxMbonjour
encore un petit souci,
quelle est la limite pour faire un calcul en VB ....
parce que la macro suivante donne une erreur :
Sub calculSomprod()
Range("D4").Select
ActiveCell.FormulaR1C1 = _
"=ISERROR(SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvol)*100/SUMPRODUCT(CtrlID*Ctr
lSemaines*BaseEffectifs))=TRUE """" R2C1=1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEffectifs)?R2C1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvolpH)"
End Sub
merci
Bonjour Rhodan,
Je te propose quelque chose ...je ne l'ai jamais essayé à proprement
parler ... mais...
Dans une procédure :
Sub TransFormerUneFormuleEnVBA()
Dim A As String
' Remplace A1 par l'adresse de la cellule contenant la formule
A = Range("A1").Formula
'Dans une cellule quelconque de ta feuille
'Applique le format texte à la cellule
Range("B2").NumberFormat = "@"
'copie ta formule dans la cellule
'observe bien, toutes tes fonctions sont traduites en Anglais et les
point-virgules entre les arguments ont été
remplacés par des virgules.
Range("B2") = A
Si tu sélectionnes le contenu de cette cellule et que tu retournes en VBA
et que tu places cette formule entre Crochets
droits, tu devrais normalement obtenir le résultat directement dans une
variable en VBA, il ne te reste plus qu'à
renseigner cette fois la bonne cellule et d'effacer le contenu de la
cellule B2 et son format
Exemple simple : J'ai dans A1 ceci : =SI(C1="";D1;E1*F1)
A = Range("A1").Formula
En A(la variable) j'obtiens : =IF(C1="",D1,E1*F1)
Attribue le contenu de la variable en B2
B2 = =IF(C1="",D1,E1*F1)
Après avoir copié le contenu de B2 dans le presse-papier
je retourne en VBA et le copie entre Crochet droit,
tu vas obtenir la bonne syntaxe ...
Le résultat de la formule va être obtenu directement dans ta variable à
l'exécution de ta procédure.
Résultat = [=IF(C1="",D1,E1*F1)]
Range("G1") = Résultat
Tu effaces les opérations préliminaires et tu obtiens ce que tu souhaitais
!
Salutations!
"Rhodan" a écrit dans le message de
news:40c33b2c$0$25503$
euh
le but de la formule est de calculer le % d'objets répondant à certaines
conditions....d'ou le sommeprod. à l'origine un TCD gérait cette histoire
mais
le nombre de TCD dans le classeur augmentaient sa taille (+15Mo) donc j'ai
transformé le TCD avec des sommeprod mais là le temps de calcul est devenu
insupportable (pls seconde à chaque clic sur le classeur) donc ...j'y
viens
je compte mettre la formule dans une macro ...qui lorsque le calcul sera
demandé avec des listbox pour définir les conditions, le formule sera
copié
dans la première cellule et etiré sur la plage désirée...
puis un petit copié/collage spéciale pour retirer ce sommeprod trop lent
et
ne garde que des valeurs.
=SI(ESTERREUR(SOMMEPROD(CtrlID*CtrlSemaines*BaseEvol)*100/SOMMEPROD(CtrlID*C
trlSemaines*BaseEffectifs))=VRAI;"";SI($A$2=1;SOMMEPROD(CtrlID*CtrlSemaines*
BaseEffectifs);SI($A$2;SOMMEPRODCtrlID*CtrlSemaines*BaseEvolpH)/
SOMMEPROD(CtrlID*CtrlSemaines*BaseEffectifs);SOMMEPROD(CtrlID*CtrlSemaines*B
aseEvol)*100/SOMMEPROD(CtrlID*CtrlSemaines*BaseEffectifs))))
mais bon je pense avoir trouvé la solution , la formule est dans une
cellule
et via une macro je la copie, étire la sélection et fait le copie/collage
spéciale valeur. c'est plus simple
"FxM" a écrit dans le message de
news:%Bonjour,
A part la longueur (à vérifier), il y a nettement confusion dans la
formulation.
Peux-tu nous indiquer ta formule si tu l'entres dans une feuille de
calcul ou ce que tu veux faire ?
@+
FxMbonjour
encore un petit souci,
quelle est la limite pour faire un calcul en VB ....
parce que la macro suivante donne une erreur :
Sub calculSomprod()
Range("D4").Select
ActiveCell.FormulaR1C1 = _
"=ISERROR(SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvol)*100/SUMPRODUCT(CtrlID*Ctr
lSemaines*BaseEffectifs))=TRUE """" R2C1=1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEffectifs)?R2C1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvolpH)"
End Sub
merci
Bonjour Rhodan,
Je te propose quelque chose ...je ne l'ai jamais essayé à proprement
parler ... mais...
Dans une procédure :
Sub TransFormerUneFormuleEnVBA()
Dim A As String
' Remplace A1 par l'adresse de la cellule contenant la formule
A = Range("A1").Formula
'Dans une cellule quelconque de ta feuille
'Applique le format texte à la cellule
Range("B2").NumberFormat = "@"
'copie ta formule dans la cellule
'observe bien, toutes tes fonctions sont traduites en Anglais et les
point-virgules entre les arguments ont été
remplacés par des virgules.
Range("B2") = A
Si tu sélectionnes le contenu de cette cellule et que tu retournes en VBA
et que tu places cette formule entre Crochets
droits, tu devrais normalement obtenir le résultat directement dans une
variable en VBA, il ne te reste plus qu'à
renseigner cette fois la bonne cellule et d'effacer le contenu de la
cellule B2 et son format
Exemple simple : J'ai dans A1 ceci : =SI(C1="";D1;E1*F1)
A = Range("A1").Formula
En A(la variable) j'obtiens : =IF(C1="",D1,E1*F1)
Attribue le contenu de la variable en B2
B2 = =IF(C1="",D1,E1*F1)
Après avoir copié le contenu de B2 dans le presse-papier
je retourne en VBA et le copie entre Crochet droit,
tu vas obtenir la bonne syntaxe ...
Le résultat de la formule va être obtenu directement dans ta variable à
l'exécution de ta procédure.
Résultat = [=IF(C1="",D1,E1*F1)]
Range("G1") = Résultat
Tu effaces les opérations préliminaires et tu obtiens ce que tu souhaitais
!
Salutations!
"Rhodan" <les.figwer@free.fr> a écrit dans le message de
news:40c33b2c$0$25503$626a14ce@news.free.fr...
euh
le but de la formule est de calculer le % d'objets répondant à certaines
conditions....d'ou le sommeprod. à l'origine un TCD gérait cette histoire
mais
le nombre de TCD dans le classeur augmentaient sa taille (+15Mo) donc j'ai
transformé le TCD avec des sommeprod mais là le temps de calcul est devenu
insupportable (pls seconde à chaque clic sur le classeur) donc ...j'y
viens
je compte mettre la formule dans une macro ...qui lorsque le calcul sera
demandé avec des listbox pour définir les conditions, le formule sera
copié
dans la première cellule et etiré sur la plage désirée...
puis un petit copié/collage spéciale pour retirer ce sommeprod trop lent
et
ne garde que des valeurs.
=SI(ESTERREUR(SOMMEPROD(CtrlID*CtrlSemaines*BaseEvol)*100/SOMMEPROD(CtrlID*C
trlSemaines*BaseEffectifs))=VRAI;"";SI($A$2=1;SOMMEPROD(CtrlID*CtrlSemaines*
BaseEffectifs);SI($A$2;SOMMEPRODCtrlID*CtrlSemaines*BaseEvolpH)/
SOMMEPROD(CtrlID*CtrlSemaines*BaseEffectifs);SOMMEPROD(CtrlID*CtrlSemaines*B
aseEvol)*100/SOMMEPROD(CtrlID*CtrlSemaines*BaseEffectifs))))
mais bon je pense avoir trouvé la solution , la formule est dans une
cellule
et via une macro je la copie, étire la sélection et fait le copie/collage
spéciale valeur. c'est plus simple
"FxM" <fxmanceaux@chello.fr> a écrit dans le message de
news:%233IRGj9SEHA.3140@tk2msftngp13.phx.gbl...
Bonjour,
A part la longueur (à vérifier), il y a nettement confusion dans la
formulation.
Peux-tu nous indiquer ta formule si tu l'entres dans une feuille de
calcul ou ce que tu veux faire ?
@+
FxM
bonjour
encore un petit souci,
quelle est la limite pour faire un calcul en VB ....
parce que la macro suivante donne une erreur :
Sub calculSomprod()
Range("D4").Select
ActiveCell.FormulaR1C1 = _
"=ISERROR(SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvol)*100/SUMPRODUCT(CtrlID*Ctr
lSemaines*BaseEffectifs))=TRUE """" R2C1=1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEffectifs)?R2C1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvolpH)"
End Sub
merci
Bonjour Rhodan,
Je te propose quelque chose ...je ne l'ai jamais essayé à proprement
parler ... mais...
Dans une procédure :
Sub TransFormerUneFormuleEnVBA()
Dim A As String
' Remplace A1 par l'adresse de la cellule contenant la formule
A = Range("A1").Formula
'Dans une cellule quelconque de ta feuille
'Applique le format texte à la cellule
Range("B2").NumberFormat = "@"
'copie ta formule dans la cellule
'observe bien, toutes tes fonctions sont traduites en Anglais et les
point-virgules entre les arguments ont été
remplacés par des virgules.
Range("B2") = A
Si tu sélectionnes le contenu de cette cellule et que tu retournes en VBA
et que tu places cette formule entre Crochets
droits, tu devrais normalement obtenir le résultat directement dans une
variable en VBA, il ne te reste plus qu'à
renseigner cette fois la bonne cellule et d'effacer le contenu de la
cellule B2 et son format
Exemple simple : J'ai dans A1 ceci : =SI(C1="";D1;E1*F1)
A = Range("A1").Formula
En A(la variable) j'obtiens : =IF(C1="",D1,E1*F1)
Attribue le contenu de la variable en B2
B2 = =IF(C1="",D1,E1*F1)
Après avoir copié le contenu de B2 dans le presse-papier
je retourne en VBA et le copie entre Crochet droit,
tu vas obtenir la bonne syntaxe ...
Le résultat de la formule va être obtenu directement dans ta variable à
l'exécution de ta procédure.
Résultat = [=IF(C1="",D1,E1*F1)]
Range("G1") = Résultat
Tu effaces les opérations préliminaires et tu obtiens ce que tu souhaitais
!
Salutations!
"Rhodan" a écrit dans le message de
news:40c33b2c$0$25503$
euh
le but de la formule est de calculer le % d'objets répondant à certaines
conditions....d'ou le sommeprod. à l'origine un TCD gérait cette histoire
mais
le nombre de TCD dans le classeur augmentaient sa taille (+15Mo) donc j'ai
transformé le TCD avec des sommeprod mais là le temps de calcul est devenu
insupportable (pls seconde à chaque clic sur le classeur) donc ...j'y
viens
je compte mettre la formule dans une macro ...qui lorsque le calcul sera
demandé avec des listbox pour définir les conditions, le formule sera
copié
dans la première cellule et etiré sur la plage désirée...
puis un petit copié/collage spéciale pour retirer ce sommeprod trop lent
et
ne garde que des valeurs.
=SI(ESTERREUR(SOMMEPROD(CtrlID*CtrlSemaines*BaseEvol)*100/SOMMEPROD(CtrlID*C
trlSemaines*BaseEffectifs))=VRAI;"";SI($A$2=1;SOMMEPROD(CtrlID*CtrlSemaines*
BaseEffectifs);SI($A$2;SOMMEPRODCtrlID*CtrlSemaines*BaseEvolpH)/
SOMMEPROD(CtrlID*CtrlSemaines*BaseEffectifs);SOMMEPROD(CtrlID*CtrlSemaines*B
aseEvol)*100/SOMMEPROD(CtrlID*CtrlSemaines*BaseEffectifs))))
mais bon je pense avoir trouvé la solution , la formule est dans une
cellule
et via une macro je la copie, étire la sélection et fait le copie/collage
spéciale valeur. c'est plus simple
"FxM" a écrit dans le message de
news:%Bonjour,
A part la longueur (à vérifier), il y a nettement confusion dans la
formulation.
Peux-tu nous indiquer ta formule si tu l'entres dans une feuille de
calcul ou ce que tu veux faire ?
@+
FxMbonjour
encore un petit souci,
quelle est la limite pour faire un calcul en VB ....
parce que la macro suivante donne une erreur :
Sub calculSomprod()
Range("D4").Select
ActiveCell.FormulaR1C1 = _
"=ISERROR(SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvol)*100/SUMPRODUCT(CtrlID*Ctr
lSemaines*BaseEffectifs))=TRUE """" R2C1=1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEffectifs)?R2C1
SUMPRODUCT(CtrlID*CtrlSemaines*BaseEvolpH)"
End Sub
merci