XL 2019 Effacer la derniere ligne non vide d'un tableau sauf la première

J@NoT

XLDnaute Nouveau
Bonjour !
Je souhaite effacer la dernière ligne non vide de la mon tableau sauf la première qui comporte mon entete de tableau.

Je n'arrive pas à trouver le code qui va bien...
La j'utilise celui ci pour l'instant:

Sub SuppDernLigne()
Dim Dl%
Dl = Feuil2.Range("C" & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de la colonne A
Rows(Dl).Delete shift:=xlUp 'Supprime la ligne vers le haut
End Sub

Avez vous une solution ?
En vous remerciant par avance ! Bonnes fêtes à tous !!
:)
 

Pièces jointes

  • Calcul retrait 1.27.xlsm
    70.9 KB · Affichages: 13
Solution
Bonjour J@Not,
La macro marche très bien. Si c'est épargner la première ligne alors une proposition :
VB:
Sub SuppDernLigne()
  Dim Dl%
  Dl = Feuil2.Range("C" & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de la colonne A
  If Dl > 1 Then
    Rows(Dl).Delete shift:=xlUp 'Supprime la ligne vers le haut
  End If
End Sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour J@Not,
La macro marche très bien. Si c'est épargner la première ligne alors une proposition :
VB:
Sub SuppDernLigne()
  Dim Dl%
  Dl = Feuil2.Range("C" & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de la colonne A
  If Dl > 1 Then
    Rows(Dl).Delete shift:=xlUp 'Supprime la ligne vers le haut
  End If
End Sub
 

soan

XLDnaute Barbatruc
Inactif
Bonjour @J@NoT, sylvanu,

ton fichier modifié est joint en fin de post ; ci-dessous, ton nouveau Module4 ;
ça supprime bien la dernière ligne (= 1ère ligne de données si y'en n'a pas
d'autres), et sauf la 1ère ligne d'en-têtes.

n'oublie pas de lire attentivement toutes les indications de ce post que j'ai
ajoutées sous le code VBA. ;)


VB:
Option Explicit

Sub SuppDernLigne()
  If ActiveSheet.Name <> "Retraits enregistrés" Then Exit Sub
  Dim Dl&
  Dl = Cells(Rows.Count, 1).End(xlUp).Row 'n° dernière ligne, selon colonne A
  If Dl > 1 Then Rows(Dl).Delete 'supprime la dernière ligne
End Sub

1) test du nom de feuille : évite que la sub soit exécutée depuis une autre feuille,
si la sub est appelée depuis la fenêtre « Macro » (Alt F8 au lieu de clic / bouton)

2) type de la variable Dl : Long (&) au lieu de Integer (%) car maxi d'un Integer :
32 767 ➯ plantage si n° ligne >= 32 768

3) toute ligne de donnée utilisée doit forcément avoir une date, donc c'est plus logique
de « calculer » la dernière ligne selon la colonne A "DATE" au lieu de la colonne C
"Diamètre du moule Longueur du moule" (même si t'aimes les moules et les huîtres)




4) ton utilisation initiale de Shift:=xlUp est un double non-sens ! voici pourquoi :

a) comme tu n'as pas de 2ème tableau à droite du 1er tableau, c'est inutile de
chercher à préserver des données qui seraient sur le côté droit : tu peux donc
supprimer la ligne entière, sans aucun risque ; d'autre part, s'il y avait eu des
données à préserver côté droit, ça aurait été utile de faire une suppression
avec décalage haut des données non pas sur la ligne entière mais sur A:U.

b) comme tu supprimes la dernière ligne utilisée du tableau, y'a donc aucune
ligne de donnée située en dessous à remonter ➯ désolé si je t'ai fait perdre
tes illusions de croire qu'un décalage haut était utile. 😭




à te lire pour avoir ton avis, si tu reviens sur ce sujet, et que
tu m'en veux pas trop pour mon point 4) a) et b) 😜


soan
 

Pièces jointes

  • Calcul retrait 1.27.xlsm
    67.9 KB · Affichages: 6
Dernière édition:

Discussions similaires

Réponses
17
Affichages
251

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG