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

Excel Discussion :

tableau structuré - userform - vba [XL-2010]


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    INGENIEUR MECANIQUE
    Inscrit en
    Novembre 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : INGENIEUR MECANIQUE
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2020
    Messages : 8
    Par défaut tableau structuré - userform - vba
    Bonjour,

    Je cherche à faire une macro de gestion de budget. Mon code fonctionnait mais je ne sais pas pourquoi il bug.
    J'ai une userform qui est rempli, en fonction d'une valeur dans une combobox j'ajoute une ligne dans le bon tableau et copie les données de la userform.

    J'ai une erreur de type 31 sur les lignes de code de ce genre :

    [Tableau_BNP].Rows([Tableau_BNP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))

    Pourriez-vous m'aider à corriger ce bug svp.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
     
    Private Sub CommandButton1_Click()
    'Option Compare Text
     
    Dim Compte As Variant
    Dim LastLine As Integer
     
    Compte = (ComboBox_Compte.Value)
     
    Select Case Compte
    'on ajoute une ligne ddans le bon tableau pour copier les ?lements de la USERFORM
     
        Case "Compte BNP"
            ActiveSheet.ListObjects("Tableau_BNP").ListRows.Add
            LastLine = ActiveSheet.ListObjects("Tableau_BNP").DataBodyRange.Rows.Count
            [Tableau_BNP].Item(LastLine, 1).Select
            If [Tableau_BNP].Item(LastLine, 1) = "" Then
                [Tableau_BNP].Rows([Tableau_BNP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))
                Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
            End If
     
        Case "Compte LBP"
            ActiveSheet.ListObjects("Tableau_LBP").ListRows.Add
            LastLine = ActiveSheet.ListObjects("Tableau_LBP").DataBodyRange.Rows.Count
            [Tableau_LBP].Item(LastLine, 1).Select
            If [Tableau_LBP].Item(LastLine, 1) = "" Then
                [Tableau_LBP].Rows([Tableau_LBP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))
                Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
            End If
     
        Case "CAISSE"
            ActiveSheet.ListObjects("Tableau_CAISSE").ListRows.Add
            LastLine = ActiveSheet.ListObjects("Tableau_CAISSE").DataBodyRange.Rows.Count
            [Tableau_CAISSE].Item(LastLine, 1).Select
            If [Tableau_CAISSE].Item(LastLine, 1) = "" Then
                [Tableau_CAISSE].Rows([Tableau_CAISSE].Rows.Count) = Array(TextBox_Description.Value, TextBox_Montant.Value)
                Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
            End If
    End Select
     
    If UCase(TextBox_Description.Value) Like "*RETR*" Then
            ActiveSheet.ListObjects("Tableau_CAISSE").ListRows.Add
            LastLine = ActiveSheet.ListObjects("Tableau_CAISSE").DataBodyRange.Rows.Count
            [Tableau_CAISSE].Item(LastLine, 1).Select
            If [Tableau_CAISSE].Item(LastLine, 1) = "" Then
                [Tableau_CAISSE].Rows([Tableau_CAISSE].Rows.Count) = Array(TextBox_Description.Value & " " & ComboBox_Compte.Value & " " & CDate(TextBox_Daate.Value), TextBox_Montant.Value)
                Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
            End If
    End If
     
     
    ' Transfer d'argent entre compte BNP & la poste
     
    If ComboBox_Provenance.Value = "Compte BNP" Then
            ActiveSheet.ListObjects("Tableau_BNP").ListRows.Add
            LastLine = ActiveSheet.ListObjects("Tableau_BNP").DataBodyRange.Rows.Count
            '[Tableau_BNP].Item(LastLine, 1).Select
            If [Tableau_BNP].Item(LastLine, 1) = "" Then
                [Tableau_BNP].Rows([Tableau_BNP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))
                Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
            End If
    End If
     
     
    If ComboBox_Destination.Value = "Compte BNP" Then
            ActiveSheet.ListObjects("Tableau_BNP").ListRows.Add
            LastLine = ActiveSheet.ListObjects("Tableau_BNP").DataBodyRange.Rows.Count
            '[Tableau_BNP].Item(LastLine, 1).Select
            If Tableau_BNP.Item(LastLine, 1) = "" Then
                [Tableau_BNP].Rows([Tableau_BNP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))
                Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
            End If
    End If
     
     
    If ComboBox_Provenance.Value = "Compte LBP" Then
            ActiveSheet.ListObjects("Tableau_LBP").ListRows.Add
            LastLine = ActiveSheet.ListObjects("Tableau_LBP").DataBodyRange.Rows.Count
            '[Tableau_LBP].Item(LastLine, 1).Select
            If [Tableau_LBP].Item(LastLine, 1) = "" Then
                [Tableau_LBP].Rows([Tableau_LBP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))
                Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
            End If
    End If
     
     
    If ComboBox_Destination.Value = "Compte LBP" Then
            ActiveSheet.ListObjects("Tableau_LBP").ListRows.Add
            LastLine = ActiveSheet.ListObjects("Tableau_LBP").DataBodyRange.Rows.Count
            '[Tableau_LBP].Item(LastLine, 1).Select
            If [Tableau_LBP].Item(LastLine, 1) = "" Then
                [Tableau_LBP].Rows([Tableau_LBP].Rows.Count) = Array(TextBox_Type_de_depense.Value, TextBox_Description.Value, TextBox_Montant.Value, CDate(TextBox_Daate.Value))
                Else: MsgBox "Arr?t du programme car on risquait d'?craser des donn?es!"
            End If
    End If
     
     
    Unload UserForm1
     
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je vous conseille la lecture du billet de Pierre Fauconnier titré Tableaux structurés VBA: AJouter une ligne dans un tableau structuré et y placer des valeurs
    Et comme vous évoquez un UserForm et les tableaux structurés, je ne peux que vous conseiller la lecture de cette contribution du même auteur Modélisation des liaisons entre userform et table de données Excel (tableau structuré)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre habitué
    Homme Profil pro
    INGENIEUR MECANIQUE
    Inscrit en
    Novembre 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : INGENIEUR MECANIQUE
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2020
    Messages : 8
    Par défaut
    Merci pour votre retour.
    J'ai lu ces 2 tickets, ils m'ont beaucoup apporté, j'ai su lier les infos des userform avec le tableau structuré. Ces 2 contributions m'ont permis d'utiliser les propriétés des tableaux structurés pour trouver la dernière ligne et insérer une ligne.
    Par contre je ne parviens pas à écrire dans ce tableau.
    Le code fonctionnait et d'un coup j'ai ce bug qui apparait et je suis bloqué.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Par contre je ne parviens pas à écrire dans ce tableau.
    Le code fonctionnait et d'un coup j'ai ce bug qui apparait et je suis bloqué.
    Avec cette seule information et sans code publié avec indication du nom du tableau, vous comprendrez, j'imagine, qu'il est difficile de vous aider, à moins d'être devin.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre habitué
    Homme Profil pro
    INGENIEUR MECANIQUE
    Inscrit en
    Novembre 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : INGENIEUR MECANIQUE
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2020
    Messages : 8
    Par défaut
    Salut Mickael,

    Le problème venait bien du Cdate. Si je ne mets pas de date ou que l'entrée ne correspond pas à une date alors j'ai une erreur.
    Avant l'ajout du CDATE, le code fonctionnait.

    Merci pour votre aide.

    Akim
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonsoir,

    Tout comme Philippe que je plussoie, je te conseille,vivement, de (re) lire les tutos de Pierre.

    Chacun travail comme il le veux ,mais a première vue, pour avoir lu,relu,étudié, tester, les consignes pro donné ici et là par Pierre et Philippe, je peux t'assurer qu'une relecture s'impose.

    Pour ton erreur, si tout fonctionnait bien "avant", le top c'est de savoir avant quoi, lol.

    Ne serait-ce pas avant que tu ajoutes un Cdate sans vérifier que la TXTbox contienne bien un Texte qui pourrait-etre 'traduit' en date ( comme indiqué tout à l'heure dans la rubrique contribuez ?)

    Perso, je n'ouvre pas les fichiers joints, pour des raisons de sécurité.

    Bat,

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

Discussions similaires

  1. Comment récupérer certaines lignes d'un tableau structuré en VBA
    Par IZZYDEBUTANT dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 08/12/2020, 16h35
  2. [XL-365] Redimensionnent d'un tableau structuré en VBA
    Par francois78 dans le forum Excel
    Réponses: 11
    Dernier message: 12/06/2020, 16h33
  3. Remplissage tableau structuré VBA via un Userform
    Par Jeremy.fuego dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 17/01/2020, 10h47
  4. [XL-365] références de tableau structuré en VBA
    Par fabrice57100 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/10/2019, 14h31
  5. [XL-2007] Tableau dans Userform VBA Excel
    Par fleur_d_eden dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 29/05/2012, 10h47

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