Effacer lignes blanches (vides) dans un tableau xls [Résolu]

lenico95 2 Messages postés vendredi 4 janvier 2008Date d'inscription 16 février 2008 Dernière intervention - 15 févr. 2008 à 19:09 - Dernière réponse : lenico95 2 Messages postés vendredi 4 janvier 2008Date d'inscription 16 février 2008 Dernière intervention
- 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.
 
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 15 févr. 2008 à 19:36
3
Merci
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de cs_Jack
Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 15 févr. 2008 à 20:47
3
Merci
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de cs_Jack
zen69 588 Messages postés jeudi 28 décembre 2006Date d'inscription 29 avril 2010 Dernière intervention - 15 févr. 2008 à 19:55
0
Merci
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]
Commenter la réponse de zen69
cs_MPi 3869 Messages postés mardi 19 mars 2002Date d'inscription 25 mai 2018 Dernière intervention - 15 févr. 2008 à 23:17
0
Merci
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
Commenter la réponse de cs_MPi
lenico95 2 Messages postés vendredi 4 janvier 2008Date d'inscription 16 février 2008 Dernière intervention - 16 févr. 2008 à 00:49
0
Merci
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
Commenter la réponse de lenico95

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.