Utilisation et placement de DoEvents
#1
Débutant XLPages

Inscription: 24/11/2011

Messages: 2

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 24-11-2011 17h00
Bonjour à tous,

      Je suis en train de réaliser un jeu sur Excel, mais je bute sur un problème depuis un bon moment. J'aimerai faire descendre case par case une cellule de couleur pour symboliser le mouvement d'un objet. Cependant, je suis sensé pouvoir bouger une autre cellule préalablement sélectionnée pendant que la cellule de couleur descend.

      Lorsque j'exécute mon programme pour faire descendre l'objet au fur et à mesure, je n'arrive pas à bouger la cellule sélectionnée en même temps. Je suis obliger d'attendre que l'objet en question est arrivé à destination pour pouvoir bouger.
      On m'a conseillé d'utiliser l'instruction DoEvents pour reprendre la main et faire exécuter le reste du programme, mais n'arrive pas à placer correctement l'instruction.

      J'ai mis à disposition en pièce jointe, un fichier reprenant des programmes très simplifier pour illustrer le mieux mon problème, et dans lequel j'aimerai placer le DoEvents.

      Si vous avez des conseils à me donner sur le DoEvents, ainsi que des informations sur comment l'utiliser, je suis preneur.

Merci d'avance pour toute vos réponses.

Pièce jointe:
xlsm DoEvents.xlsm   [ Taille: 22.79 Ko - Téléchargements: 535 ]
Hors Ligne
Rapport   Haut 

Re: Utilisation et placement de DoEvents
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 24-11-2011 21h33
Bonsoir killerilet, bienvenue sur XLpages.com

Extrait de l'aide Excel VBA :

« La méthode Wait suspend toute activité de Microsoft Excel et peut vous empêcher d'accomplir toute autre opération sur votre ordinateur pendant la durée de la pause. Seules les tâches de fond, telles que l'impression ou le recalcul, se poursuivent. »

Il n'est donc pas étonnant que tu ne puisses pas accomplir les 2 actions simultanément !

Tu auras beau ajouter autant de DoEvents que tu veux, ça ne changera rien au problème. Je suppose que le "On" qui t'a conseillé ça n'a pas vu ton code...

A mon avis, la piste à suivre pour toi, c'est la méthode OnTime : voir CE TUTORIEL.

Il est également possible de jouer avec l'API Windows pour ces questions de temporisation, mais, au vu de ton code, je pense que tu n'es pas prêt pour ça encore.


Par ailleurs, je t'informe que lorsqu'on use de la méthode Application.OnKey dans un code, on s'arrange pour rétablir un fonctionnement normal de l'application à la fermeture du classeur (à minima). C'est primordial !

Extrait de l'aide VBA (et oui, encore) :

« Cette forme de la méthode OnKey modifie la correspondance normale des touches dans Microsoft Excel. Si vous ne spécifiez pas l'argument Procédure, Touche rétablit son résultat d'origine dans Microsoft Excel et toutes les affectations de touches particulières effectuées avec de précédentes méthodes OnKey sont supprimées. »

Autrement dit :
Quand on active un fonctionnement personnalisé comme :
Application.OnKey "{RIGHT}", "droite"
On n'oublie pas de désactiver ce fonctionnement personnalisé à la fin :
Application.OnKey "{RIGHT}"

Et on fait de même pour toutes les affectations OnKey ainsi réalisées.

Cordialement,




Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Utilisation et placement de DoEvents
#3
Débutant XLPages

Inscription: 24/11/2011

Messages: 2

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 30-11-2011 09h28
Merci beaucoup pour tes conseils.
Je vois que j'étais partis sur une mauvaise voie, je vais donc essayer de me débrouiller avec "Application.OnTime", et régler le problème du "OnKey".

Par contre j'aurais une autre question, dans la continuité de la précédente : Existe t-il un moyen (sans passer par  "application.ontime") de faire éxécuter un programme en "arrière plan" ? Comme par exemple faire défiler le scrolling de la feuille excel à l'horizontal tout en manipulant les cellules en même temps ?

Ce que je demande n'est peut-être pas possible, mais mes compétences sur VBA étant très limitées, je ne me rend pas trop compte de ce qu'il est possible de faire ou pas sur VBA.

Merci pour vos réponses.
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes