(Résolu) Suppression de cellules vide de manière intégrale

duninpohja

XLDnaute Nouveau
Bonjour a tous,
après avoir fouillé un long moment et essayé bon nombre de solutions, je n arrive pas a être satisfait du resultat.
Je cherche un petit bout de code vba pour effacer les cellules vides en decalant vers la gauche sur une selection donnée.
Mes problèmes sont les suivants: le temps de traitement est juste incroyablement long avec des codes de ce genre:

'Dim Data As Range, Lig%, Col%
'Set Data = Range("a9:m213")
' Application.ScreenUpdating = False
'With Data
'For Lig = 1 To .Rows.Count
'For Col = .Columns.Count To 1 Step -1
'If .Cells(Lig, Col) = "" Then .Cells(Lig, Col).Delete shift:=xlToLeft
'Next Col
'Next Lig
'End With
' Application.ScreenUpdating = True



ou bien


'For x = 1 To 2 'Faire tourner la macro 10 fois
' For i = 6 To 213
' For k = 13 To 1 Step -1
' If Cells(i, k) = "" Then
' Cells(i, k).Delete shift:=xlToLeft
' End If
'Next k
'Next i
'Next x




De plus ces codes ne m'effacent pas tous mes blancs. J ai l impression que si j ai un vide au milieu de deux cellues non vides alors il n'effectue pas la suppression.
Si vous aviez une idée je serais preneur.
Merci par avance
 

Pièces jointes

  • testRevision.xls
    274.5 KB · Affichages: 39
Dernière édition:

Victor21

XLDnaute Barbatruc
Re : Suppression de cellules vide de manière intégrale

Bonsoir.

Quelques pistes :
1° Commencez par le bas à droite
2° Mettez le mode de calcul sur ordre au début, et en automatique à la fin
Pas testé, faute de fichier joint ...
 

Victor21

XLDnaute Barbatruc
Re : Suppression de cellules vide de manière intégrale

Re,

Je ne comprend pas le point numero 2.
Pouvez vous développer votre idée s il vous plait?
Mais bien sûr :)
Application.Calculation = xlCalculationManual
en début de macro permet de ne pas recalculer toute la feuille lors de chaque suppression de cellule.
Application.Calculation = xlCalculationAutomatic
en fin de macro recalcule toute la feuille.
 

duninpohja

XLDnaute Nouveau
Re : Suppression de cellules vide de manière intégrale

Merci pour les explications.
Cette manip me permet d accélerer les calculs mais je suis toujours confronté au même problème, c est à dire que la suppression se fait correctement jusqu'a arriver à deux cellules de ma colonnes A.
C est comme s il me mettait mes cellules non vide sous forme d un escalier descendant et non d une colonne de valeurs non vide.
Je suis très surpris du résultat.
 

Victor21

XLDnaute Barbatruc
Re : Suppression de cellules vide de manière intégrale

Re,

Ce code déplace les cellules vers la gauche de manière à ce qu'il n'y ait pas de vide dans chaque ligne.
VB:
Sub test()

    Dim Data As Range, Lig%, Col%
    Set Data = Range("a6:m213")
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    With Data
        For Lig = .Rows.Count To 1 Step -1
            For Col = .Columns.Count To 1 Step -1
                If .Cells(Lig, Col) = "" Then .Cells(Lig, Col).Delete shift:=xlToLeft
            Next Col
        Next Lig
    End With
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
End Sub
 

Victor21

XLDnaute Barbatruc
Re : Suppression de cellules vide de manière intégrale

Re,

Ajoutez cette condition :
If .Cells(Lig, Col) = " " Then .Cells(Lig, Col).Delete shift:=xlToLeft
car beaucoup de cellules "vides" ne le sont pas (contiennent une espace).

Edit : en pj, une mefc sur les cellules non vides
 

Pièces jointes

  • lunes.xls
    162 KB · Affichages: 38
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 069
Messages
2 085 040
Membres
102 763
dernier inscrit
NICO26