Supprimer cellule vide

Bonsoir tout le monde

voici mon probleme,

quoique deja traité dans le forum, les solutions proposées ne me conviennent pas, en effet sur des feuilles de 65536 lignes, ces dernieres sont beaucoup trop longues.

peut-etre est-il impossible d'aller plus vite mais afin d'en etre sur, je soumet le sujet.

un exemple en fichier joint

https://www.excel-pratique.com/~files/doc/dQIiycellules_vides.zip

je voudrais de la colonne A à P supprimer toute les cellules vides et faire glisser les autres sur la gauche.

merci,

Cordialement

Salut le forum

Maguetlolo, ca irait beaucoup mieux si ton Zip n'était pas vide

Mytå

Bonjour Myta

c'est corrigé, oups

cordialement

bonjour,

il y a deux lectures à ton problème...

Si on traite colonne par colonne et qu'on supprime les cellules vides, ça remonte tout vers le haut,.. et ça détruit la cohérence des lignes.

J'ai supposé que c'est la deuxième lecture qui est bonne et qu'il suffit de conserver les lignes sans cellules vides.

Cette macro traite 64776 lignes en 6 secondes.

Sub test()
Set ws = ActiveSheet
Application.ScreenUpdating = False
i = ws.UsedRange.Columns.Count
Tablo = ws.UsedRange
j = UBound(Tablo)
ws.UsedRange.Clear
For a = 1 To j
For b = 1 To i
If Tablo(a, b) <> "" Then
Cells(a, k + 1) = Tablo(a, b)
k = k + 1
End If
Next
k = 0
Next
End Sub

S'il faut en plus supprimer les lignes vides, utiliser plutôt cette autre macro :

Sub test()
Set ws = ActiveSheet
Application.ScreenUpdating = False
i = ws.UsedRange.Columns.Count
Tablo = ws.UsedRange
j = UBound(Tablo)
x = 1
ws.UsedRange.Clear
For a = 1 To j
For b = 1 To i
If Tablo(a, b) <> "" Then
Cells(x, k + 1) = Tablo(a, b)
k = k + 1
End If
Next
If k > 0 Then x = x + 1
k = 0
Next
End Sub

A+

Bonjour,

merci pour la reponse, tu avais bien compris il ne faut pas supprimer les lignes

c'est donc celle ci que je retiens

Sub test() 
Set ws = ActiveSheet 
Application.ScreenUpdating = False 
i = ws.UsedRange.Columns.Count 
Tablo = ws.UsedRange 
j = UBound(Tablo) 
ws.UsedRange.Clear 
For a = 1 To j 
For b = 1 To i 
If Tablo(a, b) <> "" Then 
Cells(a, k + 1) = Tablo(a, b) 
k = k + 1 
End If 
Next 
k = 0 
Next 
End Sub

Petite precision: je voudrais qu'elle ne s'execute que sur les colonnes M à Z, quelle est la modif a faire?

Cordialement

Sorry,

pour la solution faudra attendre ce soir...

...à moins que d'ici là une âme désoeuvrée (et inspirée).passe par là !

A+

Re,

Sans aucun probleme, bonne journée.

> Attendre est encore une occupation. C'est ne rien attendre qui est terrible.

[Cesare Pavese]

A ce soir

Bonsoir,

la macro corrigée pour les colonnes M à Z

Sub test()
Set ws = ActiveSheet
Application.ScreenUpdating = False
If [M1] = "" Then [M1] = " "
i = ws.UsedRange.Rows.Count
If [M1] = " " Then [M1].Clear
Tablo = ws.Range("M1:Z" & i)
j = UBound(Tablo)
ws.Range("M1:Z" & i).Clear
For a = 1 To j
For b = 1 To 14
If Tablo(a, b) <> "" Then
Cells(a, 12 + k + 1) = Tablo(a, b)
k = k + 1
End If
Next
k = 0
Next
End Sub

A+

Bonsoir tout le monde

Merci galopin01 c'est parfait

Cordialement

Rechercher des sujets similaires à "supprimer vide"