Microsoft 365 1ère ligne non vide tableau

eric72

XLDnaute Accro
Bonjour à tous,
J'essaie désespéremment de trouver la 1ère ligne non vide d'un tableau structuré, sans succès
J'ai cherché sur les forums mais ce que j'ai trouvé ne fonctionne pas
J'ai besoin de votre lumière.
Merci beaucoup
Eric
 

Pièces jointes

  • Classeur1.xlsm
    21.6 KB · Affichages: 34

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re le fil,
En PJ un ex où un nombre aléatoire est inséré en dernière ligne, avec :
VB:
Sub derniere_ligne()
    Dim DerLigne As Long
    With [Tableau13]
        .ListObject.ListRows.Add
        .Rows(.Rows.Count + 1) = Int(1000 * Rnd)
    End With
End Sub
 

Pièces jointes

  • derlig_tableau (1).xlsm
    17.1 KB · Affichages: 3

eric72

XLDnaute Accro
je crois que cette formule là pourrait fonctionner mais ca beug, c'est peut-être le fait que la copie se fasse dans un autre fichier?
Derligne = DestFeuil1.Range("tableau13").Rows.Count - Application.CountBlank(DestFeuil1.Range("tableau13[Nom Client]")) + 2
Ca doit être mal formulé je pense.
Eric
 

Dranreb

XLDnaute Barbatruc
Bonjour.
On n'a en général pas besoin de savoir où aura été ajoutée la ligne pour pouvoir y coller des données :
La méthode Add de la collection ListRows du ListObject renvoie un ListRow. Or celui ci est muni d'une propriété Range qui représente la plage de cellules couverte par la ligne ajoutée.
 

Dranreb

XLDnaute Barbatruc
Ça n'est pas vraiment compliqué en terme de nombre de lignes de code si on enchaine tout en sachant ce que ça veut dire :
VB:
ActiveSheet.ListObjects(1).ListRows.Add.Range.Value = MonTableauDUneLigne
Ou bien
VB:
MonRange.Copy Destination:=ActiveSheet.ListObjects(1).ListRows.Add.Range
 

fanch55

XLDnaute Barbatruc
Bonsoir,
Bien que je ne comprenne pas l'utilité d'une ligne "vide" dans une table structurée,
le code ci-dessous permettra de trouver celle-ci :
VB:
Sub Chercher_Ligne_Vide_de_Tableau()
   
    Lvt [Tableau1], i&, j&
        MsgBox "ligne vide" & vbLf & _
            " =" & i & " dans" & [Tableau1].ListObject.Name & vbLf & _
            " =" & j & " dans " & [Tableau1].Parent.Name
   
    Lvt [Tableau2], i&, j&
        MsgBox "ligne vide" & vbLf & _
            " =" & i & " dans" & [Tableau2].ListObject.Name & vbLf & _
            " =" & j & " dans " & [Tableau2].Parent.Name
           
End Sub
Sub Lvt(Tableau, Optional Ligne_Table As Long, Optional Ligne_Feuille As Long)

    If Tableau.ListObject.DataBodyRange Is Nothing Then
        Ligne_Table = 1
        Ligne_Feuille = Tableau.ListObject.HeaderRowRange.Row + 1
    Else
        Dim R As Range
        For Each R In Tableau.ListObject.DataBodyRange.Rows
             If Application.CountA(R.Cells) = 0 Then
                Ligne_Table = R.Row - Tableau.ListObject.HeaderRowRange.Row
                Ligne_Feuille = R.Row
                Exit For
             End If
        Next
    End If

End Sub
 

eric72

XLDnaute Accro
Ça n'est pas vraiment compliqué en terme de nombre de lignes de code si on enchaine tout en sachant ce que ça veut dire :
VB:
ActiveSheet.ListObjects(1).ListRows.Add.Range.Value = MonTableauDUneLigne
Ou bien
VB:
MonRange.Copy Destination:=ActiveSheet.ListObjects(1).ListRows.Add.Range

bonjour,

Et bien voilà , c'est tout de suite plus clair comme ça, pas très doué mais je me soigne.
Merci beaucoup pour votre aide.
Eric
 

eric72

XLDnaute Accro
Bonsoir,
Bien que je ne comprenne pas l'utilité d'une ligne "vide" dans une table structurée,
le code ci-dessous permettra de trouver celle-ci :
VB:
Sub Chercher_Ligne_Vide_de_Tableau()
   
    Lvt [Tableau1], i&, j&
        MsgBox "ligne vide" & vbLf & _
            " =" & i & " dans" & [Tableau1].ListObject.Name & vbLf & _
            " =" & j & " dans " & [Tableau1].Parent.Name
   
    Lvt [Tableau2], i&, j&
        MsgBox "ligne vide" & vbLf & _
            " =" & i & " dans" & [Tableau2].ListObject.Name & vbLf & _
            " =" & j & " dans " & [Tableau2].Parent.Name
           
End Sub
Sub Lvt(Tableau, Optional Ligne_Table As Long, Optional Ligne_Feuille As Long)

Bonjour Fanch55,

Merci beaucoup pour votre réponse, c'est incroyable vous avez toujours des solutions pour tout!!!
Bonne journée
Eric

    If Tableau.ListObject.DataBodyRange Is Nothing Then
        Ligne_Table = 1
        Ligne_Feuille = Tableau.ListObject.HeaderRowRange.Row + 1
    Else
        Dim R As Range
        For Each R In Tableau.ListObject.DataBodyRange.Rows
             If Application.CountA(R.Cells) = 0 Then
                Ligne_Table = R.Row - Tableau.ListObject.HeaderRowRange.Row
                Ligne_Feuille = R.Row
                Exit For
             End If
        Next
    End If

End Sub
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

je suis débutant peux tu commenter ta fonction?

Attention :

- D'une part la question posée est de trouver la 1ère ligne non vide d'un tableau structuré.
Mais il semble que ce ne soit en fait pas du tout ce qui est recherché en réalité. Ce qui parait logique puisque normalement la première ligne non vide d'un TS est la première ligne dudit TS.
Donc je ne sais pas ce que recherchait exactement eric72. Peut-être la première ligne vide (mais pourquoi avoir une ligne vide dans un TS ???), ou peut-être la dernière lige non vide du TS, ou peut-être la dernière ligne du TS ?

- D'autre part ladite fonction ne répond pas à la question posée puisqu'elle ne tient pas compte du fait que la question porte précisément sur un TS.
Elle ne fait que retourner, en employant une méthode un peu complexe, la dernière ligne non vide de la colonne A.


Mais toi, que cherches-tu à faire ?
 
Dernière édition:

essaitest

XLDnaute Nouveau
Bonjour,



Attention :

- D'une part la question posée est de trouver la 1ère ligne non vide d'un tableau structuré.
Mais il semble que ce ne soit en fait pas du tout ce qui est recherché en réalité. Ce qui parait logique puisque normalement la première ligne non vide d'un TS est la première ligne dudit TS.
Donc je ne sais pas ce que recherchait exactement @eric72. Peut-être la première ligne vide (mais pourquoi avoir une ligne vide dans un TS ???), ou peut-être la dernière lige non vide du TS, ou peut-être la dernière ligne du TS ?

- D'autre part ladite fonction ne répond pas à la question posée puisqu'elle ne tient pas compte du fait que la question porte précisément sur un TS.
Elle ne fait que retourner, en employant une méthode un peu complexe, la dernière ligne non vide de la colonne A.


Mais toi, que cherches-tu à faire ?
je compare toute les méthodes pour trouver une ligne vide que ce soit dan un tableau ou une colonne.
 

Discussions similaires

Réponses
9
Affichages
250

Membres actuellement en ligne

Statistiques des forums

Discussions
314 121
Messages
2 106 129
Membres
109 495
dernier inscrit
jerome bonneau