VBA - valeur non mémorisée

Résolu/Fermé
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 - 6 août 2010 à 21:43
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 - 9 août 2010 à 20:17
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 !

A voir également:

6 réponses

Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 950
Modifié par Mytå le 7/08/2010 à 01:46
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
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 21
9 août 2010 à 20:16
Merci BCP !!! ca marche !!! j'apprends bcp sur ce site Merci !!
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
6 août 2010 à 22:00
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
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 21
7 août 2010 à 01:19
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
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 950
Modifié par Mytå le 7/08/2010 à 01:30
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
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 950
7 août 2010 à 01:36
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
frippons Messages postés 550 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 18 octobre 2015 100
9 août 2010 à 00:52
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
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 21
9 août 2010 à 20:17
Merci à Tous pour votre aide !!!
0