Désinchronisation du déroulement d'un code VBA

Bonsoir !

Quel titre, non ?

En fait je ne comprend pas...

Voici le code VBA :

Option Explicit

Private Declare PtrSafe Function Beep Lib "Kernel32" (ByVal Fq As Long, ByVal Tm As Long) As Long

Sub Vert()
    Feuil1.Shapes("Vert").Visible = True
    Application.ScreenUpdating = True
    Beep 550, 600
    Feuil1.Shapes("Vert").Visible = False
End Sub

Il a pour effet de mettre à "visible" une image pour simuler l'allumage d'une autre lors du clic de souris.

Il est donc rattaché à l'image "éteinte" par "Affecter une macro".

L'image "Vert" est mis à visible, un ScreenUpDating pour mettre à jour ce changement, exécution du Beep, puis extinction de l'image en rendant invisible l'image allumée, à la lecture rien de bien méchant.

Sauf que le Beep "joue" et ensuite seulement l'image s'allume et elle "s'éteint" directement !

Le Beep est "prioritaire" sur l'affichage alors que le code commande l'inverse !

Voici le fichier, seul le Vert est en fonction : Fichier effacé par LouReeD

Une idée ?

@ bientôt

LouReeD

Bonjour

avec ceci :

Sub Vert()
    Feuil1.Shapes("Vert").Visible = True
    Application.ScreenUpdating = True
    Application.Wait Time + TimeSerial(0, 0, 1)
    Beep 550, 600
    Feuil1.Shapes("Vert").Visible = False
End Sub

tiens moi au courant

cordialement

Bonjour,

Un essai :

Sub Vert()
    Feuil1.Shapes("Vert").Visible = True
    Application.ScreenUpdating = True
    DoEvents
    Beep 550, 600
    Feuil1.Shapes("Vert").Visible = False
End Sub

Merci !

Alors j'ai déjà utilisé ceci, le hic c'est que c'est à la seconde près, et que du coup cela ajoute une seconde au déroulé du code.

Donc on voit bien l'allumage et 1 secondes après on a bien la note qui est jouée...

J'ai posté ma question ici justement pour éviter ceci, mais merci comme même, je vois que je ne suis pas trop perdu !

L'idée est vraiment que l'allumage "dure" autant que la note, note qui est gérée en millisecondes...

Pour être plus précis que la seconde de Wait, j'ai pensais à une boucle For To Next... Pas beau hein ?

@ bientôt

LouReeD

Bonsoir Jean-Eric !

Et bien voilà, cela m'apprendra à ne pas insister sur les tests !

En effet j'ai utilisé ceci "DoEvents" lors d'un de mes tests, mais peut-être était-il au mauvais endroit ou bien y avait il une structure différente dans le code, toujours est-il qu'avec cela ne marchait pas !!!!

Maintenant le code est plus simple, le DoEvents est placé au bon endroit, et tout à l'air de fonctionner correctement !

Merci @ vous et à moi le Simon made LouReeD !

@ bientôt

LouReeD

Le sujet est clôt et j'ai mis la coche en face de Jean-Eric, normale non ?

Bref une question, juste pour info :

Avez vous en plus de la note jouée, des "pics" de sons minimes avant et après la lecture de la note ?

Car je me demande si je n'ai pas un problème au niveau du son de mon ordi.

Si la note est le "LA" alors quand je clic sur le bouton vert j'obtiens :

"Poc" "LAAAAAAAA" "Poc"

Et vous ?

@ bientôt

LouReeD

Bonjour LouReeD, le forum,

tu a écrit :

Pour être plus précis que la seconde de Wait, j'ai pensé à une boucle For To Next... Pas beau hein ?

pour des temps sous la seconde, ajoute ceci sous ta fonction Beep :

Option Explicit

Private Declare PtrSafe Function Beep Lib "Kernel32" (ByVal Fq As Long, ByVal Tm As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub Essai()
  Sleep 120 'attente de 120 millisecondes
End Sub

même avec Sleep, tâche de ne pas t'endormir : prépare-moi une valise avec 1 million de dollars en petites coupures anonymes ... bon allez, j'te rassure : quelques unes de tes meilleures crêpes suffiront !

bonne chance pour ton prochain Simon made LouReeD !

dhany

pour ta dernière question :

* t'es sûr que c'est des "Poc" et pas des "Ploc" ? p't'être qu'il pleut et que t'as des fuites dans ton plafond ?

* c'est p't'être juste qu'il te faut vérifier si les câbles des haut-parleurs sont bien branchés ?

* ou mettre à jour le pilote (driver) de ta carte son ?

* ou acheter une meilleure carte son ?

dhany

Merci dhany pour ces précisions.

Si je comprend bien chez vous il n'y a pas ces "Poc" ou "Ploc" ou "Flop" ?

Donc c'est bien ma carte son... J'ai deux gestionnaire de son d'installé, j'ai désactivé l'un et tester le "jeu" et les "Ploucs"... Heu non les Plocs sont toujours là, j'ai donc désactiver l'autre en remettant le premier en marche et là plus de son du tout...

Donc je suis revenu comme au début et j'ai désactivé celui qui ne sert à rien pour éviter des conflits... Mais bon toujours ces parasites désagréables...

Mais si de votre (vos) coté(s) il n'y en a pas et bien je vais pouvoir continuer mon développement !

Merci encore @ tous pour vos conseils et astuces de programmation !

@ bientôt

LouReeD

Bonjour LouReeD,

petite rectification : pour mon post d'hier à 06:35, je l'ai écrit de façon générale, sans avoir testé ton jeu : dans ce sujet, tu as mis que des extraits de code ; je n'ai pas vu de fichier joint ; mais j'me rappelle très bien d'une fois où j'pensais qu'ma carte son avait un problème, et en fait, c'était juste la fiche jack d'un des deux câbles du haut-parleur qui était légèrement sortie ; je l'ai alors remise bien en place ➯ ensuite, tout a été ok ; j'espérais qu'le même genre de chose ferait partir tes parasites, car c'est peut-être plus un problème matériel que logiciel.


alors ça y'est ? t'as déjà fini toutes tes crêpes bretonnes ? mais pourquoi avoir remis ton avatar du QR-Code qui fait mal aux yeux quand on le regarde ? en plus, il est pas joli du tout ! j'aime pas du tout non plus l'avatar de gloub car c'est un machin tournoyant hypnotique qui fait mal aux yeux aussi ! on dirait que gloub veut hypnotiser les gens !

dhany

Bonsoir @ tous !

Petite précision : ce jour dé installation de tout ce qui touchait au son sur mon portable, puis redémarrage puis ré installation du son, et hop ! Plus de Ploc, de Flop, de Plouc etc ! Merci à dhany une fois de plus, et une fois de plus à Jean-Eric pour le DoEvents "bien placé" !

@ bientôt

LouReeD

Rechercher des sujets similaires à "desinchronisation deroulement code vba"