[VBA] Enregistrement automatique - Logiciel Pulse
Tags :
Dernière réponse : dans Programmation
Bonjour,
Je fais des mesures acoustiques grâce au logiciel PULSE (Bruel & Kjaer), ce logiciel est ancien et intègre VBA. Je souhaite enregistrer automatiquement à la fin de l'acquisition les données d'une courbe dans un fichier sur le disque.
Un clic-droit sur le graphique > Save Curve est possible mais je cherche à automatiser cette commande. L'enregistrement des "clic" effectués n'est pas disponible sur cette version de VBA. La commande Application. me propose plusieurs possibilité de Sub mais je n'arrive pas à les utiliser (débutant en VBA).
J'aimerai avoir un équivalent de ce code sur PULSE :
C'est assez important dans mon projet, pouvez-vous me donner vos idées ?
Niveau en VB6 : débutant
OS : XP Pro
Microsoft Office 2010
Je fais des mesures acoustiques grâce au logiciel PULSE (Bruel & Kjaer), ce logiciel est ancien et intègre VBA. Je souhaite enregistrer automatiquement à la fin de l'acquisition les données d'une courbe dans un fichier sur le disque.
Un clic-droit sur le graphique > Save Curve est possible mais je cherche à automatiser cette commande. L'enregistrement des "clic" effectués n'est pas disponible sur cette version de VBA. La commande Application. me propose plusieurs possibilité de Sub mais je n'arrive pas à les utiliser (débutant en VBA).
J'aimerai avoir un équivalent de ce code sur PULSE :
ActiveDocument.SaveAs Filename:="Doc1.doc", FileFormat:=wdFormatDocument Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.AlertBeforeOverwriting = False ActiveWorkbook.Save End Sub
C'est assez important dans mon projet, pouvez-vous me donner vos idées ?
Niveau en VB6 : débutant
OS : XP Pro
Microsoft Office 2010
Autres pages sur : vba enregistrement automatique logiciel pulse
Lassé par la pub ? Créez un compte
Salut,
OS: Slackware
VB: Expert.
M'enfin !
----------------------
Je ne connais malheureusement pas le logiciel dont tu parles.
Mais il est sans doute possible de trouver un moyen de lister tes objets.
Je pense à quelque chose comme ça :
Mais je n'en connais pas le modèle objet.
N'as tu pas de manuel ou autre qui en parlerait ?
OS: Slackware
VB: Expert.
M'enfin !
----------------------
Je ne connais malheureusement pas le logiciel dont tu parles.
Mais il est sans doute possible de trouver un moyen de lister tes objets.
Je pense à quelque chose comme ça :
Private Sub toto For Each mon_graph In Project.Curves MsgBox mon_graph.Name Next End Sub
Mais je n'en connais pas le modèle objet.
N'as tu pas de manuel ou autre qui en parlerait ?
- zeb a édité ce message
- zeb a édité ce message
- | Alerter
J'ai essayé ta proposition et cela ne fonctionne pas..
En fait, mon problème est plutôt dans l'appel d'une fonction, je m'explique :
Mon projet s'appelle Application (Pulse.ost), il y a une Form (userForm1) et un module (Module 1).
J'ai fait plusieurs essais sur la UserForm1 avec des boutons qui permettent de lancer l'acquisition sur le logiciel ou de le stopper, etc.. Ces fonctions étant pré-programmées dans la base de fonction PulseLabShop. Cela fonctionne.
Mais je butte sur l'appel des fonctions d'enregistrement.. Si je me réfère au Object Browser : dans la librairie PulseLabShop et dans la sous-partie Application, j'ai la liste des fonctions enregistrées :
- Activate
- AutoRange
- Exit
- Save
- SaveProjectAs
- Start
- ...etc
Ces fonctions ci sont applicables assez facilement. Cependant je cherche l'enregistrement de plusieurs courbes précises et pas tout le projet. Le projet étant au format .pls et je souhaite récupérer les données d'acquisition en .txt .
Le logiciel PULSE enregistre les fonctions dans le Function Organiser puis on créé des zones graphiques ou l'on insere ces fonctions. Mon idée est d'aller chercher la fonction précise puis de l'enregistrer (Un clic droit dans le Function Organizer pour sauver la fonction est possible) pour que l'enregistrement se fasse automatiquement. Je ne sais pas comment créé une nouvelle fonction et quelles données/format/syntaxe utiliser.
Je voulais fournir des ImprEcran vu que le logiciel est peu connu et mes explications plus ou moins claires, mais je ne peux le faire sur ce forum. L'aide du logiciel de programmation a été désactivée..
Merci de porter attention à mon soucis.
----------------------------
Bill Russell
En fait, mon problème est plutôt dans l'appel d'une fonction, je m'explique :
Mon projet s'appelle Application (Pulse.ost), il y a une Form (userForm1) et un module (Module 1).
J'ai fait plusieurs essais sur la UserForm1 avec des boutons qui permettent de lancer l'acquisition sur le logiciel ou de le stopper, etc.. Ces fonctions étant pré-programmées dans la base de fonction PulseLabShop. Cela fonctionne.
Mais je butte sur l'appel des fonctions d'enregistrement.. Si je me réfère au Object Browser : dans la librairie PulseLabShop et dans la sous-partie Application, j'ai la liste des fonctions enregistrées :
- Activate
- AutoRange
- Exit
- Save
- SaveProjectAs
- Start
- ...etc
Ces fonctions ci sont applicables assez facilement. Cependant je cherche l'enregistrement de plusieurs courbes précises et pas tout le projet. Le projet étant au format .pls et je souhaite récupérer les données d'acquisition en .txt .
Le logiciel PULSE enregistre les fonctions dans le Function Organiser puis on créé des zones graphiques ou l'on insere ces fonctions. Mon idée est d'aller chercher la fonction précise puis de l'enregistrer (Un clic droit dans le Function Organizer pour sauver la fonction est possible) pour que l'enregistrement se fasse automatiquement. Je ne sais pas comment créé une nouvelle fonction et quelles données/format/syntaxe utiliser.
Je voulais fournir des ImprEcran vu que le logiciel est peu connu et mes explications plus ou moins claires, mais je ne peux le faire sur ce forum. L'aide du logiciel de programmation a été désactivée..
Merci de porter attention à mon soucis.
----------------------------
Bill Russell
- BillRussell a édité ce message
- | Alerter
Salut,
J'ai tendance à répondre que nous ne sommes pas là pour remplacer le manuel. Au contraire.
Ce n'est pas contre toi, car j'ai compris que tu préfèrerais l'avoir.
Va voir ton chef et exige de lui (si, si) que l'aide soit installée.
(Perso, ça me rappelle des souvenirs
)
Citation :
L'aide du logiciel de programmation a été désactivée.. J'ai tendance à répondre que nous ne sommes pas là pour remplacer le manuel. Au contraire.
Ce n'est pas contre toi, car j'ai compris que tu préfèrerais l'avoir.
Va voir ton chef et exige de lui (si, si) que l'aide soit installée.
(Perso, ça me rappelle des souvenirs
) - | Alerter
Contenus similaires
- String to integer - Forum
- Logiciel info video - Forum
- Logiciel changer de format - Forum
- Logiciel de nettoyage pc - Forum
Désactivée était pas le bon terme, je veux dire qu'elle ne fonctionne pas, j'ai les drivers et les droits d'admin. J'ai déjà tout réinstallé et elle ne fonctionne pas (pas détectée ou autre)
De toutes façons j'ai pu retrouver des bribes sur internet de cette aide. Elle ressemble à un dictionnaire : "Programmation : action de programmer" !! et je te donne un exemple :
" SaveProjectAs : fonction qui permet de sauver le projet sous un nom défini.
Function SaveProjectAs(FileName, [DoOverwrite]) As Boolean "
C'est a peu de chose près la même chose pour toutes les fonctions..
Moi j'aimerai comprendre comment je peux appeler une fonction créé et ou est ce que je dois l'appeler (obligatoirement dans userform? utilité du Module ? String ? etc.. )
De toutes façons j'ai pu retrouver des bribes sur internet de cette aide. Elle ressemble à un dictionnaire : "Programmation : action de programmer" !! et je te donne un exemple :
" SaveProjectAs : fonction qui permet de sauver le projet sous un nom défini.
Function SaveProjectAs(FileName, [DoOverwrite]) As Boolean "
C'est a peu de chose près la même chose pour toutes les fonctions..
Moi j'aimerai comprendre comment je peux appeler une fonction créé et ou est ce que je dois l'appeler (obligatoirement dans userform? utilité du Module ? String ? etc.. )
- | Alerter
- | Alerter
Oui tu as raison, je suis toujours à la recherche d'un dieu en Pulse. J'ai fait plusieurs autres forum (meme anglais) genre NI ou encore le fournisseur Bruel & Kjaer mais même eux ne savent plus rien sur ce logiciel v10.0 alors qu'ils sortent la version v16.2 ...
Enfin je suis à la recherche du Graal mais les questions sur les forums généraliste me permettent aussi de faire le point sur ce que je sais et ce que je ne sais pas.
En tout cas le sujet reste ouvert et je suis toujours à l’affût ! =)
Enfin je suis à la recherche du Graal mais les questions sur les forums généraliste me permettent aussi de faire le point sur ce que je sais et ce que je ne sais pas.
En tout cas le sujet reste ouvert et je suis toujours à l’affût ! =)
- | Alerter
Mise à Jour : J'ai trouvé le plus gros du code, il me reste une modification à faire:
J'ai essayé de créer une Variable et de mettre mes données dedans. Pour ensuite insérer ma variable dans le fichier. Mais il y a une erreur à ce niveau là, je ne sais pas comment déclarer ma variable "Data" : en tant que Object ou en tant que Variable ?
Voici mon code :
Pouvez-vous m'aider ?
J'ai essayé de créer une Variable et de mettre mes données dedans. Pour ensuite insérer ma variable dans le fichier. Mais il y a une erreur à ce niveau là, je ne sais pas comment déclarer ma variable "Data" : en tant que Object ou en tant que Variable ?
Voici mon code :
Private Sub CommandButton5_Click() Dim FSys As Object Dim TXT As Object Dim OpenTxt Dim LeFichierTxt As String LeFichierTxt = "C:\Documents and Settings\All Users\Desktop\fichier2.txt" Dim FunctionData As BKDataSet Dim MyPulseData As Variant Dim Data As Object Set FunctionData = Project.FunctionOrganiser.FunctionGroups("LOG"). Functions("Spectre dB (Input 1)").FunctionData FunctionData.GetAllValues (True) Set Data = FunctionData. 'C'est là que je plante, je ne sais pas quoi mettre pour les changer en objet 'Pour creer le fichier texte si il existe pas Set FSys = CreateObject("Scripting.FileSystemObject") If FSys.FileExists(LeFichierTxt) = False Then Set TXT = FSys.CreateTextFile(LeFichierTxt) End If 'Ouverture en ecriture du Fichier texte Set TXT = FSys.GetFile(LeFichierTxt) Set OpenTxt = TXT.OpenAsTextStream(8, -2) '8 = ForAppending = Ouvre un fichier et écrit à la fin du fichier. 'Pour écrire dans le fichier texte With OpenTxt .Write Now & " --> " & Data & (Chr(13) + Chr(10)) End With End Sub
Pouvez-vous m'aider ?
- BillRussell a édité ce message
- BillRussell a édité ce message
- | Alerter
D'après ce que j'ai trouver la, j'utiliserais getAllValues. en déclarant data comme un "variant"
http://homel.vsb.cz/~tum52/download/PULSEAutomation.pdf
http://homel.vsb.cz/~tum52/download/PULSEAutomation.pdf
- | Alerter
J'ai aussi a disposition ce pdf mais j'avoue ne pas trop comprendre l'explication de la syntaxe décrite à partir du slide 40.
J'ai essayé ce que vous m'avez indiquer :
Par contre il ne veut pas écrire dans le fichier texte car Data est une variable, comment je le met en Object ??
Redim ??
J'ai essayé ce que vous m'avez indiquer :
Private Sub CommandButton5_Click() Dim FSys As Object Dim TXT As Object Dim OpenTxt Dim LeFichierTxt As String LeFichierTxt = "C:\Documents and Settings\All Users\Desktop\fichier2.txt" Dim FunctionData As BKDataSet Dim MyPulseData As Variant Dim Data As Variant Set FunctionData = Project.FunctionOrganiser.FunctionGroups("LOG").Functions("Spectre dB (Input 1)").FunctionData FunctionData.GetAllValues (True) Data = FunctionData.GetAllValues(True) 'Data contient bien mes données : tableau 2 colonnes 1600 valeurs [...] 'Pour écrire dans le fichier texte With OpenTxt .Write Data End With End Sub
Par contre il ne veut pas écrire dans le fichier texte car Data est une variable, comment je le met en Object ??
Redim ??
- BillRussell a édité ce message
- | Alerter
Ben normalement pas de soucis pour écrire une variable ... (j'ai fais l'essais en mettant une string dans data). Peux-tu nous dire le type de donné qu'il y a dans data ?
(à l'aide d'un breakboint juste avant ".Write data" et d'un "watch" sur data).
Essaye aussi de mettre une string à la place de "FunctionData.GetAllValues(True)" et de voir si ça passe.
edit: apparement ton data est un tableau, tu dois écrire chaque donnée indépendemment: qqch comme ça devrait jouer:
Re-Edit: Je sais Zeb, j'ai pas déclarer "i", c'est ... MAL ...
(à l'aide d'un breakboint juste avant ".Write data" et d'un "watch" sur data).
Essaye aussi de mettre une string à la place de "FunctionData.GetAllValues(True)" et de voir si ça passe.
edit: apparement ton data est un tableau, tu dois écrire chaque donnée indépendemment: qqch comme ça devrait jouer:
Private Sub CommandButton5_Click() Dim FSys As Object Dim TXT As Object Dim OpenTxt Dim LeFichierTxt As String LeFichierTxt = "C:\fichier.txt" Dim MyPulseData As Variant Dim test(0 To 2) As String Dim data As Variant 'Set Data = FunctionData.GetAllValues(True) 'C'est là que je plante, je ne sais pas quoi mettre pour les changer en objet 'Pour creer le fichier texte si il existe pas Set FSys = CreateObject("Scripting.FileSystemObject") If FSys.FileExists(LeFichierTxt) = False Then Set TXT = FSys.CreateTextFile(LeFichierTxt) End If test(0) = "test" test(1) = "test2" test(2) = "test3" data = test 'Ouverture en ecriture du Fichier texte Set TXT = FSys.GetFile(LeFichierTxt) Set OpenTxt = TXT.OpenAsTextStream(8, -2) '8 =ForAppending = Ouvre un fichier et écrit à la fin du fichier. 'Pour écrire dans le fichier texte With OpenTxt .Write Now & " --> " For i = LBound(data) To UBound(data) .Write data(i) Next .Write (Chr(13) + Chr(10)) End With End Sub
Re-Edit: Je sais Zeb, j'ai pas déclarer "i", c'est ... MAL ...
- drul a édité ce message
- drul a édité ce message
- | Alerter
- | Alerter
Salut,
Je n'ai pas Pulse, j'ai donc remplacer "FunctionData.GetAllValues(True)" par "test" qui simule un tableau (en l'occurence de string).
si tu copie juste:
Dans TON projet ( le code que tu as publié le 14 juin) ça donne quoi ?
Je n'ai pas Pulse, j'ai donc remplacer "FunctionData.GetAllValues(True)" par "test" qui simule un tableau (en l'occurence de string).
si tu copie juste:
With OpenTxt .Write Now & " --> " For i = LBound(data) To UBound(data)30. .Write data(i) Next .Write (Chr(13) + Chr(10)) End With
Dans TON projet ( le code que tu as publié le 14 juin) ça donne quoi ?
- zeb a édité ce message
- | Alerter
- | Alerter
STP, met un breakpoint sur la ligne d'erreur et regarde ce qu'il y a dans data (bouton droit "add watch")
Data doit être un variant, string c'était juste pour faire un test.
Tu as bien garder les lignes suivantes ?
Tiens en regardant de plus près, je suis surpris par la présence de getallValues sur les deux lignes ... Essaye le code suivant:
Data doit être un variant, string c'était juste pour faire un test.
Tu as bien garder les lignes suivantes ?
Set FunctionData = Project.FunctionOrganiser.FunctionGroups("LOG").Functions("Spectre dB (Input 1)").FunctionData13.FunctionData.GetAllValues (True) Data = FunctionData.GetAllValues(True)
Tiens en regardant de plus près, je suis surpris par la présence de getallValues sur les deux lignes ... Essaye le code suivant:
Set FunctionData = Project.FunctionOrganiser.FunctionGroups("LOG").Functions("Spectre dB (Input 1)").FunctionData13.FunctionData Data = FunctionData.GetAllValues (True)
- drul a édité ce message
- | Alerter
L'erreur est sur la ligne .Write Data(i)
Avec le break point et le Watch : on voit bien que Data contient les données. elles sont de la forme :
Data............................................................................Variant/Double(0 to 1600, 0 to 0)
...Data(0).....................................................................Double(0 to 0)
.......Data(0,0).............1.57140459577931E-06................Double
...Data(1) Double(0 to 0)
.......Data(1,0) 2.04580459557782E-06 Double
[...]
Avec le break point et le Watch : on voit bien que Data contient les données. elles sont de la forme :
Data............................................................................Variant/Double(0 to 1600, 0 to 0)
...Data(0).....................................................................Double(0 to 0)
.......Data(0,0).............1.57140459577931E-06................Double
...Data(1) Double(0 to 0)
.......Data(1,0) 2.04580459557782E-06 Double
[...]
- BillRussell a édité ce message
- BillRussell a édité ce message
- | Alerter
- | Alerter
Un peu d'inspiration ....
Private Sub CommandButton5_Click() Dim FSys As Object Dim TXT As Object Dim OpenTxt Dim LeFichierTxt As String LeFichierTxt = "C:\fichier.txt" Dim MyPulseData As Variant Dim test(0 To 3, 0 To 2) As Double Dim data As Variant 'Set Data = FunctionData.GetAllValues(True) 'C'est là que je plante, je ne sais pas quoi mettre pour les changer en objet 'Pour creer le fichier texte si il existe pas Set FSys = CreateObject("Scripting.FileSystemObject") If FSys.FileExists(LeFichierTxt) = False Then Set TXT = FSys.CreateTextFile(LeFichierTxt) End If test(0, 0) = 0.1 test(0, 1) = 0.213 test(0, 2) = 3.14 test(1, 0) = 0.22 test(1, 1) = 0.3132 test(1, 2) = 3.1432 test(2, 0) = 0.131 test(2, 1) = 0.3213 test(2, 2) = 3.4 test(3, 0) = 0.32 test(3, 1) = 0.13 test(3, 2) = 3.3 data = test 'Ouverture en ecriture du Fichier texte Set TXT = FSys.GetFile(LeFichierTxt) Set OpenTxt = TXT.OpenAsTextStream(8, -2) '8 =ForAppending = Ouvre un fichier et écrit à la fin du fichier. 'Pour écrire dans le fichier texte With OpenTxt .Write Now & " --> " For i = LBound(data, 1) To UBound(data, 1) For j = LBound(data, 2) To UBound(data, 2) .Write data(i, j) & " " Next Next .Write (Chr(13) + Chr(10)) End With End Sub
- | Alerter
Je pense que Data ne contient pas d'abscisses mais plutôt un numéro de mesure (point1, point2,..). pourtant l'unité des abscisses est bien une dimension (Hertz) Mon graphique a exporté est de la forme dB = f(Hz)
Enfin ce sont des détails qui ne concernent pas ce sujet de programmation. Je donne mon code final. J'ai moi même recréer les abscisses, je connaissait le pas de mesure (j). J'ai mis un point-virgule comme séparateur entre abscisse et ordonnée pour faciliter l'importation et la séparation des données.
Merci en tout cas à toi drul, c'est gentil à toi d'avoir consacré de ton temps à mon problème
Voici mon code final qui extrait des données d'un logiciel d'acquisition, comptabilise le nombre de mesures effectuées, l'unité des abscisses, créé un fichier texte, l'ouvre en mode écriture, et insère les données d'une variable double.
Enfin ce sont des détails qui ne concernent pas ce sujet de programmation. Je donne mon code final. J'ai moi même recréer les abscisses, je connaissait le pas de mesure (j). J'ai mis un point-virgule comme séparateur entre abscisse et ordonnée pour faciliter l'importation et la séparation des données.
Merci en tout cas à toi drul, c'est gentil à toi d'avoir consacré de ton temps à mon problème
Voici mon code final qui extrait des données d'un logiciel d'acquisition, comptabilise le nombre de mesures effectuées, l'unité des abscisses, créé un fichier texte, l'ouvre en mode écriture, et insère les données d'une variable double.
Private Sub CommandButton5_Click() Dim FSys As Object Dim TXT As Object Dim OpenTxt Dim LeFichierTxt As String LeFichierTxt = "C:\Documents and Settings\All Users\Desktop\fichier2.txt" Dim FunctionData As BKDataSet Dim MyPulseData As Variant Dim Data As Variant Dim Xaxis As String Dim Entries As Long Dim test(0 To 2) As String Dim i As Variant Set FunctionData = Project.FunctionOrganiser.FunctionGroups("LOG").Functions("Spectre dB (Input 1)").FunctionData Data = FunctionData.GetAllValues(True) Entries = FunctionData.NumberOfXAxisEntries ReDim ValueArr1(Entries - 1) As Double 'Variable de type tableau FunctionData.RealValues ValueArr1 'Récuperation des Y TextBox1.Text = Entries Xaxis = FunctionData.XaxisUnit 'Cette fonction marche mais pas celle de recup des données ReDim ValueArr2(Entries - 1) As Double FunctionData.RealValues ValueArr2 TextBox2.Text = Xaxis 'Pour creer le fichier texte si il existe pas Set FSys = CreateObject("Scripting.FileSystemObject") If FSys.FileExists(LeFichierTxt) = False Then Set TXT = FSys.CreateTextFile(LeFichierTxt) End If 'Ouverture en ecriture du Fichier texte Set TXT = FSys.GetFile(LeFichierTxt) Set OpenTxt = TXT.OpenAsTextStream(8, -2) '8 = ForAppending = Ouvre un fichier et écrit à la fin du fichier. 'Pour écrire dans le fichier texte With OpenTxt j = 0 For i = LBound(Data) To UBound(Data) .write j & ";" .write Data(i, 0) .write (Chr(13) + Chr(10)) j = j + 16 Next End With Msg = "Écriture réussie dans fichier2.txt" MsgBox (Msg) End Sub
- BillRussell a édité ce message
- BillRussell a édité ce message
- | Alerter
Meilleure solution
pfeewwwwwww ... Content que tu aies pu t'en sortir...
Pas évident quand on connais pas du tout pulse ...
A bientôt peut-être ...
(P.S. mais ton sujet en résolu stp)
Edit: y a un peu de nettoyage à faire dans ton code ...
Pas évident quand on connais pas du tout pulse ...
A bientôt peut-être ...
(P.S. mais ton sujet en résolu stp)
Edit: y a un peu de nettoyage à faire dans ton code ...
- BillRussell a sélectionné cette solution comme la meilleure réponse
- drul a édité ce message
- | Alerter
Nouvelle Question toute bête :
J'ai maintenant un UserForm avec :
- Un bouton Start d'acquisition
- Un bouton Stop
- Deux OptionButton
- un bouton d'execution de la function
Je souhaite donc que lorsque l'utilisateur coche l'OptonButton1, que l'enregistrement se fasse sous le nom de Série n°1 et que l'enregistrement concerne les microphones. Plus clairement, j'aimerai que la variable NumeroSérie ait la valeur "1", et que la variable NumeroMicro prenne une première fois la valeur "1", que l'enregistrement se fasse, puis la valeur "2" et enregistrement à nouveau. Le problème que j'ai c'est que le logiciel ne reconnait pas la ligne
En effet, le chemin normal ne contient pas de variable.. Car on fait appel à des données du logiciel d'acquisition.
Mon projet touche à sa fin et j'implore votre aide afin de pouvoir finir à temps..
J'ai maintenant un UserForm avec :
- Un bouton Start d'acquisition
- Un bouton Stop
- Deux OptionButton
- un bouton d'execution de la function
Je souhaite donc que lorsque l'utilisateur coche l'OptonButton1, que l'enregistrement se fasse sous le nom de Série n°1 et que l'enregistrement concerne les microphones. Plus clairement, j'aimerai que la variable NumeroSérie ait la valeur "1", et que la variable NumeroMicro prenne une première fois la valeur "1", que l'enregistrement se fasse, puis la valeur "2" et enregistrement à nouveau. Le problème que j'ai c'est que le logiciel ne reconnait pas la ligne
Set FunctionData = Project.FunctionOrganiser.FunctionGroups("LOG").Functions("Spectre dB (Input "NumeroMicro")").FunctionData
En effet, le chemin normal ne contient pas de variable.. Car on fait appel à des données du logiciel d'acquisition.
Mon projet touche à sa fin et j'implore votre aide afin de pouvoir finir à temps..
Function Enregistrement_text(NumeroSerie As Integer, NumeroMicro As Integer) As Integer Dim FSys As Object Dim TXT As Object Dim OpenTxt Dim FunctionData As BKDataSet Dim Data As Variant Dim i As Variant Dim LeDossier, LeSousDossier, LeFichierTxt As String LeDossier = "C:\Documents and Settings\All Users\Desktop\Mesures Acoustiques 2012" LeSousDossier = "C:\Documents and Settings\All Users\Desktop\Mesures Acoustiques 2012\Série" & NumeroSerie LeFichierTxt = "C:\Documents and Settings\All Users\Desktop\Mesures Acoustiques 2012\Série" & NumeroSerie & "\Micro" & NumeroMicro & ".txt" Set FunctionData = Project.FunctionOrganiser.FunctionGroups("LOG").Functions("Spectre dB (Input "NumeroMicro")").FunctionData Data = FunctionData.GetAllValues(True) Set FSys = CreateObject("Scripting.FileSystemObject") If FSys.FolderExists(LeDossier) = False Then Set FOLD = FSys.CreateFolder(LeDossier) End If Set FSys = CreateObject("Scripting.FileSystemObject") If FSys.FolderExists(LeSousDossier) = False Then Set FOLD = FSys.CreateFolder(LeSousDossier) End If Set FSys = CreateObject("Scripting.FileSystemObject") If FSys.FileExists(LeFichierTxt) = False Then Set TXT = FSys.CreateTextFile(LeFichierTxt) End If Set TXT = FSys.GetFile(LeFichierTxt) Set OpenTxt = TXT.OpenAsTextStream(8, -2) With OpenTxt j = 0 For i = LBound(Data) To UBound(Data) .write j & ";" .write Data(i, 0) .write (Chr(13) + Chr(10)) j = j + 16 Next End With Msg = "Écriture réussie dans : Serie " & NumeroSerie MsgBox (Msg) End Function Private Sub CommandButton2_Click() PulseLabShop.Start End Sub Private Sub CommandButton3_Click() PulseLabShop.Stop End Sub Private Sub CommandButton4_Click() Call Enregistrement_text(2, 1) End Sub Private Sub OkButton_Click() UserForm3.Hide End Sub
- BillRussell a édité ce message
- BillRussell a édité ce message
- BillRussell a édité ce message
- BillRussell a édité ce message
- BillRussell a édité ce message
- BillRussell a édité ce message
- | Alerter
- | Alerter
Pardon pour la balise, didn't know :S
"&"... suis-je bête, Merci.
Le "must" serait que je puisse enregistrer les deux fichiers textes en cliquant sur un seul bouton. Il y a t il un moyen plus simple et plus joli que d'appeler la fonction plusieurs fois ?
"&"... suis-je bête, Merci.
Le "must" serait que je puisse enregistrer les deux fichiers textes en cliquant sur un seul bouton. Il y a t il un moyen plus simple et plus joli que d'appeler la fonction plusieurs fois ?
Function Enregistrement_text(NumeroSerie As Integer, NumeroMicro As Integer) As Integer Dim FSys As Object Dim TXT As Object Dim OpenTxt Dim FunctionData As BKDataSet Dim Data As Variant Dim i As Variant Dim LeDossier, LeSousDossier, LeFichierTxt As String LeDossier = "C:\Documents and Settings\All Users\Desktop\Mesures Acoustiques 2012" LeSousDossier = "C:\Documents and Settings\All Users\Desktop\Mesures Acoustiques 2012\Série" & NumeroSerie LeFichierTxt = "C:\Documents and Settings\All Users\Desktop\Mesures Acoustiques 2012\Série" & NumeroSerie & "\Micro" & NumeroMicro &".txt" Set FunctionData = Project.FunctionOrganiser.FunctionGroups("LOG").Functions("Spectre dB (Input " & NumeroMicro & " )").FunctionData Data = FunctionData.GetAllValues(True) Set FSys = CreateObject("Scripting.FileSystemObject") If FSys.FolderExists(LeDossier) = False Then Set FOLD = FSys.CreateFolder(LeDossier) End If Set FSys = CreateObject("Scripting.FileSystemObject") If FSys.FolderExists(LeSousDossier) = False Then Set FOLD = FSys.CreateFolder(LeSousDossier) End If Set FSys = CreateObject("Scripting.FileSystemObject") If FSys.FileExists(LeFichierTxt) = False Then Set TXT = FSys.CreateTextFile(LeFichierTxt) End If Set TXT = FSys.GetFile(LeFichierTxt) Set OpenTxt = TXT.OpenAsTextStream(8, -2) With OpenTxt j = 0 For i = LBound(Data) To UBound(Data) .write j & ";" .write Data(i, 0) .write (Chr(13) + Chr(10)) j = j + 16 Next End With Msg = "Écriture réussie dans: Série " & NumeroSerie MsgBox (Msg) End Function Private Sub CommandButton4_Click() If OptionButton1.Value = False Then Else: Call Enregistrement_text(1, 1) & call Enregistrement_text(1, 2) & Call Enregistrement_text(1, 3) & Call Enregistrement_text(1, 4) End If If OptionButton2.Value = False Then Else: Call Enregistrement_text(2, 1) & call Enregistrement_text(2, 2) & Call Enregistrement_text(2, 3) & Call Enregistrement_text(2, 4) End If End Sub
- | Alerter
L'appel de la fonction à plusieurs reprise n'est pas un probleme.
Esthetiquement une boucle serait mieux, mais bon.
Sinon, une solution amusante et parfois utile s'appel la récursivité: un exemple
Esthetiquement une boucle serait mieux, mais bon.
Sinon, une solution amusante et parfois utile s'appel la récursivité: un exemple
Sub appel() test (1) End Sub Sub test(ligne As Integer) Cells(ligne, 1).Value = "ceci est une fonction recursive " & ligne If ligne < 4 Then test (ligne + 1) End If End Sub
- | Alerter
La répétition des fonctions fonctionne très bien, j'ai maintenant un programme complet qui fonctionne sans erreur. Des petits ajustements ont été nécessaires mais rien d'important.
En tout cas, un grand merci à tous ceux qui m'ont aidé (drul en fait =D )
J'avais déjà vu la possibilité d'une récursivité mais il fallait que je code quelque chose d'intuitif, que quelqu'un qui ne s'y connaisse pas trop en prog puisse comprendre le déroulement du code.
En tout cas, un grand merci à tous ceux qui m'ont aidé (drul en fait =D )
J'avais déjà vu la possibilité d'une récursivité mais il fallait que je code quelque chose d'intuitif, que quelqu'un qui ne s'y connaisse pas trop en prog puisse comprendre le déroulement du code.
- | Alerter
- | Alerter
Lassé par la pub ? Créez un compte