Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 1ère ligne non vide tableau

  • Initiateur de la discussion Initiateur de la discussion eric72
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
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
 
si je remplis jusqu'à ligne 5, votre code renvoie 4
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.
 
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
 


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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
104
  • Question Question
Microsoft 365 Formule excel
Réponses
7
Affichages
188
Réponses
4
Affichages
112
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
629
  • Question Question
Microsoft 365 Formulaire
Réponses
2
Affichages
121
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…