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 :

PB insertion ligne dans tableau structuré [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut PB insertion ligne dans tableau structuré
    Bonjour à toutes et tous ;

    Je rencontre un problème qui est certainement bête comme choux mais dont je n'arrive pas à me débarrasser.
    En pièce jointe vous avez le fichier que je suis en train de faire.

    Il s'agit pour moi de suivre les objets que je dois mettre en vente dans un vide grenier permanent. Ce genre de magasin où vous louez un emplacement pour une période donnée, vous permettant ainsi de les vendre.

    Ce fichier est composé de 4 feuilles comme suit :
    1) Feuille Liste : cela comprend la liste de tous les objets mis en vente. (Tableau structuré)
    2) Les feuilles suivantes ('BDCAT' 'CATHOMA' 'BDMAR'), contiennent des tableaux structurés me permettant d'affecter des valeurs dans la feuille 'Liste'

    J'ai ajouté sur le ruban d'Excel un onglet "Outil de saisie" me permettant d'effectuer certaines tâches juste à côté de l’onglet ‘Accueil’.

    Lorsque que j'appuie sur la première option 'Saisie', le formulaire s'affiche.

    Je saisis un premier jet de données puis je clique sur la touche « Ajouter » pour créer une nouvelle ligne dans mon tableau.

    Le problème est que je créé systématiquement une première ligne sous la ligne portant le N° de séquence ‘1’. Ce N° est géré par la formule « Ligne (A1) » directement dans le tableau structuré.
    Je n’arrive pas à utiliser la première ligne N° séquence ‘1’

    Voici donc mon fichier exemple.

    Test1-2024.xlsm

    D'avance je remercie celles et ceux qui voudront bien m'aider.
    En attendant je vous souhaite une bonne journée.

  2. #2
    Membre confirmé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 363
    Points : 645
    Points
    645
    Par défaut
    Bonjour,
    Le problème est que je créé systématiquement une première ligne sous la ligne portant le N° de séquence ‘1’. Ce N° est géré par la formule « Ligne (A1) »
    Je pense qu'il n'est pas recommandé d'incrémenter le N° de séquence avec une formule. Il est préférable de te servir d'une fonction qui incrémente le max de la colonne.
    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
    '@Description "Renvoie le maximum d'une colonne, plus 1 en option."
    Public Function GetMaxID(ByVal Table As Excel.ListObject, Optional ByVal ColumnName As String = "ID", Optional ByVal WithIncrement As Boolean)
        If Not Table Is Nothing Then
            With Table
                If .ListRows.Count > 0 Then
                    Dim MaxValue As Long
                    MaxValue = Application.WorksheetFunction.Max(.ListColumns(ColumnName).DataBodyRange)
                    GetMaxID = MaxValue + IIf(WithIncrement, 1, 0)
                Else
                    GetMaxID = 1
                End If
            End With
        Else
            GetMaxID = 0
        End If
    End Function
    Concernant l'ajout d'une ligne utilise l'objet Excel.Listrow, cela te simplifiera la vie et la compréhension du code.
    Les tableaux structurés garde en mémoire le formatage des colonnes donc nul besoin de formater la valeur des contrôles du formulaire.
    L'ajout d'une ligne peut se résumer à cela.
    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
    Private Sub Ajouter_Click()
        On Error GoTo Catch
        Dim itemListObject As Excel.ListObject
        Set itemListObject = Range("Tbl_LISTE").ListObject
     
        Dim itemRow As Excel.ListRow
        Set itemRow = itemListObject.ListRows.Add
     
        With itemRow
            .Range(.Parent.liscolumns("N° Seq").Index).Value = GetMaxID(itemListObject, "N° Seq", True)
            .Range(.Parent.liscolumns("Désignation").Index).Value = Desig.Value
            .Range(.Parent.liscolumns("Genre").Index).Value = LstSexe.Value
            .Range(.Parent.liscolumns("Catégorie d'objet").Index).Value = Combo_Categorie.Value
            .Range(.Parent.liscolumns("Type objet").Index).Value = Combo_Typobj.Valu
            .Range(.Parent.liscolumns("Marque").Index).Value = Combo_Marque.Value
            .Range(.Parent.liscolumns("Montant Fse").Index).Value = MntFse.Value
            .Range(.Parent.liscolumns("Prix Vente Hôma").Index).Value = PrixHoma.Value
        End With
     
    Catch:
        If Err.Number > 0 Then
            MsgBox "Oups... nous avons rencontré une erreur. " & Err.Description
        End If
    End Sub
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  3. #3
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonjour Valtrase;
    Je te remercie pour ta réponse ainsi pour le temps que tu as pris pour m'aider.

    Je vais regarder de près tes réponses, et essayer de tout comprendre, pour les intégrer à mon code.

    Encore un grand merci et bonne journée à toi.

  4. #4
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Re bonjour Valtrase;

    J'ai regardé tes codes, et essayé de les intégrer au mien.
    Mais j'ai quelques problèmes :

    1) Faute de frappe : Valu au lieu de Value en ligne 14 du deuxième code.
    2) Faute de frappe : liscolumns au lieu de ListColumns dans les lignes lignes 10 à 17.

    Ce n'est pas grave et n'est pas le problème, cela arrive quelque fois.

    Par contre j'ai un message d'erreur avec err.Number. le message est qualificateur incorrect.
    J'ai fais des recherches mais je n'arrive pas à voir ce qui est faux.

    Lorsque après les corrections des fautes de frappe et la mise en commentaire de la partie liée aux possibles erreurs, je tente la saisie d'un nouvel élément via mon formulaire, la ligne se créée bien mais sur la ligne 2.
    Au lieu de la première ligne (sous l'entête) du tableau.
    La ventilation dans les colonnes est correct.


    Voilà à quoi ressemble alors la mise à jour la partie de la mise à jour de la feuille 'Liste'.
    A noter que j'ai supprimé dans le code suivant ce qui est lié aux erreurs pou ressayer au moins de créer une ligne dans mon tableau.

    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
     
    '
    '   2) Sélection feuille "Liste", et positionnement sur 1ère ligne vide.
    '
        With Worksheets("Liste").Activate
     
           Dim itemListObject As Excel.ListObject
           Set itemListObject = Range("Tbl_LISTE").ListObject
     
           Dim itemRow As Excel.ListRow
           Set itemRow = itemListObject.ListRows.Add
     
           With itemRow
               .Range(.Parent.ListColumns("N° Seq").Index).Value = GetMaxID(itemListObject, "N° Seq", True)
               .Range(.Parent.ListColumns("Désignation").Index).Value = Desig.Value
               .Range(.Parent.ListColumns("Genre").Index).Value = LstSexe.Value
               .Range(.Parent.ListColumns("Catégorie d'objet").Index).Value = Combo_Categorie.Value
               .Range(.Parent.ListColumns("Type objet").Index).Value = Combo_Typobj.Value
               .Range(.Parent.ListColumns("Marque").Index).Value = Combo_Marque.Value
               .Range(.Parent.ListColumns("Montant Fse").Index).Value = MntFse.Value
               .Range(.Parent.ListColumns("Prix Vente Hôma").Index).Value = PrixHoma.Value
           End With
        End With
    La fonction 'GetMaxID' est située juste en dessous de la procédure de mise à jour.

    Je te joins le fichier dans lequel j'ai appliqué tes conseils. Peut-être ai-je fait une bêtise.

    Test2024.xlsm

    Je te remercie pour ton aide, et te souhaite une bonne journée.

  5. #5
    Membre confirmé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 363
    Points : 645
    Points
    645
    Par défaut
    Bonjour,
    Des fois j'écris à la volée d'où ce type d'erreur,
    Par contre j'ai un message d'erreur avec err.Number. le message est qualificateur incorrect.
    Tu as déclaré err de type public long dans le module Variables voilà d'où vient l'erreur.
    Du coup pourquoi toutes ces variables publique. Qui portent pour certaines le même nom que des contrôles ex: Public Combo_Marque As String cela ne sert à rien sauf d’alourdir le code donc on vire.

    Trop de commentaires tue les commentaires, utilises plutôt des noms de variables explicite, pour t'y retrouver.
    La procédure du bouton Ajouter n'a pour fonction que d'ajouter la saisie compète dans un tableau structuré, l'ajout d'une catégorie, type d'objet ou marque doit-être gérer par des boutons spécifique, cela garantie d'une certaine conformité avec le standard Windows.

    Je n'ai pas trouvé la fonction GetMaxID dans ton fichier donc :
    • Crée un module : Menu=> Insertion => Module
    • Nommes le TabsManagement par exemple.
    • Copie et colle le code ci-dessous.

    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
    '@Description "Renvoie le maximum d'une colonne, plus 1 en option."
    Public Function GetMaxID(ByVal Table As Excel.ListObject, Optional ByVal ColumnName As String = "ID", Optional ByVal WithIncrement As Boolean)
        If Not Table Is Nothing Then
            With Table
                If .ListRows.Count > 0 Then
                    Dim MaxValue As Long
                    MaxValue = Application.WorksheetFunction.Max(.ListColumns(ColumnName).DataBodyRange)
                    GetMaxID = MaxValue + IIf(WithIncrement, 1, 0)
                Else
                    GetMaxID = 1
                End If
            End With
        Else
            GetMaxID = 0
        End If
    End Function
    Maintenant on s'occupe du formulaire
    Dans le code du module du formulaire AjoutObjet colle la procédure ci-dessous :
    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
    Private Sub AjouterLigne()
        On Error GoTo Catch
        Dim itemListObject As Excel.ListObject
        Set itemListObject = Range("Tbl_LISTE").ListObject
     
        Dim itemRow As Excel.ListRow
        Set itemRow = itemListObject.ListRows.Add
     
        With itemRow
            .Range(.Parent.ListColumns("N° Seq").index).Value = GetMaxID(itemListObject, "N° Seq", True)
            .Range(.Parent.ListColumns("Désignation").index).Value = Desig.Value
            .Range(.Parent.ListColumns("Genre").index).Value = LstSexe.Value
            .Range(.Parent.ListColumns("Catégorie d'objet").index).Value = Combo_Categorie.Value
            .Range(.Parent.ListColumns("Type objet").index).Value = Combo_Typobj.Value
            .Range(.Parent.ListColumns("Marque").index).Value = Combo_Marque.Value
            .Range(.Parent.ListColumns("Montant Fse").index).Value = MntFse.Value
            .Range(.Parent.ListColumns("Prix Vente Hôma").index).Value = PrixHoma.Value
        End With
     
    Catch:
        If err.Number > 0 Then
            MsgBox "Oups... nous avons rencontré une erreur. " & err.Description
        End If
    End Sub
    Maintenant dans la procédure Ajouter_Click :
    • Remplaces tout depuis : ' 2) Sélection feuille "Liste", et positionnement sur 1ère ligne vide.
    • Jusqu’à la fin de la procédure, par AjouterLigne


    Et pour finir le module Variables :
    • Passes en commentaires l'ensemble des lignes (cela ne sert à rien)


    Voilà si je ne me suis pas trompé cela devrait résoudre le problème.

    ps. Je ne fournis pas de fichier tout prêt car le meilleur moyen d'apprendre c'est encore de s'y coller...
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 121
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 121
    Points : 1 644
    Points
    1 644
    Par défaut
    PS:
    Une technique de debuggage que j'utilise lorsqu'un gestionnaire d'erreur se déclenche.
    Considère le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub TestError()
    On Error Goto Error
        Dim Data As Long
        Data = 10 / 0
    Exit Sub
    Resume
    Error:
        Stop
        Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext
    End Sub
    Lorsque l'instruction Data = 10/0 est executée (ligne 4), cela déclenche une erreur.
    La main est directement donnée à l'instruction Stop (Ligne 8) qui, comme son nom l'indique, met l'exécution en suspend.
    Dans la marge de ton IDE, il y a une petite fleche jaune, que tu peux déplacer sur l'instruction Resume (Ligne 6), ou tu peux également faire un click droit sur cette dernière et choisir: Définir l'instruction suivante.
    Lorsque tu auras exécute l'instruction Resume en pas à pas détaillé (raccourcis clavier: F8), le curseur pointera ensuite sur l'instruction fautive.

    N'hésite pas également à mettre en place des espions, et utiliser la fenêtre d'execution pour inspecter le contenu et types de tes variables.

  7. #7
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonjour Valtrase;
    Merci pour tes conseils.
    Je vais regarder tout cela en fin d'après-midi, et je te tiens au courant.

    Je préfère aussi ne pas avoir de fichier tout fait, car ce n'est pas comme cela que l'on progresse.
    Donc j'essaie de comprendre, et j'adapte mes tentatives de code avec ce que l'on me propose.

    Encore merci pour ton aide.
    Bonne journée à toi.

    Bonjour Deedolith;
    Merci à toi pour ces infos d'aide au débogage.
    Je vais voir à comprendre cela.
    Bonne journée à toi.

  8. #8
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonjour à toutes et tous;

    Pour Valtrase :
    Désolé pour ma réponse tardive mais j'ai eu un petit problème de santé.

    J'ai apporté les modifications comme tu me le précisait dans ton dernier message.
    En espérant que je n'ai pas fait d'erreur.
    Malheureusement mon problème est toujours le même, la première ligne que je veux créer est positionnée sur la ligne 2.

    En pièce jointe le fichier modifié tel que tu l'a préconisé.
    Aurais-tu la gentillesse de faire un test sur ce fichier.

    Test3-2024.xlsm

    D'avance merci et bonne journée (soirée ?)

  9. #9
    Membre confirmé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 363
    Points : 645
    Points
    645
    Par défaut
    Bonjour,
    Non pas de problème, vous avez apparemment tout fait comme il faut. Juste qu'il restait une ligne vide dans le tableau, donc c'est normal que le code ajoute une ligne aprés celle-ci.
    Voilà le résultat une fois la ligne supprimée :
    Pièce jointe 652441

    Bonne programmation.
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  10. #10
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonsoir Valtrase;
    Encore merci pour votre aide.
    Je suis désolé je comprends bien votre logique. J'ai juste un problème :

    Comment enlever cette ligne 2 sous les titres?

    J'essaie de supprimer la ligne, mais elle revient systématiquement.

    Dois-je revoir la définition de mon tableau?
    Je ne suis pas familier quant au travail avec les tableaux structurés.

    Désolé si je vous semble être un boulet, mais j'aimerais bien comprendre.

    En tous cas encore merci pour me supporter et continuer à m'aider.
    Bonne journée à vous.

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 121
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 121
    Points : 1 644
    Points
    1 644
    Par défaut
    Citation Envoyé par jeff1494 Voir le message
    Comment enlever cette ligne 2 sous les titres?
    Ca a l'air d'être un état incohérent de ton tableau.
    Ne sachant pas si c'est du aux anciens codes ou aux nouveau, je suggère de supprimer les lignes indésirables à la main.

  12. #12
    Membre confirmé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 363
    Points : 645
    Points
    645
    Par défaut
    Bonsoir à tous,
    Ne sachant pas si c'est du aux anciens codes ou aux nouveau, je suggère de supprimer les lignes indésirables à la main.
    Personnellement c'est ce que j'ai fait.
    Curseur sur la gauche de la ligne, jusqu'à l'obtention de la flèche puis clic droit supprimer, supprimer la ligne.
    Pièce jointe 652449

    Ou bien avec une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function ClearTab(ByRef Table As Excel.ListObject)
        If Table.ListRows.Count > 0 Then
            Table.DataBodyRange.Delete
        End If
    End Function
     
    ' // Pour l'appel faire ceci dans la fenêtre d'execution par exemple:
    ' // ClearTab Range("Tbl_LISTE").ListObject
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  13. #13
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonjour à tous les deux:

    Deedolith :

    J'ai essayé de suivre tes conseils et lors de ma première tentative après un clic sur supprimer, rien ne se passe.
    Lorsque je fais un deuxième clic droit sur la ligne 2 de mon tableau, l'option supprimer apparait en grisé et donc n'est pas opérationnelle.
    Je pense que j'ai un problème avec le tableau.
    J'ai essayé de créer une nouvelle feuille et dedans un nouveau tableau, en ayant du texte dans la ligne 1 (entêtes).
    Je sélectionne les cellules renseignées de cette 1ère ligne et transforme cela en tableau.
    Je répond que mon tableau contient des entêtes, et à la finale le tableau créé contient les entêtes évidemment et une 2ème ligne vide.

    Je pense donc que j'ai un soucis avec la création du tableau structuré.
    Dois-je créer mon tableau d'une manière différente?

    Valtrase :

    J'ai tenté ta méthode de fonction depuis la fenêtre d'exécution mais même résultat que ce que j'ai expliqué à Deedolith, la ligne est toujours présente.

    Je ne suis pas un expert loin de là, mais je n'y comprends rien.
    Alors peut-être que ma version d'Excel me jouerait des tours?
    Je suis avec Office 2021.
    Pensez-vous que cela puisse jouer?

    Encore merci pour votre aide et votre soutien.
    Bonne journée à vous deux.

  14. #14
    Membre confirmé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 363
    Points : 645
    Points
    645
    Par défaut
    Bonjour,
    J'ai tenté ta méthode de fonction depuis la fenêtre d'exécution mais même résultat que ce que j'ai expliqué à Deedolith, la ligne est toujours présente.
    Excel peut être trompeur parfois. J'ai fait deux tests regardes à droite du tableau

    Ici le tableau comporte une ligne :
    Pièce jointe 652461

    Et là le tableau est vide
    Pièce jointe 652462

    Tu vois une différence ?

    La meilleure manière de le savoir c'est de faire un test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Range("Tbl_LISTE").ListObject.ListRows.Count
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  15. #15
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Salut;
    Valtrase ;

    Alors vu mon niveau c'est quelque chose que je ne pouvais pas imaginer, et à laquelle je n'aurais jamais pensé.

    C'est que je suis un du genre St Thomas.
    Et je te tire mon chapeau pour m'avoir donné la solution.

    Je retiens ta solution pour vérifier si un tableau est vide ou non.

    Un très grand merci pour ton aide si précieuse.
    Je te souhaite une très bonne journée, et vais de ce pas mettre ce post en "Résolu".

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 121
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 121
    Points : 1 644
    Points
    1 644
    Par défaut
    Pour infos:
    Un tableau structuré est composé de plusieurs élements:
    DataBodyRange: Représente la plage de données du tableau (sans les entêtes). Il peut valoir Nothing si le tableau est vide.
    ListRows: Collection d'objets ListRow représentant chaque ligne du tableau. Comme toute collection, une propriété Count permet de connaitre le nombre d'elements contenus.
    ListColumns: Même chose que ListRows, mais avec des objets ListColumn représentant les colonnes.

    Je t'invite à jeter un coup d'œil a propos de ces objets dans l'explorateur d'objets (Menu ==> Affichage ==> Explorateur d'objets, ou raccourcis clavier: F2).
    On y apprend plein de trucs.

  17. #17
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonjour;
    Deedolith;

    merci pour cette info. Ne me reste plus qu'à voir comment s'en servir.
    Bonne journée à toi.

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

Discussions similaires

  1. [XL-2013] Pb avec formule contenant RECHERCHV lors insertion ligne dans tableau structuré
    Par tico06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/03/2020, 14h25
  2. Réponses: 10
    Dernier message: 06/12/2019, 08h32
  3. [XL-2016] Optimisation code insertion ligne dans tableau
    Par Pabri dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/11/2018, 10h07
  4. [XL-2007] Insertion ligne dans un tableau par rapport à un fichier d'origine
    Par XceSs dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/01/2011, 14h05
  5. [WD-2003] Insertion automatique de ligne dans tableau word après renvoi à la ligne
    Par melouille56 dans le forum VBA Word
    Réponses: 5
    Dernier message: 05/08/2009, 15h49

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