Effacer lignes blanches (vides) dans un tableau xls

Résolu
lenico95 Messages postés 2 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 16 février 2008 - 15 févr. 2008 à 19:09
lenico95 Messages postés 2 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 16 février 2008 - 16 févr. 2008 à 00:49
Bonsoir à tous,
je viens de créer un tableau dans excel à partir d'informations brutes d'un fichier texte.
Ma macro me permet de rappatrier les informations qui me sont utiles et de me générer tout cela dans un tableau sur une feuille excel.
Mon souci est qu'à l'interieur de ce tableau (qui regroupe + de 40000 lignes) j'ai des lignes blanches.
Quelqu'un a t'il une idée pour remedier à cela ? Une macro qui effacerait toutes les lignes blanches de mon tableau? mais pas mes cellules vides car par exemple, la cellule A6 est vide mais pas B6 donc ma ligne 6 ne doit absolument pas être effacée.
En espérant avoir été assez clair, bonne soirée à tous et merci d'avance.
 

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
15 févr. 2008 à 19:36
Salut
Catégorie de la question modifiée en VBA

Je crains qu'il faille passer par une macro qui scanne les 40000 lignes.
Voici l'idée :
Une boucle  For-Next pour passer en revue les lignes
Une boucle  For-Next imbriquée pour passer en revue les quelques colonnes de cette ligne
Si, arrivé àa la dernière colonne, toutes les cellules sont vides, alors :
   Sélection complète de la ligne
   Suppression de la ligne en faisant remonter les suivantes vers le haut
   Recommencer le test des colonnes sur la même ligne (car la ligne courante est maintenant la ligne d'après)

Je n'ai pas en mémoire la syntaxe VBA pour te fournir du code, désolé.
En VB6, cela aurait pu ressembler à ça (VBA ressemblant, sauf adressage des cellules)
   For r = 1 To 40000   ' Lignes
      Do While Not Trouvé
         Trouvé = False
         For t = 1 To 18   ' Colonnes
            If  laCellule(r, t) <> "" Then
               Trouvé = True
               Exit For
            End If
         Next t
         If Not Trouvé
            Selecter laLigne(r)
            Supprimer laLigneActuelle en faisant remonter les suivantes
         End If
      Loop
      DoEvents
   Next r

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
15 févr. 2008 à 20:47
PS : J'y pense en relisant
Pense à bien dimensionner le '40000' dans la boucle car, à la fin du fichier, toutes les lignes sont vides.
Il va donc décaler les lignes à l'infini puisqu'il n'incrémente pas le n° de ligne en cas de suppression.
Peut-être en ajoutant manuellement un mot clé à la dernière ligne, colonne A, genre {Fin de fichier}
Chaine qu'il sera facile de repérer et mettre fin à la boucle (avec Exit For) en cas de rencontre.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
15 févr. 2008 à 19:55
Au pire ajoute a ta feuille apres la derniere colonne quelque chose comme ca...
ex si tu as 3 colonne

colonne d1 formula = IF(TRIM(A1&B1&B3)="", "del", "keep")

puis faire un fill down sur la colonne, puis descendre ligne par linge (ou creer un autofilter) et delete les lines que la colone D contient "del"

Mais je pense que la solution de jack est plus optimisée.

À toi de voir.

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
15 févr. 2008 à 23:17
As-tu essayé de trier ta feuille ?
Normallement, un simple tri décalera les lignes vides en bas.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lenico95 Messages postés 2 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 16 février 2008
16 févr. 2008 à 00:49
Merci pour vos réponses en particulier à Jack : Ma macro ne fonctionnait pas tout simplement parce que j'avais oublié de lui dire de s'arréter à la dernière ligne de mon tableau. donc les lignes vides du dessous était supprimées et ça tournait en boucle.
Nicolas
0
Rejoignez-nous