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

Macros et VBA Excel Discussion :

[VBA-E] objet specifique introuvable


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut [VBA-E] objet specifique introuvable
    BONJOUR ,
    j'ai un petit souci lorsque je souhaite initialiser mes combobox ......
    mon userform ce nomme : grille

    erreur d' execution -2147024809( 80070057)
    objet specifique introuvable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub InitCombo(NoLigne, NoColonne)
    Dim NomCombo As String
    Dim Plage As String
    Sheets("bd").Activate
        Plage = Range(Cells(3, NoColonne), Cells(NoLigne, NoColonne)).Address
        NomCombo = "COMBOBOX" & NoColonne
         With grille.Controls(NomCombo)bugage a ce niveau
            .Text = Cells(3, NoColonne)
            .RowSource = Plage
             
        End With
       
    End Sub

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    C'est quoi l'objet "grille"?

    C'est peut-être de ce côté qu'il faut chercher l'erreur
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut
    OUI J' ai deja regardé mais grille c'est le nom de mon userform

  4. #4
    Membre éclairé Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 576
    Par défaut
    Je viens de voir Combobox en majuscule.
    Il reconait peut être pas à ce niveau là

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Lorsque cela plante, regarde la valeur de NOMCOMBO, soit en infobulle en mettant curseur souris dessus, soit via fenêtre d'exécution (CTRL+G) puis, dans cette fenêtre, tu saisis
    La valeur sera affichée et tu pourras vérifier
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Où est placé le code que tu nous montres?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  7. #7
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut
    En fait le code est placé sous le bouton "nouvelle fiches"
    le truc c'est que dans mon userform grille j'ai plusieurs combobox lieé entre elle
    quand je click sur le bouton " nouvelle fiches" je lance plusieurs inputbox pour completer une nouvelle saisie qui constitue une ligne en fin de mon tableau
    maintenant j'aimerai que cette nouvelle ligne soit incluse dans mes rowsources

    si ya un autre moyen d'initialiser mes combobox je suis preneur

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Si ton code est placé dans le Form en question, tu peux y faire référence par Me.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  9. #9
    Membre éclairé
    Avatar de mortalino
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    Salut,

    en VBA, il n'existe pas de groupe de contrôles (contrairement à VB6).
    Et quelque chose dans ton code m'interpelle :

    NomCombo = "COMBOBOX" & NoColonne
    => ça ne prendra pas.

    Il faut faire une boucle sur tes objets, comme ceci (testé) :

    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
    Sub InitCombo(NoLigne, NoColonne)
        Dim NomCombo    As String
        Dim Plage       As String
        Dim ctl         As Control
     
    Sheets("bd").Activate
    Plage = Range(Cells(3, NoColonne), Cells(NoLigne, NoColonne)).Address
    NomCombo = "ComboBox" & NoColonne
        For Each ctl In Me.Controls
            If ctl.Name = NomCombo Then
                ctl.Text = Cells(3, NoColonne)
                ctl.RowSource = Plage
                Exit For
            End If
       Next ctl
    End Sub
    @++

  10. #10
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour


    NomCombo = "COMBOBOX" & NoColonne

    => ça ne prendra pas.
    bien sur que si... ;o)

    La procédure fonctionne sans probleme chez moi.
    tu peux donner plus de détails sur le fonctionnement de ton projet?
    dans quelle condition est appelée la macro?


    bonne journée
    michel

  11. #11
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut
    en fait je souhaite ajouter une nouvelle fiches je clique sur mon bouton pour lancer la macro

    ma macro doit permettre de remplir une nouvelle ligne dans mon tableau ( sur ma feuille bd ) et que celle ci soit incrementer en rowsources dans mes combobox .

  12. #12
    Membre éclairé
    Avatar de mortalino
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    Salut,

    oui, bien vu, j'ai longuement cherché comment faire et maintenant que je ne fais plus de vba, voici la solution sous mes yeux.
    Je ne savais pas que .Controls acceptait l'argument String pour les noms des contrôles

    Merci

    @++

  13. #13
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut
    c cool quand ça marche

  14. #14
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut
    j'ai comprend plus rien .......
    ja me permet de vous joindre mon fichier ..

  15. #15
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    as tu vérifié la valeur contenu par ta variable NoColonne au moment du bug...pour cela au moment du message d'erreur tu chosi débogage... puis tu place le curseur de la souris sur ta variable ...

  16. #16
    Membre éclairé
    Avatar de mortalino
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    Je viens de regarder ton fichier, et j'ai vu deux choses :

    1/ Qu'est ce que cette procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub chercher_Initialize()
    Je demande ça car elle n'est jamais appelée !!

    2/ Dans ta boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub chercher_Initialize()
     
    Dim DernièreLigne As Integer
    Sheets("bd").Activate
        DernièreLigne = ActiveSheet.Range("c5").SpecialCells(xlCellTypeLastCell).Row + 1 ' Première ligne vide
        For i = 1 To 23
            InitCombo DernièreLigne, i
        Next
    End Sub
    Dès que i atteind 4, ça plante, pour la simple et bonne raison, que tu n'as pas d'objet qui s'appelle ComboBox4.

    J'espère t'avoir mis sur la voie, bon courage
    @++

  17. #17
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut
    ta variable NoColonne au moment du bug...pour cela au moment du message d'erreur tu chosi débogage... puis tu place le curseur de la souris sur ta variable ...
    Aujourd'hui 23h02
    no colonne = 1 mais ça m avance pas

  18. #18
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut
    oui desole pour chercher_Initialize() en fait j'ai du changer de nom de mon userform


    mortalino
    Dès que i atteind 4, ça plante, pour la simple et bonne raison, que tu n'as pas d'objet qui s'appelle ComboBox4.
    comment remedier au probleme ?

  19. #19
    Membre éclairé
    Avatar de mortalino
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    Pour le coup du nom du UserForm, cela ne devrait avoir aucune incidence dans le sens ou peu importe le nom que tu lui donnes, la procédure sera toujours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub UserForm_Initialize()
    Dim DernièreLigne As Integer
    Sheets("bd").Activate
        DernièreLigne = ActiveSheet.Range("c5").SpecialCells(xlCellTypeLastCell).Row + 1 ' Première ligne vide
        For i = 1 To 23
            InitCombo DernièreLigne, i
        Next
    
    End Sub
    Ensuite, pour le combobox, soit tu renommes le bon en ComboBox4, soit tu veux sauter le ComboBox4 dans la boucle, et dans ce cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For i = 1 To 23
            If i <> 4 Then InitCombo DernièreLigne, i
        Next
    @++

  20. #20
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut
    EN FAIT G RENOMMER TOUTE MES COMBOBOX EN COMMENACANT PAR CBOX
    EX CBOX1,CBOX2,CBOX3,ETC....
    et ça marche toujours pas

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VBA] Atteindre dossier spécifique sur outlook
    Par jiamer dans le forum Access
    Réponses: 8
    Dernier message: 21/05/2007, 13h48
  2. [Vector/ArrayList] Ajouter/Afficher un element de type objet specifique
    Par elbopha dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 16/10/2006, 08h37
  3. [SQL2K]Requete sous VBA : Invalid objet
    Par jeeerome dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/07/2006, 08h56
  4. [VBA] Passage objet Form : err 13 incompatibilité de type.
    Par Caroline1 dans le forum Contribuez
    Réponses: 6
    Dernier message: 12/04/2006, 14h39
  5. VBA : export objet OLE
    Par ghisl1 dans le forum Access
    Réponses: 2
    Dernier message: 12/10/2005, 22h23

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