Re bonjour,
Si c'est un "one shot" le plus simple à mes yeux est de faire un remplacer.
Vous sélectionner votre zone à traiter, vous faites Remplacer par avec Espace dans Rechercher puis valider.
Bonjour bauerjackob,
Un petit fichier test aurait été le bienvenu.
Ensuite, que voulez vous ?
1- Obtenir le contenu de cellule sans le blanc ?
2- Supprimer le premier blanc dans toutes les cellules ?
Le premier point peut être fait avec :
VB:
=STXT(A1;2;NBCAR(A1))
ou plus simple si on est sur que la chaine à moins de 1000 caractères :
=STXT(A1;2;1000)
mais demande une cellule pour le calcul. Ne peut pas être fait dans la cellule elle même.
Le second point peut être fait en VBA avec :
Code:
Sub SupEspace1()
For Each c In [A1:B20] ' à adapter
If Left(c.Value, 1) = " " Then c.Value = Mid(c.Value, 2)
Next c
End Sub
ou encore
Sub SupEspace2()
For Each c In [A1:B20] ' à adapter
c.Value = Trim(c.Value)
Next c
End Sub
Le premier module supprime un espace avant le mot.
Le second module supprime tous les espaces avant le mot.
Une troisième solution. Sélectionner la Plage puis faire Remplacer " " par rien.
Tout dépend de votre contexte.
Function TrimLeftAllCellsInRange(ByRef RnG As Range)
'supprime les espace devant le premier caracteres equivalent de "Ltrim" in one shoot
With RnG
TrimLeftAllCellsInRange = Evaluate("IF(ISTEXT(" & .Address & "),MID(" & .Address & ",FIND(MID(TRIM(" & .Address & "),1,2)," & .Address & ",1),LEN(" & .Address & ")),REPT(" & .Address & ",1))")
End With
End Function
la sub pour appeler la fonction
VB:
Sub test() 'trim les valeurs dans la plage gauche et droite
Dim DL, RnG As Range, tim&
DL = Cells(Rows.Count, 3).End(xlUp).Row
Set RnG = Sheets(1).Range("C1:C" & DL)
tim = Timer 'on capture le time avant la modif
RnG.Value = TrimLeftAllCellsInRange(RnG)
MsgBox Format(Timer - tim, "#0.00") 'message du temps passé a réguler les espace
End Sub
si tu veux :
j'ai aussi pour supprimer avant et après
j'ai aussi la régulation des espace avant /pendant et après
Bonjour bauerjackob,
Un petit fichier test aurait été le bienvenu.
Ensuite, que voulez vous ?
1- Obtenir le contenu de cellule sans le blanc ?
2- Supprimer le premier blanc dans toutes les cellules ?
Le premier point peut être fait avec :
VB:
=STXT(A1;2;NBCAR(A1))
ou plus simple si on est sur que la chaine à moins de 1000 caractères :
=STXT(A1;2;1000)
mais demande une cellule pour le calcul. Ne peut pas être fait dans la cellule elle même.
Le second point peut être fait en VBA avec :
Code:
Sub SupEspace1()
For Each c In [A1:B20] ' à adapter
If Left(c.Value, 1) = " " Then c.Value = Mid(c.Value, 2)
Next c
End Sub
ou encore
Sub SupEspace2()
For Each c In [A1:B20] ' à adapter
c.Value = Trim(c.Value)
Next c
End Sub
Le premier module supprime un espace avant le mot.
Le second module supprime tous les espaces avant le mot.
Une troisième solution. Sélectionner la Plage puis faire Remplacer " " par rien.
Tout dépend de votre contexte.
bonjour Sylvanu et Patricktoulon
Comme ma BDD a 12000 lignes et 14 colonnes, l'opérateur de saisie a fait beaucoup d 'erreur en mettant des espaces max 3 devant les textes et je veux rectifier ces erreurs d'un coup. A noter que Ma base des donné est déjà régit par VBA.
Re bonjour,
Si c'est un "one shot" le plus simple à mes yeux est de faire un remplacer.
Vous sélectionner votre zone à traiter, vous faites Remplacer par avec Espace dans Rechercher puis valider.
Function TrimLeftAllCellsInRange(ByRef RnG As Range)
'supprime les espace devant le premier caracteres equivalent de "Ltrim" in one shoot
With RnG
TrimLeftAllCellsInRange = Evaluate("IF(ISTEXT(" & .Address & "),MID(" & .Address & ",FIND(MID(TRIM(" & .Address & "),1,2)," & .Address & ",1),LEN(" & .Address & ")),REPT(" & .Address & ",1))")
End With
End Function
la sub pour appeler la fonction
VB:
Sub test() 'trim les valeurs dans la plage gauche et droite
Dim DL, RnG As Range, tim&
DL = Cells(Rows.Count, 3).End(xlUp).Row
Set RnG = Sheets(1).Range("C1:C" & DL)
tim = Timer 'on capture le time avant la modif
RnG.Value = TrimLeftAllCellsInRange(RnG)
MsgBox Format(Timer - tim, "#0.00") 'message du temps passé a réguler les espace
End Sub
si tu veux :
j'ai aussi pour supprimer avant et après
j'ai aussi la régulation des espace avant /pendant et après