IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Port série en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut Port série en VBA
    Bonjour à tous et à toutes.
    Je cherche comment faire pour lire une trame en port serie et la stockée dans une cellule.
    Autant que sur vb.net je sais faire autant en vba je n'y arrive point.
    J'ai tenté de modifier mon code vb.net vers vba mais cela ne marche pas problème de bibliotheque me semble t'il.

    Je colle le code vb.net que j'ai
    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
    21
    22
    23
    24
    25
    26
    27
    28
     
    Imports System.IO.Ports.SerialPort
    Public Class Form1
     
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim Detecteur As System.IO.Ports.SerialPort = New System.IO.Ports.SerialPort("com3")
            Detecteur.BaudRate = 9600
            Detecteur.DataBits = 8
            Detecteur.Parity = 0
            Detecteur.StopBits = 1
            Detecteur.Open()
            Button1.Enabled = False
            ' reception des donnes IR
            Dim chaine As String = Detecteur.ReadLine
            TextBox1.Text = chaine
     
            Detecteur.Close()
            Dim MonStream As System.IO.StreamWriter = New System.IO.StreamWriter("\\Srv-ad\utilisateurs\egeorges\Mes documents\essaiInfra.txt")
            chaine = chaine.Replace(" ", "X")
     
            MonStream.WriteLine(chaine)
            MonStream.Close()
            Button1.Enabled = True
     
        End Sub
     
    End Class
    Merci d'avance pour votre aide

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    As-tu comparé les bibliothèques activées dans ton VB.NET et dans ton VBA ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    J'ai regardé dans le détail les deux fichiers des bibliotheques.
    Elles sont différentes celles de vb.net n'est pas compatible avec vba . je ne peut l'utiliser et la bibliothque syste VBA ne comporte pas system.io.port

    d'ou le problème.
    Existe t'il une bibliothèque vba compatible avec les ports series ?
    Je ne dois pas être le premier a vouloir lire les ports serie sur excel?
    J'ai lu differents tuto dont le fameux ocx Mscommctl.ocx que je n'ai pas.


    cdt

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, va voir ici.

  5. #5
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Je cherche une autre solution car la licence coûte tout de même 130 dollars...

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, comme je dis toujours : pas de bras pas de chocolat .....

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    https://mon-partage.fr/f/qFnPpmwf/

    Tu peux également faire une librairie (en .net) accessible à la com avec en public les propriétés et méthode pour la gestion des ports. Et tu l'ajout à tes référence par l'option parcourir. Il ne faut pas.sélectionné la dll mai le.manifeste (assembli).

    Citation Envoyé par Ashireon Voir le message
    Je cherche une autre solution car la licence coûte tout de même 130 dollars...
    Je ne sais pas de quoi tu parle mais visual studio 2017 comunity est gratuite
    Dernière modification par Invité ; 07/09/2018 à 08h36.

  8. #8
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    a dysorthographie :
    Bonjour
    Kiki29 me proposait un bibliothèque mais payante (130 dollars la biblio) pour le VBA , en Vb.net j'ai pas de soucis.( j'utilise bien la community qui est suffisante pour moi et la biblio system.io.ports fonctionne bien ).
    Enfin j'en ai un autre mais je vais aller en discuter dans le bon forum.

    En fait j'ai un appareil de mesure d’épaisseur qui peut se connecte en infrarouge usb et le driver émule un port com3 ce qui me permet de lire en vb.net directement la trame reçue.
    Je pensait que je pouvais faire une macro vba pour faire l'acquisition directement dans le fichier Excel qui reçoit ses mesures mais ça ne fonctionne pas du tout comme en .net . VBa n'a pas ou plus du biblio qui gère les ports séries.
    cdt

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Ashireon Voir le message
    Je pensait que je pouvais faire une macro vba pour faire l'acquisition directement dans le fichier Excel qui reçoit ses mesures mais ça ne fonctionne pas du tout comme en .net . VBa n'a pas ou plus du biblio qui gère les ports séries.
    Pourquoi ne fais-tu pas le contraire : modifier une feuille Excel en VB.net ?
    Je n'ai jamais touché à ce langage mais je suppose qu'il permet de manipuler les objets de la bibliothèque Excel si on l'a chargée.
    Ce serait sans doute pour toi la solution la plus simple à mettre en place puisqu'elle demanderait peu de modifications dans ton programme.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour Menhir(),
    je confirme.

  11. #11
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    A dysorthographie
    Je te remercie je vais regarder la librairie plus pret que tu m'a fournit.

    A Menhir
    J'y pensait mais je bute sur un soucis que je vais mettre sur le fofo vb.net
    pendant que je scan le port Com3 je peut mettre à jour une form mais du coup tant que j'attends sur le port com je n'ai plus accès aux boutton du form pour arreter le scan du port.( sur le même thread) du coup j'essaye sur un thread secondaire mais j'ai d'autres soucis.

  12. #12
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Ashireon Voir le message
    pendant que je scan le port Com3 je peut mettre à jour une form mais du coup tant que j'attends sur le port com je n'ai plus accès aux boutton du form pour arreter le scan du port.
    Si tu scan le port en mettant un wait dans une boucle, c'est normal.
    Par contre, si tu lances tes scan avec des "On Time", ça permet d'avoir la main entre deux relevés pour stopper le process.

  13. #13
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Comme actuellement j'ai l'habitude de dire des âneries, ne m'en veuillez pas trop si je me trompe...

    '----------------Affirmations gratuites ET non testées--------------------------
    L'Ocx gérant les ports séries sous VBA est le MSCOMM32.OCX, disponible, sous ma machine :
    > dans le répertoire Windows/System32
    > dans le menu Outils\Références (sous VBE) au nom de : Microsoft Comm Control 6.0

    Si vous pouvez en disposer, l'explorateur d'objet de l'ide VBA vous permettra de lire sur ton port série grâce à Input.

    Un exemple ici : https://www.developpez.net/forums/d1...ion-specifiee/
    '----------------\Affirmations gratuites ET non testées--------------------------

    Sinon, la solution est de tout faire depuis vb.net et d'envoyer ces infos à ta feuille Excel :
    par exemple : https://www.developpez.net/forums/d9...n-excel-vbnet/


    EDIT : voir également le lien de téléchargement ici : http://www.thescarms.com/vbasic/commio.aspx

  14. #14
    Invité
    Invité(e)
    Par défaut
    Je t'es fourni le lien de mon site de partage pour la télécharger.

  15. #15
    Invité
    Invité(e)
    Par défaut
    J'ai implémenté, en Vb.net, les fonction CreateObject et GetObject comme elle serraient utilisés en VBA.

    Si ça te semble plus facil!

    Si tu as besoins de constantes Excel genre XlUp il faut créer un enumérateur tu les trouveras sens problème sur Google.
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Imports System.Runtime.InteropServices
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            test()
        End Sub
        Private Sub test()
            Dim xls As Object = CreateObject("Excel.Application")
            xls.visible = True
            Dim wb As Object = xls.Workbooks.add
            wb.close(False)
            xls.quit()
            releaseObject(xls)
        End Sub
        Private Function GetObject(ByVal App As String) As Object
            Try
                Return Marshal.GetActiveObject(App)
            Catch ex As Exception
                Return CreateObject(App)
            End Try
        End Function
     
     
        Private Function CreateObject(ByVal app As String) As Object
            Dim AppType As Object = Type.GetTypeFromProgID(app)
            Dim ApplInst As Object = Activator.CreateInstance(AppType)
            Return ApplInst
        End Function
        Private Sub releaseObject(ByVal obj As Object)
            Try
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
                obj = Nothing
            Catch ex As Exception
                obj = Nothing
            Finally
                GC.Collect()
            End Try
        End Sub
    End Class
    Dernière modification par Invité ; 07/09/2018 à 15h05.

Discussions similaires

  1. Code VBA pour communication avec un port série dans EXCEL
    Par Fbroom dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2008, 10h14
  2. [Série] Accès au port série sous linux
    Par ghost dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 10/10/2007, 10h43
  3. [VBA-E]communication port série
    Par Yolak dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/04/2007, 11h44
  4. Recherche de l'adresse du port série
    Par StephCal dans le forum Langage
    Réponses: 8
    Dernier message: 07/01/2004, 11h23
  5. Problème avec le port série sous Windows XP
    Par didou2dek dans le forum Composants VCL
    Réponses: 6
    Dernier message: 02/09/2003, 19h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo