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 :

Utilisation Simple contact sec sur Port com en VBA [XL-2007]


Sujet :

Macros et VBA Excel

  1. #21
    Membre habitué
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 12
    Par défaut
    re salut

    en fait je viens de faire une petite Sub

    Sub fermeture_com()
    intPortID = 2
    Call CommClose(intPortID)
    End Sub

    du coup quand il ne veut plus me lancer la macro, je lance celle là et là , alors là ! Ca fonctionne de nouveau ! !!!
    Pourtant il exécute la même macro quand le TimerON est à Faux !?...
    Je vais essayer de gérer cette erreur

    Nom : Capture2.jpg
Affichages : 489
Taille : 33,9 Ko .... J'adore

    je pense qu'a la fin du Timer ça doit aller trop vite pour lui ! du coup il n'a pas eu le temps de fermer proprement le port com

    Bon reste plus qu'à intégrer tout ça dans mon projet !...


    Un grand Merci à vous deux pour votre aide précieuse

  2. #22
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 157
    Par défaut
    hello,
    bon je viens de tester une autre façon de lancer et d'arrêter le test du CTS.
    Pour cela quand j'écris go dans la cellule A1 je déclenche le test en boucle et lorsque j'écris autre chose dans cette même cellule je l'arrête.

    Le code de la modification d'unce cellule de la feuille1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
            If Me.Range("A1") = "go" Then
                Module1.nCount = 0
                Call InitTest
            Else
                Module1.TimerON = False
            End If
            Me.Range("B6") = Module1.TimerON
        End If
    End Sub
    Le code du module1 :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Public intPortID As Integer ' Ex. 1, 2, 3, 4 pour COM1 - COM4
    Public lngStatus As Long
    Public nCount As Long
    Public strError  As String
    Public LineStatus As Boolean
    Public TimerON As Boolean
    Sub InitTest()
    ' Initialiser les communications
        intPortID = 24    ' port COM24
        lngStatus = CommClose(intPortID)
        If lngStatus <> 0 Then
            ' Erreur fermeture du port COM
            lngStatus = CommGetError(strError)
            MsgBox "Erreur fermeture Port COM : " & strError
            Exit Sub
        End If
        lngStatus = CommOpen(intPortID, "\\.\COM" & CStr(intPortID), _
                             "baud=9600 parity=N data=8 stop=1")
        If lngStatus <> 0 Then
            ' Erreur d'ouverture du port COM
            lngStatus = CommGetError(strError)
            MsgBox "Erreur ouverture Port COM : " & strError
            Exit Sub
        End If
        ' Mettre le RTS à 1
        lngStatus = CommSetLine(intPortID, LINE_RTS, True)
        TimerON = True
        'démarrage du Timer qui lit le CTS toutes les secondes
        Application.Ontime EarliestTime:=Now + TimeValue("00:00:01"), _
                           Procedure:="TestCTS", Schedule:=TimerON
    End Sub
     
    Public Sub TestCTS()
       On Error GoTo FermePort
       ' Tester le CTS
       If TimerON Then
       lngStatus = CommGetLine(intPortID, LINE_CTS, LineStatus)
       Debug.Print LineStatus
       If LineStatus Then EtatContact = "Fermé" Else: EtatContact = "Ouvert"
       ActiveSheet.Range("B3") = EtatContact
       ActiveSheet.Range("B4") = nCount
       ActiveSheet.Range("B6") = TimerON
       nCount = nCount + 1
       Else
        Call CommClose(intPortID)
       End If
        'on réarme le timer ou pas
       Application.Ontime EarliestTime:=Now + TimeValue("00:00:01"), _
                       Procedure:="TestCTS", Schedule:=TimerON
       Exit Sub
    FermePort:
        Call CommClose(intPortID)
    End Sub
    et voici le résultat (je fais plusieurs fois des ouvertures fermetures de contact pendant le test) :

    Nom : test.gif
Affichages : 739
Taille : 43,8 Ko

    Ami calmant, J.P

  3. #23
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 674
    Par défaut
    Avec ces tres beaux bouts de code, je propose qu'un post soit redige dans la section Contribuez
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #24
    Membre habitué
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 12
    Par défaut
    Citation Envoyé par jurassic pork Voir le message

    Nom : test.gif
Affichages : 739
Taille : 43,8 Ko

    Ami calmant, J.P
    J'adore !... C'est tout a fait ce que je voulais !...



    Citation Envoyé par Jean-Philippe André Voir le message
    Avec ces tres beaux bouts de code, je propose qu'un post soit redige dans la section Contribuez
    Je laisse le soin à mes deux "aides" précieuses de rédiger (ou pas) ce post (je n'ai aucun mérite dans l'histoire à part d'être l'auteur de la question !...)

    Citation Envoyé par dysorthographie Voir le message
    je n'est que des ports USB pas testé!
    Ben je me posais la question ! s'il était possible de faire la même chose avec le port USB
    Je pense que cela nécessite forcément un circuit imprimé ?
    L'évolution des ordi va tellement vite ! et je suis encore en train de bouiner sur des ports com !

    Stef

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. comment détecter l'absence de connexion sur port COM ?
    Par nicoboud2 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 12/04/2006, 15h41
  2. Problème de lecture sur port COM
    Par Marthym dans le forum MFC
    Réponses: 10
    Dernier message: 11/04/2006, 16h36
  3. Capteur InfraRouge sur port com
    Par PoOky dans le forum Composants VCL
    Réponses: 12
    Dernier message: 12/01/2006, 16h31
  4. Write puis read sur port com
    Par chourmo dans le forum API, COM et SDKs
    Réponses: 34
    Dernier message: 21/06/2005, 18h36
  5. Problème de reception sur Port COM
    Par Revan777 dans le forum C
    Réponses: 9
    Dernier message: 19/04/2005, 22h55

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