Bonjour,
Je voulais savoir s'il serai possible de copier une cellule toutes les 100ms et de la coller dans une autre cellule pendant un temps total de 25mn.
merci
Bonjour,
Je voulais savoir s'il serai possible de copier une cellule toutes les 100ms et de la coller dans une autre cellule pendant un temps total de 25mn.
merci
Bonjour
Peux-tu détailler le but de la manœuvre, car cela va surcharger ton processeur par des boucles de temporisation.
Philippe
cela va me permettre d'avoir un tableau pour créer une courbe de traction pour un essai de rupture pour une chaîne mécanique
Re
Je comprends mieux (formation mécanique à la base), mais si je me souviens de mes souvenirs.
Lorsque tu fais une courbe de traction, tu as un étirement en fonction de la force, ce qui te donne un domaine élastique et ensuite la rupture.
Je ne vois pas où intervient le temps (mes souvenirs sont peut-être mauvais )
Philippe
Le temps va etre l'échantillonnage des valeurs que je vais recevoir pour pouvoir copier la cellule par exemple:
ma cellule des donées est en a1, moi je ve copier cette valeur toute les 100ms puis la mettre sur a2.
puis recopier 100ms plus tard cette cellule sur a3 et etc.
Dès ma traction finie je prend toutes cellules de A2 à A... et je fais mon graphique après
jonathan
Bonjour,
si je peux intervenir,
tu as quoi en a1? une valeur statique ou dynamique?
cette valeur en a1 provient d'où?
Bonsoir à tous,
un petit tour vers cette discussion :
http://www.developpez.net/forums/d85...tion-wait-vba/
et en regardant la fonction "GetTickCount()".
ESVBA
voici le l'image de ce que je veux obtenir
http://www.developpez.net/forums/att...1&d=1264142149
Bonjour,
Comment est lue la valeur en A1 à partir de ton automate?
Une réponse optimisée proviendrait de tes explications
ma valeur en A1 est lue par le logiciel pcway sur mon automate panasonic moi avec cette valeur transmis par mon automate je pensait copier cette valeur en fesant un echantillonnage de 100ms, pour après tracer mon graphique.
Bonjour,
dans un module public
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Option Explicit Declare Function GetTickCount Lib "kernel32" () As Long Sub TempEchant() Dim Te As Long Te = GetTickCount Do While GetTickCount < Te + 100 '100ms DoEvents Loop End Sub Public Sub Echantillon() Dim LastLig As Integer LastLig = 2 Do While LastLig <= 15000 '25mn x 60s x 10 Sheets("Feuil1").Range("A" & LastLig).Value = Sheets("Feuil1").Range("A1").Value LastLig = LastLig + 1 TempEchant Loop End Sub
J'ai pris ce code et je l'ai mis dans général quand je le met en exécution, j'ai une erreur de compilation
des constantes,chaîne de longueur fixe, des tableau,types défini par l'utilisateur et instruction declare ne sont pas autorisés comme membre public
Pourtant ça fonctionne chez moi
ci-joint fichier test
Salut
Juste pour émettre une idée, si j'ai bien compris ton automate renseigne la cellule A1 dynamiquement, c'est a dire que cette valeur change toutes les .... x ms. Toi dans tout ca tu souhaite faire une ré échantillonnage toutes les 100ms.
etant donné que la valeur change dans A1, il te suffirait peut etre de "piéger" se changement dans la OnChange de la feuille, puis de comparait a l'aide de GetTickCount si le dernier changement a eu lieu il y a 100ms ou plus.
Si le changement a eu lieu il y a moins de 100ms, tu sort de la boucle.
Si le changement a eu lieu il y a 100ms ou plus (toujours tenir compte d'un risque de passer de 99ms à 101ms), tu exécutes un code qui met la valeur de A1 dans la prochaine cellule vide.
[Edit]
Tiens un truc comme ca
et dans un Module
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Private Sub Worksheet_Change(ByVal Target As Range) Dim TimeUp As Long On Error Resume Next 'pour ne pas risquer de quitter la boucle sans faire App.EnableEvents = True, sinon excel devient mué :D 'Si cela arriver, il suffit de faire une procedure avec juste la ligne Application.EnableEvents = True et de l'executer pour remettre les chose en ordre. 'Est on dans la bonne cellule? If Not Intersect(Range("A1"), Target) Is Nothing Then 'C'est bien A1 qui provoque le change TimeUp = GetTickCount If TimeUp >= LastTime + 100 Then 'Le dernier echantillon a ete pris il y a au moins 100ms Application.EnableEvents = False 'Permet de ne pas faire une boucle dut au changement de la cellule que l'on renseigne Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Value = Range("A1").Value Application.EnableEvents = True LastTime = TimeUp End If End If End Sub
[/Edit]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Option Explicit Public LastTime As Long 'representera l'heure du dernier echantillon Declare Function GetTickCount Lib "kernel32" () As Long Sub test() 'Juste en cas de soucis ;), voir explication dans le code de OnChange de la feuil Application.EnableEvents = True End Sub
A++
Qwaz
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager