S'arrêter à temps !!!

  • Initiateur de la discussion Initiateur de la discussion glaine
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

glaine

Guest
Bonjour à tous,
Merci d'avance pour toutes aides apportées. J'essaye de supprimer toutes les cellules vides d'une colonne.
Sub SupprimCellVide()
Columns(4).Select
For Each cell In Selection
If IsEmpty(cell.Value) = True Then
cell.Select
cell.Delete
Range("D65356").Offset(1, 0).Select
End If
Next
End Sub
La colonne est bien épurée des cellules vides, mais la macro fait inutilement tout le tour de la colonne. Je sèche pour résoudre ce soucis, mais avec des tas de petits bouts d'idées(do while...) sans être satisfait. Merci pour vos conseils.
 
Re : S'arrêter à temps !!!

Merci à vous deux, cela fonctionne parfaitement. Par contre, je ne comprends pas: comment avec cette méthode (SpecialCells(xlCellTypeBlanks)) ne glisse-t'on jusqu'au bout de la colonne ???
Merci encore en tous cas.
 
Re : S'arrêter à temps !!!

re, j'avais un exemple qui marcher avec !! mais pas retrouve 🙁

autrement si beaucoup de cellules dans ta colonne tu peus passer par un tablo plus rapide

Code:
Sub essai()
Dim t As Variant, t2() As String, x As Long, i As Long, k As Long
 Application.ScreenUpdating = False
 On Error Resume Next
t = Range("d1:d" & Range("d65536").End(xlUp).Row)
x = 1
For i = 1 To UBound(t)
If t(i, 1) <> "" Then
 ReDim Preserve t2(1 To 1, 1 To x)
For k = 1 To 1
t2(k, x) = t(i, k): Next k: x = x + 1: End If: Next i
Columns("d:d").Clear
Range("d1").Resize(UBound(t2, 2), UBound(t2, 1)) = Application.Transpose(t2)
Erase t, t2
End Sub
 
Re : S'arrêter à temps !!!

Bonjour

Comme bhbh je dirai, complétant la suggestion de tototiti2008
Code:
Sub Macro1()
Columns(4).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End Sub
Avec ce léger changement, c'est ok non ? et las est l'Hélas de glaine 😉


PS: laetitia90, pour le coup , je crois que l'Array est moins rapide que SpecialCells
 
Dernière édition:
Re : S'arrêter à temps !!!

re,

salut l'ami Staple

c'est le bout de code que j'avais perdu. bien vu 😉

sur une colonne
Code:
SpecialCells(xlCellTypeBlanks)
cela va dependre des cellules vide ??? & la grandeur de la plage
il y a quelques mois j'avais des essais sur une colonne de 60000 cellules avec
une cellule vide sur deux avec
Code:
SpecialCells(xlCellTypeBlanks)
tres lent plus de 40 secondes.... en passant par un array < a une seconde
cela devient interessant si on a de grandes plages de cellules vide contiguées dans la colonne

a+ leti
 
Re : S'arrêter à temps !!!

Re


Je ne suis pas pressé (contrairement aux jeunes générations 😉 )

Pour moi 40 secondes, c'est très rapide 😀
(comparer à jadis quand je chargeais un programme à partir d'un magnétophone car oui Madame, en ce temps là, je n'avais pas de disque dur !)

PS: je travaille rarement avec des classeurs contenant 60 000 lignes de données utiles , voir jamais )
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
587
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
12
Affichages
1 K
Réponses
17
Affichages
2 K
Réponses
0
Affichages
654
Réponses
7
Affichages
869
Réponses
3
Affichages
994
Retour