XL 2010 gauche si vide

matoupitou

XLDnaute Occasionnel
bonjour,

d'avance merci à celle ou celui qui pourra m'aider car si une macro est possible pour faire cela ce serait un gain de temps ENORME !
sur une zone quelconque, je souhaiterai rapatrier le plus à gauche possible l'info présente
le top serait que la zone soit demandée avant de s'exécuter
pour aider, j'ai fait une simulation sur le second onglet de la PJ (l'onglet 1 étnt un exemple)

B1@u
 

Pièces jointes

  • mettre_a_gauche_si_vide.xlsm
    62.5 KB · Affichages: 22

CISCO

XLDnaute Barbatruc
Bonjour à tous, bonjour Jocelyn

Il me semble qu'on peut faire directement avec
Code:
SIERREUR(INDEX(GAUCHE!$A2:$E2;PETITE.VALEUR(SI(GAUCHE!$A2:$E2<>"";COLONNE(GAUCHE!$A1:$E1));COLONNE()-6));"")
formule matricielle à tirer vers le bas et vers la droite.

@ plus
 

matoupitou

XLDnaute Occasionnel
Bonjour à tous, bonjour Jocelyn

Il me semble qu'on peut faire directement avec
Code:
SIERREUR(INDEX(GAUCHE!$A2:$E2;PETITE.VALEUR(SI(GAUCHE!$A2:$E2<>"";COLONNE(GAUCHE!$A1:$E1));COLONNE()-6));"")
formule matricielle à tirer vers le bas et vers la droite.

@ plus

merci pour ce retour, malheureusement je n'arrive pas à m'en servir
j'ai tenté décrire cela mais sans action à l'exécution

Sub GAUCHE()
'
Columns("A:E").SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlToLeft
Range("A").Select

End Sub
 

job75

XLDnaute Barbatruc
Bonjour matoupitou, Jocelyn, CISCO,

Pas besoin de VBA ni même de formules.

1) Sélectionner la zone qu'on veut traiter, éventuellement les 5 colonnes A:E entières.

2) Pour atteindre les textes vides "" (car il n'y a pas de cellules vides sur l'exemple) :

- touches Ctrl+H => Rechercher : <laisser vide>, Remplacer par : =1

- touche F5 => Cellules => Formules => OK

3) Clic droit sur une des zones sélectionnées => Supprimer => Décaler les cellules vers la gauche.

A+
 

job75

XLDnaute Barbatruc
Re,

Si l'on tient au VBA cette macro est simple et très rapide :
Code:
Sub GAUCHE_SI_VIDE()
Dim r As Range, t, ncol%, resu(), i&, n%, j%
ActiveCell.Activate 'si un objet est sélectionné
Set r = Intersect(Selection, ActiveSheet.UsedRange)
If r Is Nothing Then Exit Sub
t = r.Resize(r.Rows.Count + 1) 'matrice, plus rapide, au moins 2 éléments
ncol = UBound(t, 2)
ReDim resu(1 To UBound(t) - 1, 1 To ncol)
For i = 1 To UBound(resu)
  n = 0
  For j = 1 To ncol
    If t(i, j) <> "" Then n = n + 1: resu(i, n) = t(i, j)
Next j, i
With Feuil2 'CodeName de la feuille Résultat
  If .FilterMode Then .ShowAllData 'si la feuille est filtrée
  .UsedRange = "" 'RAZ
  .[A1].Resize(i - 1, ncol) = resu 'restitution
  .Columns.AutoFit 'ajustement largeur
  With .UsedRange: End With 'actualise les barres de défilement
  .Activate 'facultatif
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

  • mettre_a_gauche_si_vide(1).xlsm
    72.7 KB · Affichages: 15

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 455
Membres
103 216
dernier inscrit
LoshR7