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 :

Appel de variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2014
    Messages : 58
    Par défaut Appel de variable
    Bonjour,

    Je cherche à appeler la variable ligneBrouillon dans la procédure d'un UF nommée Private Sub CmdEnre_Clic :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public ligneBrouillon As Long
     
    Sub ModeBrouillon()
     
            ligneBrouillon = InputBox("Renseignez le numéro de la ligne d'entretien à modifier ?", "Mode brouillon")
     
                'SIGNALETIQUE
     
                UFsaisie.TxtDate = Range("B" & ligneBrouillon)
     
            Affichage
     
    End Sub

    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
    Private Sub CmdEnre_Click()
    Dim ligne As Long
    Dim i As Long
    Dim ctrl As Control, ctrlerr As Control
    Dim erreur As Boolean
     
    With UFsaisie
    Call ligneBrouillon
     
        If TxtNom <> "" And TxtPrenom <> "" Then
     
        ligne = Range("B2").CurrentRegion.Rows.Count + 2 'pour commencer en ligne 4
     
                    If ligneBrouillon = "" Then
                            InjectionDonnees
                        Else: InjectionDonneesBrouillon
                    End If
     
                ThisWorkbook.Save
     
                    If LblObli.Visible = True Then
                        LblObli.Visible = False
                    End If
     
                On Error Resume Next
                    Select Case MsgBox("Voulez vous imprimer le formulaire?", vbQuestion + vbYesNoCancel, "Impression du formulaire")
                        Case Is = vbYes
                            Unload UFsaisie
                            With Sheets("IMPRESSION EEA")
                            .PrintPreview
                            End With
                            remiseAzero
                            RemiseAzeroCompetences
                            UFsaisie.Show 0
     
                        Case Is = vbNo
                            remiseAzero
                            RemiseAzeroCompetences
     
                        Case Is = vbCancel
     
                    End Select
     
        Else
        LblObli.Visible = True
    'End If
     
        End If
    End With
    End Sub

    Mais j'ai ce message d'erreur, avez vous une idée du problème svp? "erreur de compilation procédure attenue, non une variable"

    Merci de 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
    Il faut mettre ta déclaration et ton Sub ModeBrouillon() dans le même module que Sub CmdEnre_Click().

    Tu peux aussi transformer ton Sub ModeBrouillon() en fonction qui renverrait la valeur de cette variable.

    Je pense que tu as fait une erreur en écrivant :
    Il serait sans doute plus juste d'écrire :
    Puisque Call sert à appeler des Sub et des fonctions et non des variables.

  3. #3
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2014
    Messages : 58
    Par défaut
    Merci pour ta réponse.

    [EDIT]
    J'ai réussi à ne plus faire bugger en déclarant la variable public dans le code de l'UF:
    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
    Public ligneBrouillon As Long
     
     
    '''''''''''''''''''''''''''''''''''''''''''BOUTON ENREGISTRER'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Sub CmdEnre_Click()
    Dim ligne As Long
    Dim i As Long
    Dim ctrl As Control, ctrlerr As Control
    Dim erreur As Boolean
     
        If TxtNom <> "" And TxtPrenom <> "" Then
     
        ligne = Range("B2").CurrentRegion.Rows.Count + 2 'pour commencer en ligne 4
     
                    If ligneBrouillon = "" Then
                            InjectionDonnees
                        Else: InjectionDonneesBrouillon
                    End If
     
                ThisWorkbook.Save
     
    [...]
    End Sub
    La variable est définie par un inputbox qui se trouve dans un module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Sub ModeBrouillon()
     
            ligneBrouillon = Application.InputBox("Renseignez le numéro de la ligne d'entretien à modifier ?", "Mode brouillon")
     
                'SIGNALETIQUE
     
                UFsaisie.TxtDate = Range("B" & ligneBrouillon)
    [...]
    Mais la ou je bloque maintenant c'est que ma variable est égal à VIDE dans une procédure qui est directement dans le code de l'UF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub InjectionDonneesBrouillon()
     
                'SIGNALETIQUE
     
                Range("B" & ligneBrouillon) = TxtDate
                Range("C" & ligneBrouillon) = FraCivilite.Tag
                Range("D" & ligneBrouillon) = TxtNom
    Je ne comprends pas pourquoi la variable que je saisi dans l'inputbox ne soit pas gardée en mémoire dans une procédure de l'UF.

  4. #4
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2014
    Messages : 58
    Par défaut
    Faut-il que je fasse l'inputbox dans une fonction ?

  5. #5
    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 Alaindhu Voir le message
    J'ai réussi à ne plus faire bugger en déclarant la variable public dans le code de l'UF:

    La variable est définie par un inputbox qui se trouve dans un module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Sub ModeBrouillon()
    Je le répète : mets ton Sub ModeBrouillon() dans le même module que le Sub CmdEnre_Click().

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    problème dans le type de la variable aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public ligneBrouillon As Long
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ligneBrouillon = "" Then
    Faut choisir...
    Comme apparemment tu y mets une chaine alors As String
    Laisse As Long et
    ligneBrouillon = Application.InputBox("Renseignez le numéro de la ligne d'entretien à modifier ?", "Mode brouillon",type=1)
    ...
    If ligneBrouillon = 0
    eric

  7. #7
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2014
    Messages : 58
    Par défaut
    Un grand merci à vous deux, c'est résolu! en suivant simplement vos suggestions et en testant plusieurs trucs.
    Bonne soirée,

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

Discussions similaires

  1. [Access] Expression avec une clause SQL faisant appel à une variable
    Par elgringo2007 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/06/2006, 13h02
  2. [VBA-A] Appel de variable
    Par noob_vba dans le forum VBA Access
    Réponses: 13
    Dernier message: 09/06/2006, 16h35
  3. Appel de variables dans un declencheur de module
    Par darkmoon_tn dans le forum Oracle
    Réponses: 1
    Dernier message: 17/03/2006, 12h53
  4. [log4j]Appeler une variable d'environnement
    Par nana1 dans le forum Logging
    Réponses: 5
    Dernier message: 08/12/2005, 12h22
  5. [Tableaux] Appeler une variable que si non NULL
    Par GarGamel55 dans le forum Langage
    Réponses: 6
    Dernier message: 08/10/2005, 14h07

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