AH non ?? je ne masque rien , j'ai vu mais c'est pas d emoiEn masquant la ligne 2, c'est ça???
=SIERREUR(PETITE.VALEUR(SI(Tableau1[Nom Client]="";LIGNE(Tableau1[Nom Client]));1);NBVAL(Tableau1[Nom Client])+LIGNE(Tableau1[#En-têtes])+1)
Pour avoir la première cellule vide en valeur absolue, utilisez la formule :
ActiveSheet.ListObjects(1).ListRows.Add.Range.Value = MonTableauDUneLigne
MonRange.Copy Destination:=ActiveSheet.ListObjects(1).ListRows.Add.Range
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
Ç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 :
Ou bienVB:ActiveSheet.ListObjects(1).ListRows.Add.Range.Value = MonTableauDUneLigne
VB:MonRange.Copy Destination:=ActiveSheet.ListObjects(1).ListRows.Add.Range
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
je suis débutant peux tu commenter ta fonction?Bonjour
Ayant déjà été confronté à ce Pb il y a ...euh ??????
ci joint une fonction qui marche
je suis débutant peux tu commenter ta fonction?
je compare toute les méthodes pour trouver une ligne vide que ce soit dan un tableau ou une colonne.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 ?