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 :

Problème de lancement de macro avec un userform


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
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 36
    Par défaut Problème de lancement de macro avec un userform
    Bonjour tout le monde,

    J'ai créé un userform avec des cases à cocher et un bouton à cocher (voir image ci-jointe). Quand j'appuies sur le bouton OK de mon userform je lance la macro "CommandButton1_Click" qui appelle une autre macro "Remplissage_tableau"

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    Sub CommandButton1_Click()
    'janvier
    If CheckBox1.Value = False Then
    mois_janvier = 0
    End If
    If CheckBox1.Value = True Then
    mois_janvier = 1
    End If
     
    'fevrier
    If CheckBox2.Value = False Then
    mois_fevrier = 0
    End If
    If CheckBox2.Value = True Then
    mois_fevrier = 1
    End If
     
    'mars
    If CheckBox3.Value = False Then
    mois_mars = 0
    End If
    If CheckBox3.Value = True Then
    mois_mars = 1
    End If
     
    'avril
    If CheckBox4.Value = False Then
    mois_avril = 0
    End If
    If CheckBox4.Value = True Then
    mois_avril = 1
    End If
     
    'mai
    If CheckBox5.Value = False Then
    mois_mai = 0
    End If
    If CheckBox5.Value = True Then
    mois_mai = 1
    End If
     
    'juin
    If CheckBox6.Value = False Then
    mois_juin = 0
    End If
    If CheckBox6.Value = True Then
    mois_juin = 1
    End If
     
    'juillet
    If CheckBox7.Value = False Then
    mois_juillet = 0
    End If
    If CheckBox7.Value = True Then
    mois_juillet = 1
    End If
     
    'aout
    If CheckBox8.Value = False Then
    mois_aout = 0
    End If
    If CheckBox8.Value = True Then
    mois_aout = 1
    End If
     
    'septembre
    If CheckBox9.Value = False Then
    mois_septembre = 0
    End If
    If CheckBox9.Value = True Then
    mois_septembre = 1
    End If
     
    'octobre
    If CheckBox10.Value = False Then
    mois_octobre = 0
    End If
    If CheckBox10.Value = True Then
    mois_octobre = 1
    End If
     
    'novembre
    If CheckBox11.Value = False Then
    mois_novembre = 0
    End If
    If CheckBox11.Value = True Then
    mois_novembre = 1
    End If
     
    'decembre
    If CheckBox12.Value = False Then
    mois_decembre = 0
    End If
    If CheckBox12.Value = True Then
    mois_decembre = 1
    End If
     
    Call Remplissage_tableau
     
    End Sub
    Ca c'est l'introduction de mon problème!^^
    La macro "Remplissage_tableau" (un échantillon de la macro est marqué ci-dessous) marche parfaitement si elle n'a pas les conditions If:
    "If mois_janvier = 1 Then" et "End If".
    Elle appelle bien la macro "Mois" et entre bien la valeur dans "B3"

    Mais lorsque je mets "If mois_janvier = 1 Then" et "End If" alors lorsque je lance la macro de départ CommandButton1_Click pour lancer la macro "Remplissage_tableau" ça ne marche plus.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Remplissage_tableau()
     
    If mois_janvier = 1 Then
         'Janvier 1 4
            Call Mois("NANT DE DRANCE", 1, 4)
            Workbooks("bilan_heures_calculs.xlsm").Worksheets("Sheet1").Range("B3").Value = bilanT
    End If
     
    End Sub

    J'ai l'impression que mois_janvier dans la condition "If mois_janvier = 1 Then" ne doit pas etre égal à 1 puisque rien ne marche. Alors si quelqu'un a une idée!qu'il me la dise sur le champs! :p lol

    Merci bien d'avance!
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    On ne voit pas ce qu'il y a dans la procédure Mois(), mais ce n'est peut-être pas là l'erreur.
    On ne voit pas non plus où sont déclarées les variables, si elles le sont (!?). Peut-être qu'elles perdent leur valeur ailleurs...

    Autrement, pour en avoir le coeur net, place un MsgBox juste au début de ta procédure Remplissage_tableau
    MsgBox mois_janvier

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Je ne sais pas ce que fait Mois si tu dois gérer décembre, février...
    Par cette fonction si oui donne l’info en passage de paramètres !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Remplissage_tableau(V1 As Integer, V2 As Integer)
     
            Call Mois("NANT DE DRANCE", V1, V2)
            Workbooks("bilan_heures_calculs.xlsm").Worksheets("Sheet1").Range("B3").Value = bilanT
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 36
    Par défaut
    @Parmi :
    - nan je n'ai pas mis la procédure Mois() parce qu'effectivement ce n'est pas là l'erreur!
    - J'ai défini auparavant les variables suivantes dans un module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'Cases à cocher
    Dim mois_janvier As Integer
    Dim mois_fevrier As Integer
    Dim mois_mars As Integer
    Dim mois_avril As Integer
    Dim mois_mai As Integer
    Dim mois_juin As Integer
    Dim mois_juillet As Integer
    Dim mois_aout As Integer
    Dim mois_septembre As Integer
    Dim mois_octobre As Integer
    Dim mois_novembre As Integer
    Dim mois_decembre As Integer
    - j'ai fait ce que tu m'as dit, le fait de mettre MsgBox mois_janvier et ça n'écrit rien du tout! du coup comme tu dis mes variables perdent leur valeur!


    Alors y a-t-il un problème dans ma procédure CommandButton1_Click() ?
    ou
    Les variables sont définis dans le USERFORM, la procédure CommandButton1_Click() dans le USERFORM, et la procédure Remplissage_tableau() se trouve dans un module. Est-ce que les variables peuvent perdre leur valeur comme ça?



    @rdurupt : V1 et V2 sont des numéros de semaines, et comme je gère tous les mois de l'année à l'interieur de la procédure Remplissage_tableau() je ne peux pas les mettre en paramètres!
    Pour info la macro Mois() va chercher des valeurs dans d'autres feuilles excels pour faire des moyennes!^^


    Merci de vos réponses déjà!j'attends la suite!

  5. #5
    Invité
    Invité(e)
    Par défaut
    bonjour,
    si tu veux accéder à tes variable déclaré dans un module, à n'importe quel endroits de ton programme, il faut les déclarer en Public:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'Cases à cocher
    Public mois_janvier As Integer
    Public mois_fevrier As Integer
    Public mois_mars As Integer
    Public mois_avril As Integer
    Public mois_mai As Integer
    Public mois_juin As Integer
    Public mois_juillet As Integer
    Public mois_aout As Integer
    Public mois_septembre As Integer
    Public mois_octobre As Integer
    Public mois_novembre As Integer
    Public mois_decembre As Integer

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    bonjour,
    si tu veux accéder à tes variable déclaré dans un module, à n'importe quel endroits de ton programme, il faut les déclarer en Public:

    (.../...)
    +1. C'est ce qu'on appelle des variables globales.

    Après, quand on attaque des applis de haute complexité, on préfère éviter pour tout un tas de raisons(essentiellement pour éviter que les différents utilisateurs ne se mangent les uns les autres). Mais pour un programme de cette taille, c'est parfaitement acceptable.

    La solution "propre", c'est de passer les données en paramètre. Mais c'est plus compliqué quand on a pas l'habitude. Dans ton cas, comme tu n'as pas fait de tableaux, ça donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub CommandButton1_Click()
    'ton alimentation
    call Remplissage_tableau(mois_janvier , mois_fevrier .......)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sub Remplissage_tableau(mois_janvier as integer, mois_fevrier as integer.....)
    Ce qui est un peu long. Puisque tu as 12 valeurs du même type tu peux faire un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Mois(1 To 12) as integer
    ...........
    call Remplissage_tableau(mois())
    ...........
    Sub Remplissage_tableau(mois() as Integer)
    If mois(1) = 1 Then
         'Janvier 1 4
            Call Mois("NANT DE DRANCE", 1, 4)
            Workbooks("bilan_heures_calculs.xlsm").Worksheets("Sheet1").Range("B3").Value = bilanT
    End If
    End Sub

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

Discussions similaires

  1. [XL-2007] Problème de recherche dans macro avec .find
    Par steelk dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 14/01/2015, 19h29
  2. Problème de lancement de macro en Workbook_BeforeSave
    Par darkpeter dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/02/2013, 10h51
  3. Problème de lancement de tomcat avec Eclipse
    Par sherty dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 08/07/2011, 13h36
  4. [XL-2003] Probléme pour ecrire une macro avec Combobox et incrementation dans plusieurs colonne
    Par mimil49 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/07/2011, 10h28
  5. Réponses: 5
    Dernier message: 03/05/2007, 06h52

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