VBA - valeur non mémorisée

Résolu
Tehani_t Messages postés 245 Statut Membre -  
Tehani_t Messages postés 245 Statut Membre -
Bonjour,

Dans un fichier excel, en Feuil1, j'ai une procédure

Sub controle_saisie_mat()
Do
matricule = InputBox("Saisir le matricule", "Controle de saisie", "18183")
If Not IsNumeric(matricule) Then
MsgBox ("Une valeur numérique est requise !")
End If
Loop Until IsNumeric(matricule)
End Sub

En Feuil5, j'ai un programme qui fait appel à cette procedure :

Private Sub bt_archiv_av_Click()

Dim num_li, num_col, nb_colonnes, j As Integer
Dim ddate, an, gr, ech, aca, acm, acj, ok As String

ok = "non"

'Appel de la procédure controle_saisie_mat
Call Feuil1.controle_saisie_mat

MsgBox (matricule)

...
End sub

Quand j'affiche le matricule, matricule ne contient aucune valeur. Pourquoi ?

Merci !

6 réponses

  1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    Re le forum

    Modifie ton programme ainsi :

    Dans le module de la feuille 5
    Private Sub bt_archiv_av_Click()  
    
    Dim num_li As Integer 
    Dim num_col As Integer 
    Dim nb_colonnes As Integer 
    Dim j As Integer 
    Dim ddate As Date 
    Dim an As String 
    Dim gr As String 
    Dim ech As String 
    Dim aca As String 
    Dim acm As String 
    Dim acj As String 
    Dim ok As String 
    
    ok = "non" 
    
    'Appel de la procédure controle_saisie_mat 
    Call Module1.controle_saisie_mat 
    
    MsgBox (matricule) 
    
    'suite du code 
    
    End Sub

    Dans le Module1 (Insertion¨> Module)
    Public matricule As String 
    
    Sub controle_saisie_mat() 
    Do 
    matricule = InputBox("Saisir le matricule", "Controle de saisie", "18183") 
    If Not IsNumeric(matricule) Then 
    MsgBox ("Une valeur numérique est requise !") 
    End If 
    Loop Until IsNumeric(matricule) 
    End Sub

    Mytå
    Merci de donner suite à votre question, nous ne sommes pas des robots...
    Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
    2
    1. Tehani_t Messages postés 245 Statut Membre 21
       
      Merci BCP !!! ca marche !!! j'apprends bcp sur ce site Merci !!
      0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Il faut que ta variable matricule soit déclarée avec
    dim matricule as string
    au niveau module (en haut, en dehors de toute procédure) pour qu'elle soit visible par toutes les procédures du module.
    Si tu l'as déclarée dans un autre module déclare là avec public au lieu de dim qu'elle soit visible de tous les modules.

    eric
    0
    1. Tehani_t Messages postés 245 Statut Membre 21
       
      Bonjour eriiic !!!

      Merci pour la réponse, j'ai essayé avec :
      Public matricule as string
      et
      Public matricule

      Et... ca ne m'affiche toujours rien....
      0
  3. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    Salut le forum

    La déclaration de variable Public doit se faire dans un module Standard
    et non dans le module de la feuille. (Module1 ou autres)

    Mytå
    Merci de donner suite à votre question, nous ne sommes pas des robots...
    Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
    0
  4. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    Re le forum

    Petite précision

    Dim num_li, num_col, nb_colonnes, j As Integer
    Dim ddate, an, gr, ech, aca, acm, acj, ok As String


    Dans ta déclaration de variables:
    j est Integer et num_li, num_col, nb_colonnes sont Variant.
    ok est String et ddate, an, gr, ech, aca, acm, acj sont Variant.

    Mytå
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. frippons Messages postés 572 Statut Membre 104
     
    Bonjour,

    Moi personnellement je t'aurai conseiller ceci:

    Sub bt_archiv_av_Click()

    Dim num_li As Integer
    Dim num_col As Integer
    Dim nb_colonnes As Integer
    Dim j As Integer
    Dim ddate As Date
    Dim an As String
    Dim gr As String
    Dim ech As String
    Dim aca As String
    Dim acm As String
    Dim acj As String
    Dim ok As String

    ok = "non"

    'Appel de la procédure controle_saisie_mat
    Call controle_saisie_mat(matricule)

    MsgBox (matricule)

    'suite du code

    End Sub

    Dans le Module1


    Function controle_saisie_mat(matricule as string)
    Do
    matricule = InputBox("Saisir le matricule", "Controle de saisie", "18183")
    If Not IsNumeric(matricule) Then
    MsgBox ("Une valeur numérique est requise !")
    End If
    Loop Until IsNumeric(matricule)
    End function

    N'oublie pas de détruire les variables locales et la variable de fonction ne porte pas forcement le même nom que la variable d'où elle fut appelé.
    0
  7. Tehani_t Messages postés 245 Statut Membre 21
     
    Merci à Tous pour votre aide !!!
    0