Arranger un tableau

Le
Apitos
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.

http://www.cjoint.com/c/FBjvI5LFjWI

Merci d'avance.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26388805
Bonjour,

Utilise cette petite macro une fois!


Sub test()
Dim C As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
With Feuil1
For Each C In Range("A:C").Columns
C.SpecialCells(xlCellTypeBlanks).Delete
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Apitos
Le #26388807
Bonjour MichD,

Je voulais délimiter la plage sur laquelle se fera la recherche des cellu les vides, parce que faire la chose sur tout le long des colonnes A à C p eut affecter d'autres données sur la feuille.

Alors le nouveau code fait un chamboulement dans mon tableau.

Tu peux faire un essai sur la pièce jointe.

http://www.cjoint.com/c/FBjwCD5TmvQ
isabelle
Le #26388827
bonjour Apitos,

je n'ai fais qu'une petite ajustement sur macro que Denis a fait
la plage à parcourir Range("A3:C" & Derlg)

Sub test()
Dim C As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
Derlg = Range("A:C").SpecialCells(xlCellTypeLastCell).Row
With Feuil2
For Each C In Range("A3:C" & Derlg).Columns
C.SpecialCells(xlCellTypeBlanks).Delete
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

isabelle

Le 2016-02-09 17:32, Apitos a écrit :
Bonjour MichD,

Je voulais délimiter la plage sur laquelle se fera la recherche des cellules
vides, parce que faire la chose sur tout le long des colonnes A à C peut
affecter d'autres données sur la feuille.

Alors le nouveau code fait un chamboulement dans mon tableau.

Tu peux faire un essai sur la pièce jointe.

http://www.cjoint.com/c/FBjwCD5TmvQ

isabelle
Le #26388828
pour éviter de tourner sur des lignes vide, tu pourrais remplacer

Derlg = Range("A:C").SpecialCells(xlCellTypeLastCell).Row

par

Derlg = Cells.Find("*", LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

isabelle

Le 2016-02-09 19:25, isabelle a écrit :
bonjour Apitos,

je n'ai fais qu'une petite ajustement sur macro que Denis a fait
la plage à parcourir Range("A3:C" & Derlg)

Sub test()
Dim C As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
Derlg = Range("A:C").SpecialCells(xlCellTypeLastCell).Row
With Feuil2
For Each C In Range("A3:C" & Derlg).Columns
C.SpecialCells(xlCellTypeBlanks).Delete
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

isabelle

Le 2016-02-09 17:32, Apitos a écrit :
Bonjour MichD,

Je voulais délimiter la plage sur laquelle se fera la recherche des cellules
vides, parce que faire la chose sur tout le long des colonnes A à C peut
affecter d'autres données sur la feuille.

Alors le nouveau code fait un chamboulement dans mon tableau.

Tu peux faire un essai sur la pièce jointe.

http://www.cjoint.com/c/FBjwCD5TmvQ

MichD
Le #26388829
Une feuille contient plus de 16,000 colonnes. Ce n'est pas suffisant
pour disposer tes données sans avoir recours à la superposition dans les
mêmes colonnes?

Sub test1()
Dim Rg As Range, T(), B As Long
Dim G As Range, C As Range, A As Long

With Feuil1
Set Rg = .Range("A3:C30")
End With

Application.ScreenUpdating = False
Application.EnableEvents = False
With Feuil1
Set Rg = .Range("A3:C30")
ReDim T(1 To Rg.Rows.Count)
For Each G In Rg.Columns
For Each C In G.Cells
If C <> "" Then
A = A + 1
ReDim Preserve T(1 To A)
T(A) = C.Value
End If
Next
B = B + 1
With Rg.Columns(B)
.Value = ""
.Cells(1, 1).Resize(UBound(T)).Value =
Application.Transpose(T)
End With
Erase T: A = 0
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
MichD
Le #26388830
Bonjour Isabelle,

Comme il a un tableau en dessous de la ligne 30, on ne peut pas utiliser
la suppression des cellules vides sans affecter la disposition des
lignes du tableau sous cette plage de cellules. Je pense qu'on doit
simplement repositionner les valeurs des colonnes sans supprimer les
cellules vides.


MichD
isabelle
Le #26388831
tester et approuver c'est parfait Denis.
et désolé Apitos, je n'avais pas vue qu'il y avait un autre tableau sous le
premier en range ("A:C")
isabelle


Le 2016-02-09 19:56, MichD a écrit :

Une feuille contient plus de 16,000 colonnes. Ce n'est pas suffisant pour
disposer tes données sans avoir recours à la superposition dans les mêmes colonnes?

Sub test1()
Dim Rg As Range, T(), B As Long
Dim G As Range, C As Range, A As Long

With Feuil1
Set Rg = .Range("A3:C30")
End With

Application.ScreenUpdating = False
Application.EnableEvents = False
With Feuil1
Set Rg = .Range("A3:C30")
ReDim T(1 To Rg.Rows.Count)
For Each G In Rg.Columns
For Each C In G.Cells
If C <> "" Then
A = A + 1
ReDim Preserve T(1 To A)
T(A) = C.Value
End If
Next
B = B + 1
With Rg.Columns(B)
.Value = ""
.Cells(1, 1).Resize(UBound(T)).Value = Application.Transpose(T)
End With
Erase T: A = 0
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

Apitos
Le #26388960
Bonjour Isabelle, MichD;

La dernière n'est pas forcement connue d'avance (A3:C30)

C'est pour cela que j'ai essayé d'utiliser ce code :

'------------------
DerLig = Range("A:C").Find("*", LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:= xlPrevious).Row
'---------------------

Parce que à chaque fois une valeur est ajoutée.
isabelle
Le #26388963
qu'est qui arrive avec le 2ème tableau lorsque tu ajoute des données au 1er
tableau ?
isabelle

Le 2016-02-10 16:35, Apitos a écrit :

Bonjour Isabelle, MichD;

La dernière n'est pas forcement connue d'avance (A3:C30)

C'est pour cela que j'ai essayé d'utiliser ce code :

'------------------
DerLig = Range("A:C").Find("*", LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'---------------------

Parce que à chaque fois une valeur est ajoutée.

MichD
Le #26388964
Il n'y a pas de miracle possible...mais tu peux faire cela :

Modifie cette ligne de code comme ceci. Dans cet exemple,
50 est la ligne juste au-dessus de ton second tableau du dessous.
À toi d'adapter...

DerLig = Range("A1:C50").Find("*", LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Publicité
Poster une réponse
Anonyme