Aide VBA pour automatiser tache

bonjour le forum,

bonjour à tous,

je me tourne vers vous pour demander de l'aide (dans la mesure du possible) sur une tache que j'effectue manuellement au quotidien et que j'aimerais bien automatiser via VBA.

Il s'agit d'un planning que j'exporte sous format excel mais qui a plusieurs lignes vides que je dois supprimer pour réduire le nombre de feuilles à imprimer et afficher.

exemple des lignes 18, 19 et 20 = j'en supprime 2 (idéalement 18 et 19)

attention : à condition que les cellules des colonnes C à T soient toutes vides

à noter que les colonnes A et B ne sont jamais vides mais toute la ligne peut être supprimée si toutes les cellules des colonnes C à T sont vides.

EXCEPTIONS :

1/ samedi et dimanche qui sont toujours vides de C à T mais qu'il ne faut pas supprimer, de même que la dernière ligne vendredi et la première ligne lundi (si possible).

2/ idem entre deux jours, pour la clarté du planning, il doit y avoir deux lignes consécutives vides de C à T. exemple: dernière ligne vide de C à T du lundi suivie de la première ligne vide de C à T du mardi.

dans le fichier joint le resultat attendu est la feuille "exemple ok".

merci d'avance.

Pedro.

10classeur2.xlsx (51.24 Ko)

Bonjour dudesson le forum

Oui en gros il faut supprimer toutes les lignes vide en C à T sauf celle qui sont vides

Et pas les samedis et pas les dimanches sauf s'il pleut ??? (s'il pleut c'est de moi)

J'aime les exceptions, je vais peut-être regarder ton fichier

a+

Papou

Re bonjour Dudesson le forum

bah alors là je suis servi, tu parles d'exception et de feuille la ""feuille exemple"" qui est le résultat à obtenir.

extrait ci dessous de la feuille exemple

les lignes du lundi vides sont donc normales?? Encore une exception sans doute???

a+

Papou

capture dudesson

bonjour @paritec,

oui c'est juste, il ne doit pas y avoir plus d'une ligne vides des colonnes C à T, lorsqu'il y en a 3 j'en supprime 2 par exemple et en général les 2 premières.

pour la clarté et la lisibilité du planning, c'est une séparation utile par rapport aux destinations, reste à voir si c'est est faisable.

je vous remercie pour votre intérêt.

Pedro.

re bonjour Dudesson le forum

ton fichier en retour

a+

Papou

9dudesson-v1.xlsm (62.59 Ko)

bonjour @Paritec,

c'est vraiment parfait, j'ai testé sur plus de 2000 lignes, ça fonctionne nickel et en plus super rapide!!!.

sincères remerciements.

Pedro.

rebonjour @Paritec,

je reviens vers vous pour demander une 'petite' amélioration si c'est possible.

hier fin d'après-midi, en imprimant les plannings semaines 26 et 27, je me suis rendu compte que la 'grosse' ligne de séparation entre deux différents jours, était aussi supprimée à certains endroits. Exemple : sur le fichier exemple entre les lignes 64 et 65 (jeudi et vendredi) après lancement du code.

serait il possible d'identifier la dernière ligne d'un jour et la première ligne du jour suivant et mettre systématiquement une 'grosse' ligne entre les deux?

merci.

Pedro.

enfin trouvé des solutions au bout de la nuit

For colX = 1 To 20

For colA = Sheets("Déroulants").Range("X1").Value To fin

If Cells(colA, "A") <> Cells(colA + 1, "A") Then

Cells(colA, colX).Borders(xlEdgeBottom).Weight = xlThick

End If

Next

Next

.Range("A1:T1").AutoFilter

End With

Set plg = Sheets("Planning").Range("1:" & Sheets("Planning").Cells(Rows.Count, "A").End(xlUp).Row)

Set plgX = Application.Union(plg.Columns("C"), plg.Columns("I"), plg.Columns("L"), plg.Columns("M"))

With plgX

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = True

.ReadingOrder = xlContext

.MergeCells = False

End With

Bonjour Dudesson le forum

ton fichier en retour

a+

Papou

5dudesson-v2.xlsm (60.26 Ko)

encore merci @Paritec et bon dimanche.

Rechercher des sujets similaires à "aide vba automatiser tache"