Arranger un tableau

C60a

XLDnaute Junior
Bonjour à tous,

J'ai un tableau de valeurs dont lequel il contient des cellules vides.

Comment arranger ce tableau en éliminant les cellules vides.

Un exemple en PJ.

Merci d'avance.
 

Pièces jointes

  • Tableau_v001.xlsm
    16 KB · Affichages: 53

Papou-net

XLDnaute Barbatruc
Re : Arranger un tableau

Bonsoir C60a,

Voici un exemple de code pour le bouton de commande:

Code:
Sub Bouton1_Clic()
Dim Derlg As Long

Application.ScreenUpdating = False
Derlg = Range("A1").CurrentRegion.Rows.Count
Range("A2:C" & Derlg).SpecialCells(xlCellTypeBlanks).Delete
Derlg = Range("A1").CurrentRegion.Rows.Count
Range("A2:A" & Derlg).Copy
Range("B2:C" & Derlg).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
Range("A" & Derlg + 1).Select
Application.ScreenUpdating = True
End Sub
A +

Cordialement.
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Arranger un tableau

Bonsoir à tous.



Autre chose :​
Code:
Sub Bouton1_Clic()
Dim i&, j&, k&, p As Range, v()
  For i = 1 To 3
    Set p = Range(Cells(2, i), Cells(Rows.Count, i).End(xlUp)).Cells
    If p.Rows.Count > 1 Then
      v = p.Value
      j = 1
      For k = 2 To UBound(v)
        If v(k, 1) <> "" Then
          j = j + 1: v(j, 1) = v(k, 1)
        End If
      Next
      p.ClearContents
      p.Resize(j).Value = v
    End If
  Next
End Sub


Bonne nuit.


ℝOGER2327
#8202


Dimanche 15 Gueules 143 (Alice au Pays des Merveilles - fête Suprême Tierce)
20 Pluviôse An CCXXIV, 9,5364h - serpette
2016-W06-2T22:53:15Z
 
Dernière édition:

C60a

XLDnaute Junior
Re : Arranger un tableau

Re,

Merci bien laetitia90.

Avec une seule ligne tu supprimera toutes les cellules vides :cool:

Ton code en PJ.

EDIT :

Comme mon tableau ne commence pas par la cellule A1, et contient autres données en dessous.

Cette manipulation peut coller toutes cellules non vides après suppression de celles vides ?
 

Pièces jointes

  • Tableau_v003 (laetitia90).xlsm
    16.8 KB · Affichages: 35
Dernière modification par un modérateur:

ROGER2327

XLDnaute Barbatruc
Re : Arranger un tableau

Bonjour à tous.


Une suggestion (si je puis me permettre) :​
Code:
Sub test()
Dim i&, j&, k&, m&, p As Range, v()

'Plage de données (avec la ligne de titre) :
  With Range(Cells(9, 1), Cells(50, 3)).Cells
'Vous pouvez aussi mettre :
'  With [A9:C50].Cells
'ou tout autre plage qui vous convient.

'Si vous modifiez la plage de données, il n'y a
'(du moins je l'espère) rien à modifier dans
'la suite du code.

    For i = 1 To .Columns.Count
      If .Columns(i).Cells(1) = "" Then .Columns(i).Cells(1) = " "
      Set p = .Columns(i).Resize(.Cells(.Rows.Count + 1, i).End(xlUp).Row - .Row + 1)
      If p.Rows.Count > 1 Then
        v = p.Value
        j = 1
        For k = 2 To UBound(v)
          If v(k, 1) <> "" Then
            j = j + 1: v(j, 1) = v(k, 1)
          End If
        Next
        p.ClearContents
        p.Resize(j).Value = v
        If j > m Then m = j
      End If
    Next
    If m Then .Offset(m).Resize(.Rows.Count - m).Clear

  End With

End Sub


Bonne soirée.


ℝOGER2327
#8203


Mardi 17 Gueules 143 (Le Bétrou, théurge - fête Suprême Quarte)
22 Pluviôse An CCXXIV, 6,8845h - thyméle
2016-W06-4T16:31:22Z
 

Pièces jointes

  • Suppression des cellules vides.xlsm
    24.8 KB · Affichages: 38

ROGER2327

XLDnaute Barbatruc
Re : Arranger un tableau

Suite...


La ligne
Code:
    If m Then .Offset(m).Resize(.Rows.Count - m).Clear
est fautive.

Il faut :
Code:
    If m Then .Resize(.Rows.Count - m).Offset(m).Clear


Bonne nuit.


ℝOGER2327
#8205


Mercredi 18 Gueules 143 (Nativité de Saint Deibler, prestidigitateur - fête Suprême Quarte)
23 Pluviôse An CCXXIV, 0,3765h - chiendent
2016-W06-5T00:54:13Z
 

laetitia90

XLDnaute Barbatruc
Re : Arranger un tableau

re tous :):)

en cherchant "Remarques :"

Code:
Sub es()
 Dim t(), x As Long, i As Long, j As Byte, z As Long
 z = Columns(1).Find(What:="Remarques :", LookIn:=xlValues).Row - 10
 For j = 1 To 3
 x = 0
 t = Cells(10, j).Resize(z, 1).Value
 For i = 1 To UBound(t)
  If t(i, 1) <> "" Then x = x + 1: t(x, 1) = t(i, 1)
 Next i
 Cells(10, j).Resize(z, 1) = ""
 If x <> 0 Then Cells(10, j).Resize(x, 1) = t
 Next j
End Sub

je sais pas si manipuler un filtre cela serait pas plus simple ???:confused:
 

Statistiques des forums

Discussions
312 331
Messages
2 087 353
Membres
103 528
dernier inscrit
hplus