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!
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...
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
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
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!