Erreur de compilation : membre de méthode ou de données introuvables Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'699
Appréciations reçues : 228
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 24 janvier 2018, 10:51

Bonjour,

ci-joint exemple de formulaire en utilisant votre objet tableau "dépenses".
FichierForum1.xlsm
(69.05 Kio) Téléchargé 4 fois
i
iChoCow
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 19 janvier 2018
Version d'Excel : 2016

Message par iChoCow » 24 janvier 2018, 10:52

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,
i
iChoCow
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 19 janvier 2018
Version d'Excel : 2016

Message par iChoCow » 24 janvier 2018, 10:54

Merci pour votre aide Thev ! Vous êtes admirable ! :)
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'699
Appréciations reçues : 228
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 24 janvier 2018, 11:02

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.
Modifié en dernier par thev le 24 janvier 2018, 11:18, modifié 1 fois.
i
iChoCow
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 19 janvier 2018
Version d'Excel : 2016

Message par iChoCow » 24 janvier 2018, 11:07

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
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'699
Appréciations reçues : 228
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 24 janvier 2018, 11:16

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.
Modifié en dernier par thev le 24 janvier 2018, 20:48, modifié 1 fois.
i
iChoCow
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 19 janvier 2018
Version d'Excel : 2016

Message par iChoCow » 24 janvier 2018, 11:35

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,
i
iChoCow
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 19 janvier 2018
Version d'Excel : 2016

Message par iChoCow » 24 janvier 2018, 15:12

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"...
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'699
Appréciations reçues : 228
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 24 janvier 2018, 19:36

Essayer
set cell = .ListColumns("Mois").Range.Find("")
Si vous ne trouvez pas l'erreur, il faudrait recommuniquer votre code.
i
iChoCow
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 19 janvier 2018
Version d'Excel : 2016

Message par iChoCow » 25 janvier 2018, 13:09

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à :(
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message