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 des données d'un formulaire HELP probleme


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Par défaut Utilisation des données d'un formulaire HELP probleme
    Bonjour tout le monde,

    Je rencontre un problème tout bête et je ne vois pas d'où vient mon erreur. Peut être allez vous pouvoir m'aider

    J'ai un formulaire simple composé de 2 boutons (valider nommé v ou quitter nommé q) et où je demande à l'utilisateur d'inscrire un chiffre (zone de texte dont le nom est d) et de choisir dans une liste déroulante (zone de liste modifiable dont le nom est s) un intitulé pré enregistré.
    Voici le code du formulaire:
    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
    ' Initialisation du formulaire
    Private Sub UserForm_initialize()
     
    formulaire.d.Value = 10 ' délais en jours entre aujourd'hui et le dernier contact
     
    With s
         .AddItem "AUTORISER"
         .AddItem "REJET"
     
     End With
    End Sub
     
     
    Private Sub v_click()
     
    If IsNumeric(formulaire.d.Value) = False Then
    MsgBox "Veuillez inscrire un caractère numérique"
    Unload Me
    formulaire.Show
    End If
     
    delais = formulaire.d.Value ' A réutiliser dans le code
    statut = formulaire.s.Value ' A réutiliser dans le code
     
    formulaire.Hide
    Unload formulaire
     
    End Sub
     
    Private Sub q_click()
    formulaire.Hide
    End
     
    End Sub
    Je souhaite ensuite utiliser ces données inscrites par l'utilisateur dans un module. Le but du module est de calculer une date qui correspond à la date d’aujourd’hui moins le nombre de jours inscrits dans le formulaire (correspond à delais ie d). Voici le 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
    Option Explicit
    Public delais, d As Integer
    Public statut, s As String
     
     
    Sub final2()
    Dim today As Double
    Dim date_nouvelle As Date
     
    'chargement du formulaire
    Load formulaire
    formulaire.Show
     
    today = Now
    date_nouvelle = Now - delais
    MsgBox "date nouvelle vaut: " & date_nouvelle
     
    End Sub
    Quand je lance mon module, j'ai le userform (nommé formulaire) qui apparait à l'écran. Je remplie ce qui faut remplir et je clique sur valider. Ensuite ça marche pas. Le delais dans mon module n'a pas de valeur. Donc impossible de calculer la nouvelle date. En gros les données inscrites dans le formulaire ne sont pas "chargées" dans le module.

    Une idée ?

    edit: j'ai déjà ajouté dans le code de mon module un msgbox pour renvoyer la valeur de delais. delais ne vaut rien. Rien ne s'affiche.

    Merci d'avance pour vos réponses !!

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Il te faut affecter la valeur de ton TextBox à la variable, par exemple sur l'évènement "Click" de ton bouton Valider ou "Change" de ton TextBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub V_Click()
     
        delais = d.Text
        Unload Me
     
    End Sub
    Hervé.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Par défaut
    Bonjour,

    Merci pour ton aide. Je pensais l'avoir fait avec:
    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
    Private Sub v_click()
     
    If IsNumeric(formulaire.d.Value) = False Then
    MsgBox "Veuillez inscrire un caractère numérique"
    Unload Me
    formulaire.Show
    End If
     
    delais = formulaire.d.Value ' A réutiliser dans le code
    statut = formulaire.s.Value ' A réutiliser dans le code
     
    formulaire.Hide
    Unload formulaire
     
    End Sub
    Qu'est-ce qui cloche dans mon code ?

    Par ailleurs, juste avant le end sub du v click, j'ai mis un msgbox pour connaitre la valeur de délais et c'est bon, elle apparait bien. En revanche dès que je commence dans le module, sa valeur n'est pas "importée" dans la suite du code.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    J'écrirai le code plutôt de cette façon mais sinon, il n'y a pas de raison que ça ne fonctionne pas :
    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
     
    Private Sub v_click()
     
        If IsNumeric(D.Value) = False Then
     
            MsgBox "Veuillez inscrire un caractère numérique"
            Exit Sub
     
        End If
     
        delais = D.Value ' A réutiliser dans le code
        statut = S.Value ' A réutiliser dans le code
     
        Unload Me
     
    End Sub
    Hervé.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Par défaut
    Effectivement je ne comprends pas pourquoi ça ne marche pas. Avec le code ci dessus, j'ai testé le code ci-doussous:
    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
    Option Explicit
    Public delais As Integer
    Public statut As String
     
    Sub testo()
    Dim date_nouvelle As Date
     
    'chargement du formulaire
    Load formulaire
    formulaire.Show
     
     
    MsgBox "délais vaut: " & delais
    date_nouvelle = Now - delais
    MsgBox "date nouvelle vaut: " & date_nouvelle
     
    End Sub
    J'ai lancé ce code. J'ai rentré un délais de 10. La Msgbox me renvoit tout le temps 0 pour delais

    Je ne comprends vraiment pas ce qui cloche !

    MON PROBLEME EST QUE LES DONNEES RENTREES DANS LE USERFORM NE SONT PAS PARTAGEES AVEC LE RESTE DU CODE. Une idée pour y remédier ?

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il n'y a pas de raison, avec ce que tu nous montres, que ça ne marche pas

    bien que je ne pense pas que ça vienne de là, essaye de convertir la valeur de ton textbox, là c'est du string
    tu utilises bien un module standard pour ta procédure de calcul du délais ?

    peux-tu mettre une copie du fichier ? ou une version plus basique mais où tu rencontres le même problème ?

    j'ai pris un classeur vierge

    crée un userform avec uniquement un TextBox et un CommandButton
    code quand on appuie sur le bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
    delais = Me.TextBox1.Value
    Unload Me
    End Sub
    et dans un module STANDARD, ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public delais
     
    Sub MonDelai()
    Load UserForm1
    UserForm1.Show
    MsgBox Now - delais
    End Sub
    tout fonctionne correctement

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Par défaut
    Bonjour,

    Merci pour votre aide. Vous trouverez ci-joint mon exemple. C'est une version simplifiée de mon classeur de base mais le problème se pose déjà ici.
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ta déclaration publique est "texte"

    et ensuite tu utilise dans tes procédures une variable "textee", c'est le problème

    j'ai simplement écrit correctement "textee" dans la déclaration de variable publique et tout est ok

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Par défaut
    Effectivement dans mes codes c'est cela qui posait problème, je me suis trompé dans l'orthographe --" et je l'ai pas vu malgré des lectures et relectures du code.

    Bonne journée

  10. #10
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Prend l'habitude de mettre "Option Explicit" au début de chaque module

    ça te force à déclarer toutes tes variables

    avec ça, t'aurai eu directement une erreur indiquant que la variable textee n'est pas déclarée

    on peut mettre en place ce contrôle automatiquement :

    menu outil >> option >> cocher la case "déclaration des variables obligatoires"

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

Discussions similaires

  1. [PHP 5.0] Problème d'utilisation des données envoyées par un formulaire html
    Par fonejeje dans le forum Langage
    Réponses: 2
    Dernier message: 14/01/2012, 00h28
  2. Réponses: 6
    Dernier message: 15/02/2006, 14h02
  3. Récupération des données d'un formulaire
    Par placenargac dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/02/2006, 15h10
  4. Exposition d'un objet en utilisant des données externes
    Par ocroquette dans le forum OpenGL
    Réponses: 2
    Dernier message: 21/11/2005, 21h49
  5. [ JSP ] Réaffichage des données d'un formulaire apres un ret
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 23/04/2004, 11h55

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