Menu

Probléme d'éxecution

Messages postés
23
Date d'inscription
mercredi 2 janvier 2019
Dernière intervention
8 février 2019
- - Dernière réponse : belba.yahya
Messages postés
23
Date d'inscription
mercredi 2 janvier 2019
Dernière intervention
8 février 2019
- 3 févr. 2019 à 16:48
Bonjour
pouvez vous m'aider de trouver un solution,lorsque je fais saisir un code VBA pour obtenir un combobox qui contient douze mois,je réussie de le faire et ça je l'ai fais avec une bouton précédent et bouton suivant pour agir les mois de l'année.
mais quand je ferme mon excel et je l'ouvre à nouveau il me donne erreur d’exécution et que je trouve mon combobox vide et m'affiche une couleur jaune dans le VBA.
comment corriger ce problème
et merci
Afficher la suite 

Votre réponse

4 réponses

Messages postés
14386
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 février 2019
215
0
Merci
Sur quelle ligne de code ?
Avec quelle erreur ?
belba.yahya
Messages postés
23
Date d'inscription
mercredi 2 janvier 2019
Dernière intervention
8 février 2019
-
il me donne erreur d'éxecution '380'
Commenter la réponse de NHenry
Messages postés
23
Date d'inscription
mercredi 2 janvier 2019
Dernière intervention
8 février 2019
0
Merci
voilà
quand j'ouvre mon classeur à nouveau il m'affiche:"erreur d'éxecution '380' et quand je fais débogage il me donne couleur rouge dans l'avant dérnier ligne la phrase suivante: (.ComboBox1.ListIndex = Mo - 1 )
et voiçi mon code:

Option Explicit

' ***********************************************************************

' V2 = OK


Sub Init_Combo(Optional x As Byte)
Dim i As Byte

    With Sheets("planning")
        .ComboBox1.List = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
        For i = 1 To 20
            .ComboBox2.AddItem 2018 + i
        Next i
    End With
    
End Sub



Sub Prec(Optional x As Byte)
    PrecSuiv False
End Sub


Sub Suiv(Optional x As Byte)
    PrecSuiv True
End Sub


Sub PrecSuiv(Plus As Boolean)
Dim Mo As Integer, An As Integer

    With Sheets("Planning")
        Mo = .ComboBox1.ListIndex + 1
        An = .ComboBox2.Value
        Mo = Mo + IIf(Plus, 1, -1)
        An = An + IIf(Mo = 0, -1, IIf(Mo = 13, 1, 0))
        Mo = IIf(Mo = 0, 12, IIf(Mo = 13, 1, Mo))
        .ComboBox1.ListIndex = Mo - 1   
        .ComboBox2.Value = An

    End With
End Sub


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
NHenry
Messages postés
14386
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 février 2019
215 -
Il est bien aussi de préciser le message d'erreur.
Mais rapidement, je dirais que peut être que ton ComboBox n'est pas encore rempli au moment du premier appel, donc pas possible de sélectionner un élément.
Commenter la réponse de belba.yahya
Messages postés
23
Date d'inscription
mercredi 2 janvier 2019
Dernière intervention
8 février 2019
0
Merci
voiçi le code VBA que j'ai fais dans le module
Sub Init_Combo(Optional x As Byte)
Dim i As Byte

With Sheets("planning")
.ComboBox1.ListIndex = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
For i = 1 To 20
.ComboBox2.AddItem 2018 + i
Next i
End With

End Sub



Sub Prec(Optional x As Byte)
PrecSuiv False
End Sub


Sub Suiv(Optional x As Byte)
PrecSuiv True
End Sub


Sub PrecSuiv(Plus As Boolean)
Dim Mo As Integer, An As Integer

With Sheets("planning")
Mo = .ComboBox1.ListIndex + 1
An = .ComboBox2.Value
Mo = Mo + IIf(Plus, 1, -1)
An = An + IIf(Mo = 0, -1, IIf(Mo = 13, 1, 0))
Mo = IIf(Mo = 0, 12, IIf(Mo = 13, 1, Mo))
.ComboBox1.ListIndex = Mo - 1
.ComboBox2.Value = An

End With
End Sub

alors il m'affiche erreur d'execution dans la phrase suivante qui tout en dessous:.ComboBox1.ListIndex = Mo - 1
belba.yahya
Messages postés
23
Date d'inscription
mercredi 2 janvier 2019
Dernière intervention
8 février 2019
-
je le rectifie dans le débogage mais en fermant le classeur et l'ouvrir à nouveau je trouve les deux combobox vide+une erreur d'éxécution'380'
NHenry
Messages postés
14386
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 février 2019
215 -
Il faut appeller "Init_Combo" pour remplir la liste, elle n'est pas sauvegardée par VBA, tu dois le faire toi même.
De plus à quoi te sert le paramètre "x" ?
belba.yahya
Messages postés
23
Date d'inscription
mercredi 2 janvier 2019
Dernière intervention
8 février 2019
-
je ne sais pas vraiment Monsieur Henry
sauf que j'ai copié le code car je n'ai pas trouver un moyen de créer un tableau sous forme de calendrier pour mon travail,alors j'ai choisis les combobox pour simplifier la recherche dans le planning calendrier pour qu'il me donne les journée du mois recherché sur le combobox.
Commenter la réponse de belba.yahya
Messages postés
23
Date d'inscription
mercredi 2 janvier 2019
Dernière intervention
8 février 2019
0
Merci
merci M Henry pour votre réponse
de toute façon j'ai copié ce code dans mon classeur, j'ai fais toute les possibilités pour résoudre mon problème,comment puis-je appeler "init_combo" "x" je ne sais même pas: à mon avis "Sub Prec" et "Sub Suiv" pour faire bouger combobox ex:
Combobox= Janvier, si je clique suiv, c'est février, et si Prec c'est décembre.
NHenry
Messages postés
14386
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 février 2019
215 -
"x" je ne sais même pas
Donc tu as récupéré un bout de code sur le net sans essayer de le comprendre ?

Tu peux appeler "init_combo" dans le Initialize de ton Userform.
Commenter la réponse de belba.yahya