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

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 !

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

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

Dernière édition:
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
 
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:
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 🙂
 
- 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

Discussions similaires

Réponses
9
Affichages
199
Réponses
7
Affichages
280
Réponses
6
Affichages
299
Retour