VBA - Comment lancer un nouveau thread ?

Bonjour,

J’ai un formulaire en VBA et j’aimerais lancer en “tache de fond” un programme dans un thread différent pour ne pas bloquer l’utilisation du formulaire…
Le but est que l’utilisateur puisse continuer à utiliser le formulaire pendant que l’application lancée tourne: je pensais donc à lancer l’application dans un nouveau thread mais je ne trouve aucune info là-dessus sur le net (ou plutôt plusieurs personnes pensent que ce n’est pas possible)

—> est ce que qq’un sait si on peux lancer un thread avec VBA?
—> qq’un aurait-il une solution (autre que lancer un nouveau thread) à mon pb?

Merci d’avance!

Hebus
Edité le 03/01/2008 à 12:00

en vba impossible…
tu pourras trouver des “bidouilles”, mais ce ne sera que des bidouilles… (avec un risque de plantage)

Visual C++ la seule soluce… et encore, car:

Un thread, est similaire à un processus (déclenchement des antivirus, etc…)

a+

VBA 6.3 supporte les threads nativement.
Apres, il te reste toujours la possibilité d’utiliser les API (CreateThread).

Oui, mais nativement

et pour lancer une appli “indépendante” en tache de fond, désolé mais en vb c’est lourd

ex: pour faire simple: essai de lancer un chrono sous vb et tu m’en diras des nouvelles…

sans un timer ou un doevents c’est impossible, et là “ca rame”.

a+

J’ai été élevé au grain donc avec les API, un timer en vb, je l’ai toujours fait avec SetTimer et le WndProc qui va bien qui va traiter le message WM_TIMER. :wink:
Edité le 22/12/2007 à 21:33

Ravi pour Toi.
Mais je persiste et signe qu’un Thread sous VB c’est vouloir équiper un 2 CV avec un V8 et la faire disputer une course en GT…

Je suis d’accord avec Toi, excel aussi te permets de faire des appli en tache de fond

Mais pour notre poster (qu’on oubli un peu), la demande est de savoir s’il peut lancer un tache de fond
sur son formulaire tout en ne bloquant pas le ou les utilisateurs en VBA.

en toute simplicité, je réponds Non, car il à de grande chance d’avoir des plantages…car dans VB il faut des “timer” en pacaille,
contrairement a c++

Salutations

Je ne connais pas suffisamment le VBA mais en VB, nul besoin d’utiliser un timer pour créer une thread, ça fonctionnait sans le moindre problème et sans aucun plantage.

Merci pour vos réponses!
KarlKox: pourrais-tu me donner qqs lignes de codes pour créer un thread? J’utilise VBA 6.3 donc ça devrait être simple mais je n’ai rien trouver…
vyger: tu as 100% raison, mais je ne peux pas faire autrement qu’en VBA pour l’instant. :frowning:

Hebus

Je connais via les Api, il suffit d’utiliser CreateThread et de passer l’addressof de ta fonction à threader, ne pas oublier un TerminateThread en quittant.
Regarde dans la doc les fonctions natives, je pense que ce serait plus efficace et plus stable.

KarlKox: encore une fois, merci. :wink:
J’essaierais tout cela à mon retour de vacances en 2008 et vous tiens au courant. Grâce à tes noms de fonctions, j’ai trouvé qqs sites qui en parlent (http://www.developpez.net/forums/showthread.php?t=56512)

Bonnes vacances
et tu verras passer du vb au c++ c’est facile

a+
Edité le 26/12/2007 à 18:19

Merci à tous,
J’ai trouvé mon bonheur sur le site web cité plus haut.
@++