Déplacer les cellules non-vides vers gauche

pedram0080

XLDnaute Occasionnel
Bonjour tout le monde,
Comme toujours j'ai besoin de vos aide.
C'est pour une Macro qui transfert les valeurs des cellules non-vides (ou d'une plage définie) vers gauche.
j'ai préparé un fichier Ex. en pièce jointe.

Merci en avance et bon week end
 

Pièces jointes

  • Deplacer.xlsm
    14.6 KB · Affichages: 37

Calvus

XLDnaute Barbatruc
Bonsoir pedram0080, le Forum,

Pas trouvé mieux pour l'instant que de déplacer les cellules une par une, par clic à chaque fois.

Regarde si cela te convient en attendant.

Adapté d'un code de Si.

A+

EDIT : Voilà qui est mieux !
VB:
Option Explicit

Sub Deplacer()
    Dim C As Range, valeur As String
Set C = ActiveCell
      valeur = C
      C.Copy
      C.ClearContents
          Do
      Set C = ActiveCell(1, 0)
      C.Select
          Loop Until C(1, 0) <> ""
C = valeur
End Sub
 

Pièces jointes

  • Deplacer.xlsm
    20.2 KB · Affichages: 40
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Bonjour à tous.

Il y a sûrement mieux à faire, mais essayez tout de même ceci :
VB:
Sub aaa()
Dim i&, f As Boolean, Ligne As Range, Cel As Range
  Application.EnableEvents = False
  With Selection
    For Each Ligne In .Rows
      With Ligne
        Do
          f = False
          For i = .Cells.Count To 2 Step -1
            If Not IsEmpty(.Cells(1, i)) Then If IsEmpty(.Cells(1, i - 1)) Then .Cells(1, i - 1).Value = .Cells(1, i).Value: .Cells(1, i).Value = Empty: f = True
          Next
        Loop While f
      End With
    Next
  End With
  Application.EnableEvents = True
End Sub
Mode d'emploi : sélectionner la plage à traiter puis exécuter la procédure.

ℝOGER2327
#8510


Mardi 10 Pédale 144 (Nativité de Saint Tancrède, jeune homme - fête Suprême Quarte)
14 Ventôse An CCXXV, 0,2509h - vélar
2017-W09-6T00:36:08Z
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir pedram0080, à tous :),

(...) je crois ça serais mieux avec "Selection.Delete Shift:=xlToLeft" mais j'arrive pas à l'appliquer Merci

Essayer la procédure test après avoir sélectionné la zone à traiter:
VB:
Sub test()
  'sélectionner la plage à traiter
  SupprimerCellulesVides Selection
End Sub

Sub SupprimerCellulesVides(xplage As Range)
On Error Resume Next
  xplage.SpecialCells(xlCellTypeBlanks).Delete xlShiftToLeft
End Sub
 
Dernière édition:

DoubleZero

XLDnaute Barbatruc
Bonjour à toutes et à tous,

Une autre suggestion :
VB:
Option Explicit
Sub Décaler()
    Dim plage As Range
    On Error Resume Next
    Set plage = Application.InputBox(Prompt:="Sélectionner les colonnes : (Exemple : a:g) ", _
        Title:="Etendue ? ", Default:="a:g", Type:=8)
    plage.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft
End Sub
A bientôt :)
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof