Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Déplacer les cellules non-vides vers gauche

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

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: 38

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

Réponses
3
Affichages
352
Réponses
3
Affichages
428
Réponses
17
Affichages
797
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…