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

VB 6 et antérieur Discussion :

Erreur 360 sur objet déjà chargé


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut Erreur 360 sur objet déjà chargé
    Salut,

    J'ai un petit problème sur des contrôles dynamiques.

    En fait, je charge sur ma forme un textbox par l'intermédiaire de la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
              intIndex = fldTextZone.Count+1
              Load fldTextZone(intIndex)
    Une fois chargé, je donne la possibilité à l'utilisateur de supprimer ce contrôle de son écran, par l'intermédiaire de la commande Unload.

    Là aucun problème.

    Où ça se gâte, c'est lorsque l'utilisateur recharge ce même contrôle, alors qu'il a été précédemment déchargé, sur sa form, par la même commande que ci-dessus.

    Le problème, c'est que j'obtiens alors l'erreur suivante :

    Erreur 360 : Objet déjà chargé
    Quand j'observe le contrôle avec la fenêtre espion, le contrôle en question n'est effectivement pas chargé en mémoire, mais il ne veut plus rien savoir.

    Donc, ou se situe le problème ? Si vous avez des pistes.

  2. #2
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Bon, alors, j'ai trouvé l'explication.

    Pour obtenir l'indice de plus grand, j'utilisais la fonction Count, mais celle-ci ne fonctionne pas. Il faut employer UBound qui retourne l'indice le plus élevé.

    Question subsidiaire : pourquoi utiliser ubound en lieu et place de count ? Quelles sont les différences entre ces 2 fonctions ?

    Merci.

  3. #3
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Ubound renvoie l'indice le plus élevé, il peut manquer des controles depuis le controle n° 0 à controle.count qui lui, donne le nombre d'éléments dans la collection
    Suppose qu'il y ait trois controles et que tu supprimes le deuxieme et le premier . ubound retournera 2 et count 1

  4. #4
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Ok, c'est clair. C'est donc bien UBound que je dois utiliser.

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Le topic est résolu mais j'ajouterai quand même qu'en employant systématiquement Ubound tu risque de te retrouver avec des contrôle avec un index faramineux, je procéderait plutôt avec un petit tableau style...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ' dans module du Form
    Dim NumC As Integer
    Dim T(4) As Boolean
    Et dans la forme..(pour load 4 textes de 1 à 4)
    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
     
    '2 boutons et un text Text1(0)
    Private Sub Command1_Click()
    Dim e As Integer, i As Integer
        e = Text1.UBound + 1
        If e > 4 Then
            'chercher si index libre
            For i = 1 To 4
                If T(i) = False Then Exit For
            Next i
            If i > 4 Then Exit Sub
            e = i
        End If
        Load Text1(e)
        Text1(e).Text = e
        Text1(e).Move 1000, 500 + ((e - 1) * 400), 1000, 400
        Text1(e).Visible = True
        NumC = e
        T(e) = True
    End Sub
     
    Private Sub Command2_Click()
        Unload Text1(NumC)
        T(NumC) = False
    End Sub
     
    Private Sub Text1_GotFocus(Index As Integer)
        NumC = Index
    End Sub
    Les index ne dépasseront pas 4
    A+

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

Discussions similaires

  1. [XL-2010] Erreur '1004' sur objet un Range lors d'un .copy
    Par ericjha dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/11/2014, 16h35
  2. Erreur 145 sur table mysql
    Par ramses83 dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/09/2007, 21h09
  3. [Kylix] erreur time.sur kylix avec redhat 9.0
    Par sumco dans le forum EDI
    Réponses: 4
    Dernier message: 20/05/2004, 15h13
  4. Réponses: 9
    Dernier message: 27/04/2004, 11h01
  5. [VB6] Erreur 9 sur redim preserve
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/10/2002, 17h29

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