OVH Cloud OVH Cloud

vba, langage interprété ?

11 réponses
Avatar
pierref
bonjour,=20

simple question : je me demande si le vba sous excel est=20
un langage compil=E9 ou intrepr=E9t=E9 ?

en fait, j'ai un prog qui tourne sous excel avec des=20
donn=E9es dans les feuilles.
Malheureusement, il prend un tps fous genre 25 min parce=20
que jai des boucles qui le font mouliner tres longtemps.

Je me demandais donc si en mettant mon prog en c++ ou java=20
ou autre, mon prog tournerai plus vite.

D'ou ma question...

Merci de m'apporter de l aide et si vous avez une solution=20
pour que mon prog puisse aller plus vite ce serait genial.

A+

10 réponses

1 2
Avatar
FxM
Bonsoir,

Sans avoir lu de code, il n'est pas évident de te dire si oui ou non
complier fera aller plus vite (à priori oui mais ...)

Par contre l'expérience a montré que les actions liées au recalcul ou
à l'affichage prennent normément de temps. Si tu ajoutes des commandes
comme :
application.screenupdating = false
application.calculation = xlmanual
en début de code, ca va améliorer les choses.
Pour forcer un recalcul :
application.calculate ou application.calculatefull

Pour réactiver le calcul auto :
applicatiopn.calculation = xlautomatic

Pour réactiver l'affichage :
application.screenupdating = true.

@+
FxM



pierref wrote:

bonjour,

simple question : je me demande si le vba sous excel est
un langage compilé ou intreprété ?

en fait, j'ai un prog qui tourne sous excel avec des
données dans les feuilles.
Malheureusement, il prend un tps fous genre 25 min parce
que jai des boucles qui le font mouliner tres longtemps.

Je me demandais donc si en mettant mon prog en c++ ou java
ou autre, mon prog tournerai plus vite.

D'ou ma question...

Merci de m'apporter de l aide et si vous avez une solution
pour que mon prog puisse aller plus vite ce serait genial.

A+


Avatar
FxM
Eh ben que de fautes, François !

complier -> compiler
normément -> énormément
applicatiopn.calculation -> application.(etc)


@+
FxM



FxM wrote:

Bonsoir,

Sans avoir lu de code, il n'est pas évident de te dire si oui ou non
complier fera aller plus vite (à priori oui mais ...)

Par contre l'expérience a montré que les actions liées au recalcul ou à
l'affichage prennent normément de temps. Si tu ajoutes des commandes
comme :
application.screenupdating = false
application.calculation = xlmanual
en début de code, ca va améliorer les choses.
Pour forcer un recalcul :
application.calculate ou application.calculatefull

Pour réactiver le calcul auto :
applicatiopn.calculation = xlautomatic

Pour réactiver l'affichage :
application.screenupdating = true.

@+
FxM



pierref wrote:

bonjour,
simple question : je me demande si le vba sous excel est un langage
compilé ou intreprété ?

en fait, j'ai un prog qui tourne sous excel avec des données dans les
feuilles.
Malheureusement, il prend un tps fous genre 25 min parce que jai des
boucles qui le font mouliner tres longtemps.

Je me demandais donc si en mettant mon prog en c++ ou java ou autre,
mon prog tournerai plus vite.

D'ou ma question...

Merci de m'apporter de l aide et si vous avez une solution pour que
mon prog puisse aller plus vite ce serait genial.

A+






Avatar
Daniel.M
Salut Pierre,

Ce qui tourne n'est pas du langage machine au sens où les vrais compilateurs
(C++, C#, Pascal) en produisent (Je n'incluerais pas Java là-dedans).

L'instruction Compile de VBA produit du pcode, donc du code où les instructions
(#IF) de pré-compilation ont été réalisées et où le code est expurgé des
commentaires.

Si tu publiais la partie critique (i.e. lente) de ta macro, on pourrait essayer
de l'optimiser. Tout d'un coup qu'on réussirait ;-)

Salutations,

Daniel M.

"pierref" wrote in message
news:110e01c3be74$e31eb4b0$
bonjour,

simple question : je me demande si le vba sous excel est
un langage compilé ou intreprété ?

en fait, j'ai un prog qui tourne sous excel avec des
données dans les feuilles.
Malheureusement, il prend un tps fous genre 25 min parce
que jai des boucles qui le font mouliner tres longtemps.

Je me demandais donc si en mettant mon prog en c++ ou java
ou autre, mon prog tournerai plus vite.

D'ou ma question...

Merci de m'apporter de l aide et si vous avez une solution
pour que mon prog puisse aller plus vite ce serait genial.

A+
Avatar
sabatier
complier, oui, mais con plié, pas forcément...tu sais, françois, y en a des
gens qui se penchent, ne serait-ce que les politiques lorsqu'ils se murmurent
des choses à l'oreille....
jps

FxM wrote:

Eh ben que de fautes, François !

complier -> compiler
normément -> énormément
applicatiopn.calculation -> application.(etc)


@+
FxM

FxM wrote:

Bonsoir,

Sans avoir lu de code, il n'est pas évident de te dire si oui ou non
complier fera aller plus vite (à priori oui mais ...)

Par contre l'expérience a montré que les actions liées au recalcul ou à
l'affichage prennent normément de temps. Si tu ajoutes des commandes
comme :
application.screenupdating = false
application.calculation = xlmanual
en début de code, ca va améliorer les choses.
Pour forcer un recalcul :
application.calculate ou application.calculatefull

Pour réactiver le calcul auto :
applicatiopn.calculation = xlautomatic

Pour réactiver l'affichage :
application.screenupdating = true.

@+
FxM



pierref wrote:

bonjour,
simple question : je me demande si le vba sous excel est un langage
compilé ou intreprété ?

en fait, j'ai un prog qui tourne sous excel avec des données dans les
feuilles.
Malheureusement, il prend un tps fous genre 25 min parce que jai des
boucles qui le font mouliner tres longtemps.

Je me demandais donc si en mettant mon prog en c++ ou java ou autre,
mon prog tournerai plus vite.

D'ou ma question...

Merci de m'apporter de l aide et si vous avez une solution pour que
mon prog puisse aller plus vite ce serait genial.

A+








Avatar
pierref
salut

Je te remercie de m'avoir repondu mais a vrai dire
j'utilise deja les instructions que tu cites.

En fait je pense que mon code est quasi optimisé en vba
mais ca prend qd meme tres longtemps a cause de boucles.
(je sors plusieurs serie de chiffres, chacune selon pleins
de criteres donc ca boucle longtemps tant que les criteres
ne sont pas respectés)

Bref, j'optimise, j'optimise mais je gagne 30 sec sur 25
min alors que j'espererais gagner 10 min en passant ca en
langage compilé.

Mais 2 questions
1) vais-je vraiment gagner du temps ?
2) quelle langage utilisé ?(je pense c++ ou java mais
lequelle tournera le mieux ?)

merci pout tout

pierre

-----Message d'origine-----
Bonsoir,

Sans avoir lu de code, il n'est pas évident de te dire si
oui ou non

complier fera aller plus vite (à priori oui mais ...)

Par contre l'expérience a montré que les actions liées au
recalcul ou

à l'affichage prennent normément de temps. Si tu ajoutes
des commandes

comme :
application.screenupdating = false
application.calculation = xlmanual
en début de code, ca va améliorer les choses.
Pour forcer un recalcul :
application.calculate ou application.calculatefull

Pour réactiver le calcul auto :
applicatiopn.calculation = xlautomatic

Pour réactiver l'affichage :
application.screenupdating = true.

@+
FxM



pierref wrote:

bonjour,

simple question : je me demande si le vba sous excel
est


un langage compilé ou intreprété ?

en fait, j'ai un prog qui tourne sous excel avec des
données dans les feuilles.
Malheureusement, il prend un tps fous genre 25 min
parce


que jai des boucles qui le font mouliner tres longtemps.

Je me demandais donc si en mettant mon prog en c++ ou
java


ou autre, mon prog tournerai plus vite.

D'ou ma question...

Merci de m'apporter de l aide et si vous avez une
solution


pour que mon prog puisse aller plus vite ce serait
genial.



A+


.




Avatar
salut

Je te remercie pour les explications.

En fait je pense que mon code est quasi optimisé en vba
mais ca prend qd meme tres longtemps a cause de boucles.
(je sors plusieurs serie de chiffres, chacune selon pleins
de criteres donc ca boucle longtemps tant que les criteres
ne sont pas respectés)

Bref, j'essaie d'optimiser depuis un moment mais je gagne
30 sec sur 25 min alors que j'espererais gagner 10 min en
passant ca en langage compilé.

Mais 2 questions
1) vais-je vraiment gagner du temps ?
2) quelle langage utilisé ?(je pense c++ ou java mais
lequelle tournera le mieux ?)

merci pout tout

pierre

-----Message d'origine-----
Salut Pierre,

Ce qui tourne n'est pas du langage machine au sens où les
vrais compilateurs

(C++, C#, Pascal) en produisent (Je n'incluerais pas Java
là-dedans).


L'instruction Compile de VBA produit du pcode, donc du
code où les instructions

(#IF) de pré-compilation ont été réalisées et où le code
est expurgé des

commentaires.

Si tu publiais la partie critique (i.e. lente) de ta
macro, on pourrait essayer

de l'optimiser. Tout d'un coup qu'on réussirait ;-)

Salutations,

Daniel M.

"pierref" wrote in
message

news:110e01c3be74$e31eb4b0$
bonjour,

simple question : je me demande si le vba sous excel est
un langage compilé ou intreprété ?

en fait, j'ai un prog qui tourne sous excel avec des
données dans les feuilles.
Malheureusement, il prend un tps fous genre 25 min parce
que jai des boucles qui le font mouliner tres longtemps.

Je me demandais donc si en mettant mon prog en c++ ou java
ou autre, mon prog tournerai plus vite.

D'ou ma question...

Merci de m'apporter de l aide et si vous avez une solution
pour que mon prog puisse aller plus vite ce serait genial.

A+


.



Avatar
Denis Michon
Bonjour Pierre,

Tu devrais accepter l'offre de Daniel et expliquer le traitement désiré et le résultat attendu en publiant ton code. Tu
pourrais être surpris par l'ingéniosité des réponses !

Si tu tiens à résoudre ton problème avec un autre langage de programmation... tes chances d'obtenir des suggestions sont très
restreintes.


Salutations!



a écrit dans le message de news:0a8501c3bf01$ac8a1970$
salut

Je te remercie pour les explications.

En fait je pense que mon code est quasi optimisé en vba
mais ca prend qd meme tres longtemps a cause de boucles.
(je sors plusieurs serie de chiffres, chacune selon pleins
de criteres donc ca boucle longtemps tant que les criteres
ne sont pas respectés)

Bref, j'essaie d'optimiser depuis un moment mais je gagne
30 sec sur 25 min alors que j'espererais gagner 10 min en
passant ca en langage compilé.

Mais 2 questions
1) vais-je vraiment gagner du temps ?
2) quelle langage utilisé ?(je pense c++ ou java mais
lequelle tournera le mieux ?)

merci pout tout

pierre

-----Message d'origine-----
Salut Pierre,

Ce qui tourne n'est pas du langage machine au sens où les
vrais compilateurs

(C++, C#, Pascal) en produisent (Je n'incluerais pas Java
là-dedans).


L'instruction Compile de VBA produit du pcode, donc du
code où les instructions

(#IF) de pré-compilation ont été réalisées et où le code
est expurgé des

commentaires.

Si tu publiais la partie critique (i.e. lente) de ta
macro, on pourrait essayer

de l'optimiser. Tout d'un coup qu'on réussirait ;-)

Salutations,

Daniel M.

"pierref" wrote in
message

news:110e01c3be74$e31eb4b0$
bonjour,

simple question : je me demande si le vba sous excel est
un langage compilé ou intreprété ?

en fait, j'ai un prog qui tourne sous excel avec des
données dans les feuilles.
Malheureusement, il prend un tps fous genre 25 min parce
que jai des boucles qui le font mouliner tres longtemps.

Je me demandais donc si en mettant mon prog en c++ ou java
ou autre, mon prog tournerai plus vite.

D'ou ma question...

Merci de m'apporter de l aide et si vous avez une solution
pour que mon prog puisse aller plus vite ce serait genial.

A+


.



Avatar
Daniel.M
Salut Pierre,

Mais 2 questions
1) vais-je vraiment gagner du temps ?
2) quelle langage utilisé ?(je pense c++ ou java mais
lequelle tournera le mieux ?)


Oui, en choisissant un langage compilé, tu risques de gagner du temps. Mais dans
la même foulée que Denis, je réitère mon offre (à laquelle plusieurs se
joindront ici, j'en suis convaincu).

Quant à C++ ou Java, pour produire le code le plus rapide (ce qui est ton
critère principal), il n'y a pas de doutes que C++ va gagner. Et, dans la même
veine, pourquoi pas C (produisant une XLL). C'est une vieille interface mais
elle est directe avec Excel et les performances sont là
(http://longre.free.fr/pages/prog/api-c.htm)!

Salutations,

Daniel M.

Avatar
pierref
Merci beaucoup pour tout ces conseils !

Je vous remercie de proposer de m'aider.
Dans un premier temps, je vais qd meme essayer d'optimiser
mon code du coté acces aux feuilles excel. Je vais creer
des tableaux dans mes methodes aux lieux d'utiliser ceux
des feuilles (le code d'origine n'est pas de moi...je l'ai
optimisé mais il se sert encore bcp trop des feuilles)

Si ca ne tourne tjs pas a une vitesse correcte, je vous
recontacterai surement.

En tout cas merci et je vais egalement regarder l'api-c
qui pourra m'etre utile.

++

pierre


-----Message d'origine-----
Salut Pierre,

Mais 2 questions
1) vais-je vraiment gagner du temps ?
2) quelle langage utilisé ?(je pense c++ ou java mais
lequelle tournera le mieux ?)


Oui, en choisissant un langage compilé, tu risques de
gagner du temps. Mais dans

la même foulée que Denis, je réitère mon offre (à
laquelle plusieurs se

joindront ici, j'en suis convaincu).

Quant à C++ ou Java, pour produire le code le plus rapide
(ce qui est ton

critère principal), il n'y a pas de doutes que C++ va
gagner. Et, dans la même

veine, pourquoi pas C (produisant une XLL). C'est une
vieille interface mais

elle est directe avec Excel et les performances sont là
(http://longre.free.fr/pages/prog/api-c.htm)!

Salutations,

Daniel M.


.




Avatar
Daniel.M
Pierre,

Si tu fais des recherches en vérifiant le contenu des cellules UNE à UNE (par
des boucle), déjà là, il y a matière à optimiser (Application.Match() et
autres).

C'est vrai que ça va un peu plus vite en consultant des tableaux plutôt que des
plages mais quand on a 25 minutes de traitement, le problème si situe plus au
niveau du nombre de comparaisons effectuées (que celles-ci aient lieu sur des
plages ou des tableaux en mémoire importe moins). Il faut quand même pas oublier
que les cellules sont mises en mémoire vive également (les accès sont
ultra-rapides là aussi).

En tout cas, rapplique ici si tu veux de l'aide. :-)

Salutations,

Daniel M.


"pierref" wrote in message
news:065001c3bf2d$cc6ee8c0$
Merci beaucoup pour tout ces conseils !

Je vous remercie de proposer de m'aider.
Dans un premier temps, je vais qd meme essayer d'optimiser
mon code du coté acces aux feuilles excel. Je vais creer
des tableaux dans mes methodes aux lieux d'utiliser ceux
des feuilles (le code d'origine n'est pas de moi...je l'ai
optimisé mais il se sert encore bcp trop des feuilles)

Si ca ne tourne tjs pas a une vitesse correcte, je vous
recontacterai surement.

En tout cas merci et je vais egalement regarder l'api-c
qui pourra m'etre utile.

++

pierre


-----Message d'origine-----
Salut Pierre,

Mais 2 questions
1) vais-je vraiment gagner du temps ?
2) quelle langage utilisé ?(je pense c++ ou java mais
lequelle tournera le mieux ?)


Oui, en choisissant un langage compilé, tu risques de
gagner du temps. Mais dans

la même foulée que Denis, je réitère mon offre (à
laquelle plusieurs se

joindront ici, j'en suis convaincu).

Quant à C++ ou Java, pour produire le code le plus rapide
(ce qui est ton

critère principal), il n'y a pas de doutes que C++ va
gagner. Et, dans la même

veine, pourquoi pas C (produisant une XLL). C'est une
vieille interface mais

elle est directe avec Excel et les performances sont là
(http://longre.free.fr/pages/prog/api-c.htm)!

Salutations,

Daniel M.


.




1 2