Erreur de compilation : membre de méthode ou de données introuvables

Bonjour à tous,

Je suis nouveau sur le forum. Je vous souhaite déjà à tous une bonne année et tous mes meilleurs voeux.

Je vous explique mon souci :

Lorsque j'exécute mon code, le message suivant apparait : erreur de compilation membre de méthode ou de données introuvables. Il me surligne en jaune "Private Sub UserForm_Initialize()" et en bleu ".cbocat". Cbocat est une de mes combobox, dont je suis allé vérifier le nom 36 fois. Je ne comprends pas vraiment l'erreur du code en sachant qu'il sert à avoir une liste déroulante dépendante.

Voici mon code :

Private Sub UserForm_Initialize()
Colonne = 5
Sheets("Centre de Pilotage").Range ("E3:K3")
Do While Cells(3, Colonne).Value <> ""
ModuleDépenses.cbocat.AddItem Cells(3, Colonne).Value
Colonne = Colonne + 1
Loop

End Sub
Private Sub cbocat_change()
i = 5
ModuleDépenses.cbosouscat.Clear
Sheets("Centre de Pilotage").Range ("E4:K13")
Do While Cells(3, i).Value <> ""
If Cells(3, i).Value = cbocat.Value Then
Cells(3, i).Select
Colonne = Active.Cell.Column
End If
i = i + 1
j = 4
Do While Cells(j, Colonne).Value <> ""
ModuleDépenses.cbosouscat.AddItem Cells(j, Colonne)
j = j + 1
Loop
cbosouscat.ListIndex = 0
End Sub

Je vous remercie. Si vous voulez des informations supplémentaires, n'hésitez pas, je répondrai certainement très rapidement.

Je vous souhaite une agréable journée,

Bonjour,

Remplace

ModuleDépenses.cbocat.AddItem Cells(3, Colonne).Value

par

Me.cbocat.AddItem Cells(3, Colonne).Value

idem pour le reste des Cbox

Ne pas mettre d'accents dans le VBA (sauf pour des commentaires, etc)

Merci pour ta réponse.

Cependant, nouvelle erreur : erreur d'exécution 438 propriété ou méthode non gérée par cet objet...

Je vous remets le code :

Dim Colonne As Integer
Dim i As Integer, j As Integer

Private Sub UserForm_Initialize()
Colonne = 5
Sheets("Centre de Pilotage").Range ("E3:K3")
Do While Cells(3, Colonne).Value <> ""
Me.cbocat.AddItem Cells(3, Colonne).Value
Colonne = Colonne + 1
Loop

End Sub
Private Sub cbocat_change()
i = 5
Me.cbosouscat.Clear
Sheets("Centre de Pilotage").Range ("E4:K13")
Do While Cells(3, i).Value <> ""
If Cells(3, i).Value = cbocat.Value Then
Cells(3, i).Select
Colonne = Active.Cell.Column
End If
i = i + 1
j = 4
Do While Cells(j, Colonne).Value <> ""
Me.cbosouscat.AddItem Cells(j, Colonne)
j = j + 1
Loop
cbosouscat.ListIndex = 0
End Sub

Avez-vous des idées ?

Merci à vous,

salut

il manque encore un me sur l'une de tes formules dans la condition

If Cells(3, i).Value = cbocat.Value Then

Jeb

Bonsoir,

Ces instructions incomplètes provoquent une erreur

Sheets("Centre de Pilotage").Range ("E3:K3")
Sheets("Centre de Pilotage").Range ("E4:K13")

Bonjour,

Je ne vois pas où il manque un "Me" ?

Merci,

Elles sont incomplètes car elles n'indiquent aucune action. Que pensiez-vous faire ??

Oui j'ai capté, j'ai modifié mon message en même temps que votre post.

Je veux juste lui dire d'aller chercher les informations dans cette liste.

D'après ce que j'ai compris, ce code devrait convenir :

Private Sub UserForm_Initialize()
    Dim cell As Range

    Me.cbocat.Clear
    For Each cell In Sheets("Centre de Pilotage").Range("E3:K3")
        Me.cbocat.AddItem cell.Value
    Next cell

End Sub
Private Sub cbocat_change()
    Dim cell As Range

    Me.cbosouscat.Clear
    With Sheets("Centre de Pilotage")
        For Each cell In .Range("E4:K13")
            If .Cells(3, cell.Column).Value = cbocat.Value Then Me.cbosouscat.AddItem cell.Value
        Next cell
    End With
    Me.cbosouscat.ListIndex = 0

End Sub

Bonjour,

Voici en pièces jointes le message d'erreur lorsque je rentre votre code.

En fait mon but est de créer une liste déroulante dynamique dans le formulaire de saisie.

Par exemple, pour la catégorie "loisirs", je veux uniquement les sous-catégories correspondant à "loisirs".

Les données sont dans la feuille "centre de pilotage", aux plages indiquées.

Pouvez-vous grâce à ceci modifier votre code ?

Cordialement,

capture

Bonjour, Bonjour à tous !

A mon avis, si tu fournissais la disposition exacte de tes données dans la feuille Centre de pilotage, Thev t'aurait déjà écrit la procédure adéquate...

Cordialement.

Bonjour,

pas de souci, je suis nouveau, je me suis peut-être mal exprimé.

Voici la feuille en question en pièce jointe.

Merci,

capture

Bonjour,

ci-joint code non testé. Fournir un fichier serait mieux. En cas d'erreur, indiquer l'instruction en cause.

Private Sub UserForm_Initialize()

    With Sheets("Centre de Pilotage")
        Me.cbocat.List = .Range("E3:K3").Value
    End With

End Sub
Private Sub cbocat_change()
    Dim dépense As Range

    With Sheets("Centre de Pilotage")
        Set dépense = .Range("E3:K3").Cells(Me.cbocat.ListIndex + 1)
        Me.cbosouscat.List = Range(.Cells(4, dépense.Column), .Cells(13, dépense.Column)).Value
    End With

End Sub

Bonjour,

Merci beaucoup pour votre aide.

"Erreur d'exécution 70, permission refusée." pour le dernier code. Je ne sais pas du tout ce que cela signifie. :p

Bonne soirée,

Voici une partie de mon fichier qui suffit pour faire le code normalement.

Cela vous aide ?

Bien cordialement,

4fichierforum.xlsx (63.29 Ko)

Bonsoir,

"Erreur d'exécution 70, permission refusée." pour le dernier code.

A priori, cela provient du fait que la propriété Rowsource est renseignée dans une de vos combobox, cbocat ou cbosouscat.

Par ailleurs, il serait mieux de communiquer un fichier .xlsm et non un fichier .xlsx qui enlève toute la partie macro.

Oui exact. J'ai été un peu rapide pour envoyer le fichier, j'en ai oublié l'essentiel.

Pour l'instant ça marche ! Cependant je ne peux choisir que la catégorie habitation (qui m'amène grâce à tes magnifiques talents à la bonne sous-catégorie, merci beaucoup) avec ce programme. Bon je vais essayer de me débrouiller un peu seul, donc j'essaie d'afficher toutes les catégories grâce à mes propres moyens mais si je n'y arrive pas, je te recontacterai sans doute...

Merci beaucoup en tout cas.

PS : j'envoie le bon fichier.

5fichierforum.xlsm (63.25 Ko)

Voilà j'ai réussi, voici mon code :

Private Sub UserForm_Initialize()
    For i = 5 To 11
       cbocat.AddItem Cells(3, i)
   Next
End Sub
Private Sub cbocat_change()
    Dim dépense As Range

    With Sheets("Centre de Pilotage")
        Set dépense = .Range("E3:K3").Cells(Me.cbocat.ListIndex + 1)
        Me.cbosouscat.List = Range(.Cells(4, dépense.Column), .Cells(13, dépense.Column)).Value
    End With

End Sub

Allez comprendre pourquoi, le code marchait hier, aujourd'hui il me met "type de paiement, libellé..." dans les catégories. Incroyable.....

Rechercher des sujets similaires à "erreur compilation membre methode donnees introuvables"