[VB6][ComboBox]Erreur 380 Aléatoire ??

Résolu
ZeMoskito Messages postés 13 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 3 avril 2006 - 31 mars 2006 à 17:30
ZeMoskito Messages postés 13 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 3 avril 2006 - 3 avril 2006 à 10:40
Bonjour à tous :)

Voici mon problème (mon sujet était déjà pas mal explicite je pense ;)

J'ai deux fichiers Excel avec beaucoup de VB/VBA derrière. Dans un cas les macros se déroulent sans accrocs (désolés ;)), dans le deuxième cas j'ai droit à la fameuse erreur d'exécution 380 ("Impossible de définir la propriété .text", "Valeur de propriété non valide").

Donc mon problème ne se trouve pas vraiment dans cette erreur car j'ai réussi à la "corriger", mais dans le fait qu'il y'ait un comportement disctinct pour deux macros identiques... et j'aimerais bien savoir pourquoi afin que celà ne puisse pas se reproduire !

Voici le code en question:


Private Sub UserForm_Activate()
    'lecture de la periode
    m_sPeriode = GetPeriod()
    With ComboBoxMonth
        'Sélection de la période en cours
        If HasValue(m_sPeriode) Then
            .text = m_sPeriode <==   c'est ici que l'erreur était levée 
        Else
            .ListIndex  = 0
        End If
    End With
End Sub

'*******************************************************************
'Initialisation de la fenetre
'*******************************************************************
Private Sub UserForm_Initialize()
    Dim dDate As Date
    Dim sYear As String
    Dim i As Integer
    Dim iFin As Integer
    Dim sItem As String
    
On Error Resume Next

    sYear = Format(Date, "yyyy")
    iFin = CInt(Format(Date, "mm"))

    'Remplissage avec un glissement sur une année
    With ComboBoxMonth
         
            For i = iFin To 1 Step -1
                sItem = NumberToMonth(i) & " " & sYear
                .AddItem (sItem)
            Next
            
            For i = 12 To (iFin + 1) Step -1
                sItem = NumberToMonth(i) & " " & CStr(CInt(sYear) - 1)
                .AddItem (sItem)
            Next

    End With
    
End Sub



En fait le problème semble venir du fait qu'il faille remplir la combo et initialiser la propriété text dans la même fonction (en l'occurence j'ai mis tout ces traitement dans l'activate et ça passe sans problème dans les deux cas). OR, si c'est vraiment le problème (classique pour les list et combo) pourquoi est-ce que celà fonctionne dans un cas et pas dans l'autre !??

Je teste évidemment les deux sur ma machine donc hardware et software sont identiques dans les deux cas... voyez vous une anomalie quelconque qui pourrait expliquer ce type de comportement ??

Merci de votre écoute dans tous les cas ! :D

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
31 mars 2006 à 17:42
Salut
Jamais rencontré cette erreur.
Quand l'erreur survient, que vaut m_sPeriode ?
Existe t-il dans la liste une donnée qui vale cette valeur ?
Un .Text est un texte alors que m_sPeriode semble être numérique --> Essaye avec CStr(m_sPeriode)

Personnellement, j'évite d'utiliser .Text d'un Combo.
Eventuellement, ajoute un DoEvents après le GetPeriod(), ça laissera le temps à la Combo de se rafraichir et de renseigner son .Text
Fait plutôt une boucle du style :
For r = 0 To Combo.ListCount -1
If CStr(m_sPeriode) = Combo.List(r) Then
Combo.ListIndex = r
Exit For
End If
Next r
' Cas où la boucle n'a rien trouvé : r vaut maxi de r +1, donc Combo.ListCountIf r Combo.ListCount Then Combo.ListIndex -1

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
3
ZeMoskito Messages postés 13 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 3 avril 2006
3 avril 2006 à 10:40
Ca roule :) merci beaucoup, avec l'utilisation des listIndex c'est passé comme sur des roulettes. Dommage que les messages de VB ne soit pas plus explicite ou qu'il n'interdise pas ces fonctionnalités, car si un coup ca marche et un coup ca marche pas c'est un peu galère...

Mais merci beaucoup, ton éclairage m'a apporté la lumière ;)

@++ et encore merci
3
ZeMoskito Messages postés 13 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 3 avril 2006
3 avril 2006 à 09:59
Merci pour ta réponse !

la variable m_sPeriode est une chaine et lors de l'affectation elle est non nulle "DECEMBRE 2004" par exemple. Il y'a peut-être un problème avec une valeur identique, et ça expliquerait donc pourquoi le problème n'est pas présent dans les deux cas... je vais vérifier ça tout de suite ;)

Merci beaucoup pour ta participation, car c'est la qu'on voit que certains problème pourtant "simpl" nous échappe complètement à force d'avoir le nez dans le code !!

Bon je vais voir ça et je te confirme si c'est ça ;)

PS: merci aussi pour ta boucle, je vais voir ce que je vais en faire :D
0
ZeMoskito Messages postés 13 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 3 avril 2006
3 avril 2006 à 10:01
Quoi que non... maintenant que j'y pense j'y avais pensé déjà ^_^, et même avec une valeur en dur "toto" non présente dans la combo ca avait planté pareil... mais je vais quand même revoir mon affectation et la remplacer par ta boucle !

Merci ;)
0
Rejoignez-nous