Précédent   Forum du club des développeurs et IT Pro > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/11/2012, 17h38   #1
bruelhagerri
Invité de passage
 
Homme geoffray S
Ingénieur développement matériel électronique
Inscription : novembre 2012
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme geoffray S
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement matériel électronique
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2012
Messages : 2
Points : 0
Points : 0
Par défaut attendre la fin d'une acquisition

bonjour à tous
je travaille en vba sur le logiciel pulselabshop (v6.0)
ce soft sert à récupérer des signaux acoustiques
ma macro permet de faire plusieurs acquisitions à la suite puis enregistrer les données dans un fichier texte; chaque acquisition dure 10s
mon problème est le suivant:
l'avancement du code de la macro n'attends pas la fin de l'acquisition (code: pulselabshop.start).
j'ai trouvé un moyen de la faire fonctionner mais j'aimerai éviter de devoir cliquer lors des mesures successives:

Code :
1
2
3
4
5
6
7
8
PulseLabShop.start
check = timer
start = timer
tempo=10
while check<tempo+start
msgbox "attends 10s"
check=timer
wend
sans l'apparition de la msgbox, l'acquisition ne se fait pas, la commande etant passé. j'ai déjà essayer les "sleep" et "do event", même constat. j'ai essayer également de créer un userframe avec date d'expiration de 10s, mais elle aussi prends le dessus sur ma mesure.

j'ai pas trouvé de flag indiquant la fin des mesures non plus.

pour finir, voici ou sont sauvegardé les données

Code :
1
2
3
4
    Dim FunctionData As Object
    Dim Data As Variant
Set FunctionData = Project.FunctionOrganiser.FunctionGroups("LOG").Functions("Spectre dB (Input " & NumeroMicro & ")").FunctionData
    Data = FunctionData.GetAllValues(True)
j'aurais voulu verifier si la derniere case etait vide et attendre tant qu'elle ne l'est pas

genre
Code :
1
2
while data(1600,0) is empty
wend
mais avant d’être remplie, cette case est de type <type mismatch>, donc je sais pas comment faire ma condition, is empty ne marchant pas
(de toute façon je doute que ça marche ...)


comment puis je faire ? thread avec l'userform? (si oui, je veux bien l'adresse d'un cours simple en VB, j'en ai pas trouvé)

merci d'avance !
bruelhagerri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2012, 09h03   #2
bruelhagerri
Invité de passage
 
Homme geoffray S
Ingénieur développement matériel électronique
Inscription : novembre 2012
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme geoffray S
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement matériel électronique
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2012
Messages : 2
Points : 0
Points : 0
j'ai choisi de créer un userform comme une messagebox mais avec une date limite de 20s. le problème étant que quand cette user s'affiche elle bloque le code. j'aimerai la faire devenir modal donc (comme la msgbox non ?)
pour l'instant le soft fonctionne pke j'ai fait un truc dégueulasse (et mauvais pour la santé des épileptiques!)

Code :
1
2
3
Public Sub UserForm_Activate()
    popup.Hide
End Sub
userform popup s'ouvre et se ferme

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub fenetrepopup()
    UserForm2.Hide
    waiting
    Dim Check, start, tempo As Long
Check = Timer
start = Timer
While Check < start + 20
Check = Timer
    popup.Show
    waiting
Wend
    UserForm2.Show
End Sub
et la en fait j'appelle popup qui se ferme pendant 20 secondes.
si je met ma tempo dans userform popup, mon acquisition s’interrompt.
Userform2 est ma form principale, et pour info, waiting:

Code :
1
2
3
4
5
6
7
8
9
10
Public Sub waiting()
 
Dim i As Integer
 
 
For i = 1 To 1000
 
    DoEvents
 
Next i


Des idées ?
merci
bruelhagerri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2012, 16h43   #3
fring
Rédacteur/Modérateur
 
Avatar de fring
 
Homme Fred Thomas
Engineering
Inscription : février 2008
Messages : 3 900
Détails du profil
Informations personnelles :
Nom : Homme Fred Thomas
Âge : 49
Localisation : Belgique

Informations professionnelles :
Activité : Engineering

Informations forums :
Inscription : février 2008
Messages : 3 900
Points : 8 485
Points : 8 485
Bonjour,

Modifie la propriété ShowModal du UserForm "popup" et met là à False
Ou directement via le code
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h29.


 
 
 
 
Partenaires

Hébergement Web