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

VB 6 et antérieur Discussion :

utilisation de private sub()


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Par défaut utilisation de private sub()
    bonjour
    j'ai crée une procédure comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub envoi(Volts As Single,chan As Long)
        Dim Value As Long
    'code à exécuter
    End Sub
    lorsque je le fait appel;
    un message d'erreur s'affiche : "= expected"

    je ne sait pas pourquoi?

    Merci d'avance

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 243
    Par défaut
    Si tu est bien en vb6, lors de l'appel d'un sub (ou d'une fonction), si tu utilise les parenthèses, tu doit faire l'appel avec call. Et inversement, si tu n'utilise pas call, tu ne met pas les parenthèses.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Par défaut
    bonsoir
    tu as raison, le problème est résolu. Merci
    mais je veux mentionner une chose que j'ai remarquée;

    si j'ai à faire appel à la procédure ou fonction avec des variables comme

    la déclaration doit se faire avec byval

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub envoi(byval Volts As Single,byval chan As Long)
        Dim Value As Long
    'code à exécuter
    End Sub
    Merci encore

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 243
    Par défaut
    Je ne comprends pas ta remarque. Tu veut dire que si tu ne déclare pas tes variables en byval, l'appel provoque une erreur ?

    Avec ce code
    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
     
    Option Explicit
     
    Private Sub envoi1(a As Single, b As Double)
      '...
    End Sub
     
    Private Sub envoi2(ByRef a As Single, ByRef b As Double)
      '...
    End Sub
     
    Private Sub envoi3(ByVal a As Single, ByVal b As Double)
      '...
    End Sub
     
    Private Sub Command1_Click(Index As Integer)
      Select Case Index
      Case 0
        Call envoi1(0, 0)
        Call envoi2(0, 0)
        Call envoi3(0, 0)
      Case 1
        envoi1(0,0)
        envoi2(0,0)
        envoi3(0,0)
      Case 2
        envoi1 0, 0
        envoi2 0, 0
        envoi3 0, 0
      End Select
    End Sub
    , seuls les appels du case 1 provoquent bien une erreur (de syntaxe).

    , ou ?

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Par défaut
    prends cet exemple simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub somme(a As Single, b As Single)
    Command15.Caption = a + b
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Command15_Click()
    Dim a, b As Single
    a = 5
    b = 6
    somme a, b
     
    End Sub
    lorsque je clic sur command15 ce message d'erreur s'affiche: "byref argument type mismatch"

    maintenant si je déclare la sub comme suit (avec byval)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub somme(ByVal a As Single, ByVal b As Single)
    Command15.Caption = a + b
    End Sub
    ça marche bien et j'aurais 11 comme caption du command15 lorsque je clic la dessus

    et si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Command15_Click()
     
    somme 5, 6
     
    End Sub
    ça marche sans ajouter byval

    j'éspére que c'est clair

  6. #6
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Quand tu declare tes variable ainsi
    a est défini come variant, seul b est un single
    If faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim a as Single, b as Single
    En passant tes arguments ByVal, c'est la valeur qui est passée à la fonction, Vb se charge alors en interne de faire les convertions dans le bon type.
    Si pour un débutant, la permissivité de Vb est grandiose, Elle masque potentiellement une source d'erreur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Private Sub Form_Open . Dim maxi
    Par Nessie37 dans le forum VBA Access
    Réponses: 6
    Dernier message: 08/10/2007, 18h19
  2. code: Private Sub Form_Timer avec condition
    Par WITER dans le forum IHM
    Réponses: 3
    Dernier message: 25/07/2007, 23h33
  3. [VBA] Goto faisant référence en-dehors d'un Private Sub?
    Par Oceliane dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/03/2007, 15h57
  4. Réponses: 9
    Dernier message: 06/06/2006, 22h05
  5. mettre plusieurs private sub sur un bouton ?
    Par juju33 dans le forum Access
    Réponses: 2
    Dernier message: 26/03/2006, 16h22

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