Bonjour,
j'ai un tableau de 13 colonnes et 1200 lignes, ces dernières étant remplies jour après jour par l'utilisateur. Certaines cellules d'une ligne peuvent être vides. La seule colonne dont les cellules sont obligatoirement remplies et qui peut servir pour compter les lignes non vides est la colonne 3 ou "C".

Pour que l'utilisateur puisse imprimer le tableau jusqu'à la dernière ligne non vide, j'ai créé un bouton qui ouvre l'aperçu avant impression et essayé 2 piste :
la première en créant un nom 'zone_d_impression' avec la formule "=DECALER('mafeuille'!$A$2;;;NBVAL('mafeuille'!$C:$C);13)" et en donnant au bouton le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Private Sub CommandButton3_Click()
Application.Dialogs(xlDialogPrintPreview).Show False
End Sub
Cela fonctionne bien mais dès que l'on touche à la mise en page, une nouvelle zone d'impression type "='mafeuille'!$A$2:$N$4" se crée et fout tout par terre.

En furetant sur la toile, j'ai trouvé un code que j'ai adapté et attribué au bouton :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Private Sub CommandButton3_Click()
PageSetup.PrintArea = Range([A2], Columns(13).Find("*", , , , , xlPrevious)).Address 'Columns(13) me permet d'avoir le tableau dans son entièreté
Application.Dialogs(xlDialogPrintPreview).Show False
End Sub
C'est simple mais avec un défaut : c'est que la colonne 13 ("M") sert à déterminer la dernière ligne non vide et les cellules de cette colonne ne sont pas forcément remplies.
Je cherche donc à l'améliorer pour prendre en référence de comptage des lignes non vides la colonne "C".
(je me suis essayé au Rows.count mais je me suis vite noyé dans des erreurs successives et insurmontables pour moi.

Si vous avez une piste pour m'aiguiller, je fonce
Merci