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
Si c'est pour avoir la ligne d'insertion du tableau:
VB:
Dim lr as ListRow
With ActiveSheet.ListObjects("Tableau13")
Set lr = IIf(.InsertRowRange Is Nothing, .ListRows.Add(), .InsertRowRange)
End With
MsgBox lr.Range.Row
Bonjour ROBLOCHON,
Merci pour votre réponse, le problème est que quand le tableau est vide donc ligne d'en tête + 1 ligne vide
Le code renvoie une erreur
Merci
Eric
Parce que vous utilisez les objets range et non les propriétés et méthodes des listObjects.
Pour ma part ce sera dernière tentative pour vous diriger vers ces dernières.
VB:
With ActiveSheet.ListObjects("Tableau13")
Derligne = .HeaderRowRange.Row + .ListRows.Count + IIf(.InsertRowRange Is Nothing, 0, 1)
End With
Sachant que .InserRowRange est toujours vide.
Faites des tests, essayez de comprendre comment ça marche, décidez si vous travaillez sur des objets ranges ou listobjects,
Suivant la macro communiquée plus haut, j'opterai pour la solution qui récupère la ligne d'insertion du tableau afin d'y coller les données
Code:
Dim lr as ListRow
With DestFeuil1.ListObjects("Tableau13")
Set lr = IIf(.InsertRowRange Is Nothing, .ListRows.Add(), .InsertRowRange)
End With
lr.Cells(1,1)= Devis.Cells(12, 7)
lr.Cells(1,2)= Devis.Cells(8,8)
Cela renvoie la dernière ligne utilisée du tableau soit 4.
Vous confondez les lignes du tableau et les lignes XL. Si votre tableau commençait en D25, il renverrait toujours 4.
C'est un tableau structuré vous mettez la nouvelle valeur après la dernière quelque soit la place du tableau.
Merci pour votre dévouement, malheureusement ca stoppe ici : lr.Cells(1, 1) = Devis.Cells(12, 7)
"erreur variable objet ou variable bloc with non definie"
Sub Copier_Nom_Client()
Application.ScreenUpdating = False
Dim Source As Workbook
Dim Devis As Worksheet
Dim Destination As Workbook
Dim DestFeuil1 As Worksheet
Dim Derligne As ListRow
Dim LigneColler As Long
Dim lr As ListRow
'Derligne = DestFeuil1.Cells(Rows.Count, 1).End(xlUp).Row
'définir les variables
Set Source = ActiveWorkbook
Set Devis = Source.Worksheets(2)
Set Destination = Application.Workbooks.Open("C:\Users\Utilisateur\OneDrive\Bureau\FITECO\METAIS Cedric\Retour Chantier\Devis Sauvegarde.xlsm")
Set DestFeuil1 = Destination.Worksheets(3)
Sheets("synthèse").Activate
Call DeProtec_feuilles
With DestFeuil1.ListObjects("Tableau13")
Set lr = IIf(.InsertRowRange Is Nothing, .ListRows.Add(), .InsertRowRange)
End With
lr.Cells(1, 1) = Devis.Cells(12, 7)
lr.Cells(1, 2) = Devis.Cells(8, 8)
LigneColler = lr + 1
Sheets("synthèse").Activate
Call DeProtec_feuilles
Cela renvoie la dernière ligne utilisée du tableau soit 4.
Vous confondez les lignes du tableau et les lignes XL. Si votre tableau commençait en D25, il renverrait toujours 4.
C'est un tableau structuré vous mettez la nouvelle valeur après la dernière quelque soit la place du tableau.
Merci,
en fait j'aimerais coller mes données à la premiere ligne non vide, malheureusement je ne suis pas très averti sur le sujet, je ne comprends pas bien le raisonnement.
Eric