lenico95
Messages postés2Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention16 février 2008
-
15 févr. 2008 à 19:09
lenico95
Messages postés2Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention16 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.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
lenico95
Messages postés2Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention16 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