Bonjour,
dans le programme que je suis entrain de créer, je remplis à l'aide d'un formulaire de nombreux tableaux (3 tableaux par page, 6 pages), et je transfère des informations d'un tableau à l'autre. Au moment du transfert, des lignes blanches viennent s'intercaler entre les données, de par le code que j'ai crée.
Je me suis donc mis en tête de créer un module spécial que je pourrais appeler à tout moment, qui vérifiera dans tous les tableaux de toutes mes feuilles si il existe des lignes vides, et, le cas écheant, les supprimera.
La méthode étant facilement trouvable sur internet, j'ai pu développer quelques lignes :
Afin de le tester au préalable sur une structure simple, j'ai crée deux tableaux sur une feuille indépendante pour tester mon code. Totalement fonctionnel, comme vous pouvez le voir sur les captures d'ecran ci-dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Option Explicit Sub SupprimerLigne() Dim Xt As Long, i As Long Xt = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count Application.ScreenUpdating = False For i = Xt To 2 Step -1 If Application.WorksheetFunction.CountA(Rows(i)) = 0 Then Rows(i).Delete Next i End Sub
Ici les deux tableaux remplis avec des lignes vides, et le bouton permettant de supprimer les lignes vides.
Ici après l'appui sur le bouton les lignes sont supprimées.
Jusqu'ici, tout fonctionne bien (Bien que les deux tableaux se retrouvent collés après la suppression des lignes, mais je sais déjà comment corriger ce soucis).
J'ai donc décidé de l'adapter à mes feuilles en mettant un bouton dessus, mais un message apparait : "Erreur dans le temps d'execution '1004' La methode Delete de la classe Range a échoué"
Pour information voici la feuille avec les tableaux que je souhaite traiter :
Je souhaiterais donc savoir si l'un de vous a une idée de la raison de cette erreur. J'ai déja essayer de passer outre la méthode CountA, mais d'autres erreurs apparaissent.
Merci à ceux qui pourront m'aider !
Partager