Suppression lignes vides, mais conservation du format, du contenu cellules déplacées

VIARD

XLDnaute Impliqué
Bonjour à toutes et tous

J'ai réalisé une petite procédure pour supprimer des lignes vides dans une plage de cellules (donc plusieurs colonnes).
cette réalisation fonctionne très bien tant que le format reste le même.

Pb: je veux conserver les différents formats lors des déplacements des contenus.

J'ai placé un fichier exemple (nota: autour de cette plage les données ne doivent pas bouger)
 

Pièces jointes

  • TestLigneVide.xls
    56.5 KB · Affichages: 65

job75

XLDnaute Barbatruc
Re : Suppression lignes vides, mais conservation du format, du contenu cellules dépla

Bonsoir VIARD, Laetitia :)

Les macros dans le fichier joint utilisent un document auxiliaire provisoire.

A+
 

Pièces jointes

  • TestLigneVide(1).xls
    48.5 KB · Affichages: 52

job75

XLDnaute Barbatruc
Re : Suppression lignes vides, mais conservation du format, du contenu cellules dépla

Re,

Si des cellules sont colorées, il faut ajouter une ligne dans chaque macro.

Fichier (2).

A+
 

Pièces jointes

  • TestLigneVide(2).xls
    49 KB · Affichages: 46

VIARD

XLDnaute Impliqué
Re : Suppression lignes vides, mais conservation du format, du contenu cellules dépla

re, Job, Laetitia et à tous

Merci infiniment, je vais épluché ce code.
Je n'ai pas pensé à cette solution. Ca fonctionne super bien.

merci beaucoup, et bon WK

Jean-Paul
 

job75

XLDnaute Barbatruc
Re : Suppression lignes vides, mais conservation du format, du contenu cellules dépla

Bonjour VIARD, le forum,

On peut utiliser un seul bouton et une seule macro :

Code:
Private Sub CommandButton1_Click()
Dim test As Boolean, a, i&, n&
With CommandButton1
  test = .Caption Like "S*"
  .Caption = IIf(test, "Insérer", "Supprimer") & " lignes vides"
  .ForeColor = IIf(test, &HFF&, &H8000&) 'rouge, vert
End With
a = Array(2, 4, 6, 8, 10, 12, 18) 'position des lignes
Application.ScreenUpdating = False
Workbooks.Add 'nouveau document
With ActiveWorkbook.Sheets(1)
  [Tableau].Copy .[A1]
  .Cells.ClearContents
  .Cells.Interior.ColorIndex = xlNone
  For i = 1 To [Tableau].Rows.Count
    If [Tableau].Cells(i, 1) <> "" Then
      n = n + 1
      [Tableau].Rows(i).Copy .Cells(IIf(test, n, a(n - 1)), 1)
    End If
  Next
  .[A1].Resize([Tableau].Rows.Count, [Tableau].Columns.Count).Copy [Tableau]
  ActiveWorkbook.Close False
End With
End Sub
Nota : le bouton est un bouton ActiveX.

Fichier (3).

A+
 

Pièces jointes

  • TestLigneVide(3).xls
    50 KB · Affichages: 58

VIARD

XLDnaute Impliqué
Re : Suppression lignes vides, mais conservation du format, du contenu cellules dépla

Bonjour Job

C'est super le travail effectué.
Effectivement je préparais une manip avec un seul bouton.
Il n'y a qu'un bémol, je ne connais jamais la position des données dans cette plage.
Seul indice leur nombre est connu en "A7"
J'ai tenté des manips en deletant les lignes vides sur le classeur auxilliaire.

En tout cas super travail Job

amicalement

Jean-Paul
 

VIARD

XLDnaute Impliqué
Re : Suppression lignes vides, mais conservation du format, du contenu cellules dépla

Bonjour mapomme, Job et Tous

Super solution, Je commençais à me faire des noeuds au cerveau.
Et la solution du tableau intermédiaire est également génial on n'y pense pas assez souvent.
Je retiens les 2 solutions, vue que j'ai des tableaux un peu partout.

Merci à tous

amicalement

Jean-Paul
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Suppression lignes vides, mais conservation du format, du contenu cellules dépla

Bonjour le forum,

Erreur dans le fichier v2 (aussi grosse que moi!)
Voir version 3.
Code:
Sub SupprLigne()
Dim Source As Range, Ncol

Set Source = Nothing
On Error Resume Next
Set Source = Application.InputBox("Sélectionner la zone à traiter ?:", Type:=8)
If Source Is Nothing Then Exit Sub
On Error GoTo 0

Source.Columns("A").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Ncol = Source.Columns.Count
Set Source = Source.Offset(0, -1).Resize(, Source.Columns.Count + 1)
Source.Columns("A").FormulaR1C1 = "=IF(COUNTBLANK(RC[1]:RC[" & Ncol & "])=" & Ncol & ",""""," & "Row())"
Source.Columns("A").Value = Source.Columns("A").Value
Source.Sort key1:=Source(1, 1), order1:=xlAscending, Header:=xlNo
Source.Columns("A").Delete Shift:=xlToLeft
End Sub
 

Pièces jointes

  • Suppr Ligne vide garder format v3.xls
    66.5 KB · Affichages: 48
Dernière édition:

job75

XLDnaute Barbatruc
Re : Suppression lignes vides, mais conservation du format, du contenu cellules dépla

Re, salut mapomme,

Il n'y a qu'un bémol, je ne connais jamais la position des données dans cette plage.

Cette version (4) traite tous les tableaux nommés Tableaun :

- les tableaux avec lignes vides sont mémorisés dans la feuille Mémorisation

- par sécurité les tableaux sans lignes vides ne peuvent pas être modifiés

- par sécurité encore, la feuille Mémorisation est protégée (mot de passe VIARD).

A+
 

Pièces jointes

  • TestLigneVide(4).xls
    53.5 KB · Affichages: 49

VIARD

XLDnaute Impliqué
Re : Suppression lignes vides, mais conservation du format, du contenu cellules dépla

re Job, mapomme et à tous

Merci Job, pour tous tes efforts il y a vraiment beaucoup de solution.
Je viens de voir avec la fonction "Sort" de "mapomme" que l'on pouvait déplacer les formats.
comme quoi excel est plein de ressource.

Encore merci à tous

amicalement

Jean-Paul
 

job75

XLDnaute Barbatruc
Re : Suppression lignes vides, mais conservation du format, du contenu cellules dépla

Re,

Effectivement trier les tableaux est une bonne idée, la macro est plus simple.

Le fait que l'ordre des lignes est modifié ne paraît guère gênant puisqu'on peut revenir à l'état d'origine.

Fichier (5).

Edit : il fallait [A5].Select à la fin de la macro du bouton, et j'ai masqué la feuille Mémorisation.

A+
 

Pièces jointes

  • TestLigneVide(5).xls
    52 KB · Affichages: 53
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 193
Messages
2 086 058
Membres
103 110
dernier inscrit
Privé