Microsoft 365 Mon code ne reconnait pas la dernière ligne de mon tableau

Soumie

XLDnaute Nouveau
Bonjour,
j'ai écrit un code qui permet d'exporter des données de mon userform vers la feuille Excel " Export" la multipage 1 fonctionne correctement , dans la page 2 (EHDAA ET 1/3 TEMPS) le code doit reconnaitre la dernière ligne disponible dans le tableau(après l'exportation de la page 1) et exporter les données à partir de cette ligne. Seulement, ce n'est pas ça qui se passe. Le code exporte suite à la dernière ligne de mon tableau(voir exemple feuille "Export"). Est-ce une question de configuration de tableau? Comment faire? Est-ce que quelqu'un aurait une idée? Merci!
 

Pièces jointes

  • Horaire de surveillance V.1.xlsm
    214.8 KB · Affichages: 6
Solution
Bonsoir @Soumie :),

Votre tableau est un tableau structuré (TS) et c'est bien.
Mais avec un TS, on ne peut pas utiliser simplement END(xlup) qui renverra la dernière ligne du TS (qu'elle soit vide ou non). En passant, il est très rarement bon de laisser une ou plusieurs lignes vides dans un TS.

Pour trouver la dernière cellule non vide de la première colonne d'un TS, on peut utiliser la boucle ci-dessous. La première ligne vide sera celle juste après (d'où le +1 sur la ligne après la boucle). Ce code doit fonctionner même avec des lignes vides dans le TS ou bien si le TS ne comporte aucune ligne de données.

VB:
   ' Trouver la prochaine ligne vide disponible dans la colonne A
   Dim lastRow1 As Long, der As Long, prem As...

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Soumie :),

Votre tableau est un tableau structuré (TS) et c'est bien.
Mais avec un TS, on ne peut pas utiliser simplement END(xlup) qui renverra la dernière ligne du TS (qu'elle soit vide ou non). En passant, il est très rarement bon de laisser une ou plusieurs lignes vides dans un TS.

Pour trouver la dernière cellule non vide de la première colonne d'un TS, on peut utiliser la boucle ci-dessous. La première ligne vide sera celle juste après (d'où le +1 sur la ligne après la boucle). Ce code doit fonctionner même avec des lignes vides dans le TS ou bien si le TS ne comporte aucune ligne de données.

VB:
   ' Trouver la prochaine ligne vide disponible dans la colonne A
   Dim lastRow1 As Long, der As Long, prem As Long, col As Long
   col = ws.Range("a5").ListObject.Range.Column
   prem = ws.Range("a5").ListObject.Range(1, 1).Row
   der = prem + ws.Range("a5").ListObject.ListColumns(1).Range.Count - 1
   For lastRow1 = der To prem Step -1
      If ws.Cells(lastRow1, col) <> "" Then Exit For
   Next lastRow1
   lastRow1 = lastRow1 + 1
 
Dernière édition:

Soumie

XLDnaute Nouveau
Bonsoir @Soumie :),

Votre tableau est un tableau structuré (TS) et c'est bien.
Mais avec un TS, on ne peut pas utiliser simplement END(xlup) qui renverra la dernière ligne du TS (qu'elle soit vide ou non). En passant, il est très rarement bon de laisser une ou plusieurs lignes vides dans un TS.

Pour trouver la dernière cellule non vide de la première colonne d'un TS, on peut utiliser la boucle ci-dessous. La première ligne vide sera celle juste après (d'où le +1 sur la ligne après la boucle). Ce code doit fonctionner même avec des lignes vides dans le TS ou bien si le TS ne comporte aucune ligne de données.

VB:
   ' Trouver la prochaine ligne vide disponible dans la colonne A
   Dim lastRow1 As Long, der As Long, prem As Long, col As Long
   col = ws.Range("a5").ListObject.Range.Column
   prem = ws.Range("a5").ListObject.Range(1, 1).Row
   der = prem + ws.Range("a5").ListObject.ListColumns(1).Range.Count - 1
   For lastRow1 = der To prem Step -1
      If ws.Cells(lastRow1, col) <> "" Then Exit For
   Next lastRow1
   lastRow1 = lastRow1 + 1
 

Soumie

XLDnaute Nouveau
Bonjour,
Je reviens vers vous , car j'ai un souci avec l'exportation de mes données à partir de la page '"disponiblité et pauses" la condition de l'exportation de la textbox 153 et 154 est que dans la listbox14 et 16 respectivement, il y ait des items sélectionnés, mais le code ne respecte pas cette condition. Je ne trouve l'erreur (à moins que ce soit la formule). Auriez- vous une idée? Merci!
 

Pièces jointes

  • Horaire de surveillance V.1.xlsm
    213.2 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 266
Membres
103 168
dernier inscrit
isidore33