Probléme d'éxecution

Fermé
belba.yahya Messages postés 112 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 5 août 2020 - 30 janv. 2019 à 19:30
belba.yahya Messages postés 112 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 5 août 2020 - 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

4 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
30 janv. 2019 à 19:49
Sur quelle ligne de code ?
Avec quelle erreur ?
0
belba.yahya Messages postés 112 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 5 août 2020
30 janv. 2019 à 21:01
il me donne erreur d'éxecution '380'
0
belba.yahya Messages postés 112 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 5 août 2020
Modifié le 30 janv. 2019 à 21:51
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.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
30 janv. 2019 à 21:56
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.
0
belba.yahya Messages postés 112 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 5 août 2020
30 janv. 2019 à 22:05
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
0
belba.yahya Messages postés 112 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 5 août 2020
30 janv. 2019 à 22:06
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'
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
31 janv. 2019 à 18:32
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" ?
0
belba.yahya Messages postés 112 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 5 août 2020
3 févr. 2019 à 16:48
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.
0
belba.yahya Messages postés 112 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 5 août 2020
31 janv. 2019 à 20:47
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.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
3 févr. 2019 à 16:09
"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.
0