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

Messages postés
13
Date d'inscription
vendredi 30 mai 2003
Dernière intervention
3 avril 2006
- 31 mars 2006 à 17:30 - Dernière réponse :
Messages postés
13
Date d'inscription
vendredi 30 mai 2003
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
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 31 mars 2006 à 17:42
3
Merci
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

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Meilleure réponse
Messages postés
13
Date d'inscription
vendredi 30 mai 2003
Dernière intervention
3 avril 2006
- 3 avril 2006 à 10:40
3
Merci
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

Merci ZeMoskito 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Messages postés
13
Date d'inscription
vendredi 30 mai 2003
Dernière intervention
3 avril 2006
- 3 avril 2006 à 09:59
0
Merci
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
Messages postés
13
Date d'inscription
vendredi 30 mai 2003
Dernière intervention
3 avril 2006
- 3 avril 2006 à 10:01
0
Merci
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 ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.