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

Bonjour,

ci-joint exemple de formulaire en utilisant votre objet tableau "dépenses".

7fichierforum1.xlsm (69.05 Ko)

Bon j'ai réussi à me débrouiller... Cependant autre problème : lorsque que j'appuie sur le bouton "ajouter" il m'ajoute les données sur la ligne après mon tableau, alors que je veux qu'il m'ajoute la ligne dans mon tableau comme indiqué dans mon code "la dernière ligne vide" c'est à dire A4 mais non il me met les données sur A5, après le tableau...

Voici le code (mais vous avez le fichier) :

Private Sub btnajouter_Click()
Sheets("Journal des dépenses").Activate
Range("A3").Select
Selection.End(xlDown).Select
Selection.Offset(1, 0).Select

Cordialement,

Merci pour votre aide Thev ! Vous êtes admirable !

J'ai le fichier mais je n'ai aucun code de votre part.

Par ailleurs, vu que vous utilisez des objets tableau, vous pouvez avoir un code beaucoup plus simple et plus parlant.

J'ai fait ça, mais toujours le même problème et ça ne me décale plus quand je rentre d'autres données.

ActiveSheet.Range("a3").End(xlDown).Offset(1, 0).Select

voici le code à utiliser avec votre objet tableau.

Private Sub btnajouter_Click()
    Dim journal_dépenses As Object
    Dim cell As Range
    Dim i As Integer

    Set journal_dépenses = Feuil5.ListObjects(1)
    With journal_dépenses
        'recherche première ligne vide dans tableau sinon ajout d'une ligne
        Set cell = .ListColumns("Mois").Range.Find("")
        If Not cell Is Nothing Then i = cell.Row - .HeaderRowRange.Row _
        Else .ListRows.Add: i = .ListRows.Count

        'remplissage ligne vide du tableau
        .ListColumns("Mois").DataBodyRange.Rows(i) = 1
        .ListColumns("Catégories").DataBodyRange.Rows(i) = 2
        .ListColumns("Sous-catégories").DataBodyRange.Rows(i) = 3
        '.....et de même pour tous les autres colonnes du tableau
    End With

End Sub

Bon. Je vous laisse car je sors et ne rentrerai pas avant 19h.

Merci beaucoup.

A la place de 1, 2, 3 etc j'ai rajouté cbomois, cbocat etc... Cependant à partir de libellé, excel me met "erreur d'exécution 9 : l'indice n'appartient pas à la sélection". J'essaie de trouver le problème tout seul avant votre retour.

Bonne journée à vous,

Alors j'ai solutionné le précédent problème, cependant maintenant, il me met "erreur d'exécution 91 : variable objet ou variable bloc with non définie" avec en surlignage le code suivant :

Set cell = .ListColumns("Mois").DataBodyRange.Find("")

Il m'indique "nothing" sur "cell"...

Essayer

set cell = .ListColumns("Mois").Range.Find("")

Si vous ne trouvez pas l'erreur, il faudrait recommuniquer votre code.

Incroyable. J'ouvre mon document excel, je passe trois écritures, CA MARCHE. Je ferme mon document, je le réouvre, CA NE MARCHE PLUS --> Erreur d'exécution 91 avec comme surlignage

.ListColumns("Mois").DataBodyRange.Rows(i) = cbomois

Voici le code entier :

Private Sub btnajouter_Click()
    Dim journal_dépenses As Object
    Dim cell As Range
    Dim i As Integer

    Set journal_dépenses = Feuil5.ListObjects(1)
    With journal_dépenses
        'recherche première ligne vide dans tableau sinon ajout d'une ligne
        Set cell = .ListColumns("Mois").Range.Find("")
        If Not cell Is Nothing Then i = cell.Row - .HeaderRowRange.Row _
        Else .ListRows.Add: i = .ListRows.Count

        'remplissage ligne vide du tableau
        .ListColumns("Mois").DataBodyRange.Rows(i) = cbomois
        .ListColumns("Catégories").DataBodyRange.Rows(i) = cbocat
        .ListColumns("Sous-catégories").DataBodyRange.Rows(i) = cbosouscat
        .ListColumns("Jour").DataBodyRange.Rows(i) = tojour
        .ListColumns("Type de paiement").DataBodyRange.Rows(i) = cbotypepaiement
        .ListColumns("Libellé").DataBodyRange.Rows(i) = tolibelle
        .ListColumns("Comptes").DataBodyRange.Rows(i) = cbocomptes
        .ListColumns("Montant").DataBodyRange.Rows(i) = tomontant

Je ne sais plus vraiment quoi faire là

Bonjour,

Quand on a une erreur, on restreint le champ des possibilités. A priori, je pense qu'elle vient de "cbmois". Il suffit d'essayer

.ListColumns("Mois").DataBodyRange.Rows(i) = 1

pour voir si l'erreur se produit toujours.

La formule marche quand il y a déjà des données dans le tableau. Quand il n'y a aucune donnée, erreur d'exécution 91. Au pire, je rentre ma première ligne avec donnée, et le reste avec le formulaire de saisie si on ne voit pas l'erreur.

Avez-vous déjà rencontré ce problème ?

Je n'ai pas toutes les données pour répondre à votre problème mais il y a un certainement un souci dans votre code ou la configuration de votre UserForm, voire de votre tableau.

En tout cas avec les données que vous m'avez communiquées, je n'ai aucun souci de fonctionnement

13fichierforum2.xlsm (73.23 Ko)

Bonjour,

Désolé du retard pour la réponse, j'ai réussi ce que je voulais faire.

Cordialement,

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