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

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Dernière ligne du tableau :
Derligne = Range("Tableau13").Rows.Count + Range("Tableau13[#Headers]").Row

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


cordialement
 

eric72

XLDnaute Accro
Voilà mon code dans mon fichier d'origine:

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 Long
Dim LigneColler As Long



'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)
Derligne = [tableau13].Rows.Count
LigneColler = Derligne + 1
Sheets("synthèse").Activate
Call DeProtec_feuilles

DestFeuil1.Cells(LigneColler, 1) = Devis.Cells(12, 7)
DestFeuil1.Cells(LigneColler, 2) = Devis.Cells(8, 8)

Call Protec_feuilles
Destination.Close (True)

Application.ScreenUpdating = True
Call Protec_feuilles





End Sub
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

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)

Cordialement
 

eric72

XLDnaute Accro
Re bonjour ROBLOCHON,

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

DestFeuil1.Cells(LigneColler, 1) = Devis.Cells(12, 7)
DestFeuil1.Cells(LigneColler, 2) = Devis.Cells(8, 8)
Call Protec_feuilles
Destination.Close (True)
Application.ScreenUpdating = True
Call Protec_feuilles
End Sub

Merci encore
Eric
 

eric72

XLDnaute Accro
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
 

Discussions similaires

Réponses
49
Affichages
1 K

Statistiques des forums

Discussions
315 080
Messages
2 116 021
Membres
112 637
dernier inscrit
pseudoinconnu