Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Supression d'espaces inutiles.

14 réponses
Avatar
gtoukc
Bonsoir à tous ( et à toutes )
Voilà, sous Office 2010, dans Excel plus précisément, j'ai créé un tableau
d'environ 55 000 lignes sur 60 colonnes.
Je voudrai supprimer les espaces vides en trop entre les
mots que contient ce tableau.
Donc une macro serait bien venue pour faire cette correction qui donnerai
ceci:
Je voudrai supprimer les espaces vides en trop entre les mots que contient
ce tableau.
Grand merci à celui ou celle qui peut m'aider et je sais que je peux compter
sur la compétence de certains d'entre vous.....
Fr@ncis

10 réponses

1 2
Avatar
Jacquouille
Bonjour
Dans le temps, il y avait supprespace() .....
Voir Excelabo.net où il y a, AMHA, un truc pour différencier les espaces
utiles entre les mots et les espaces qui font double emploi.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"gtoukc" a écrit dans le message de groupe de discussion :
5166e5b7$0$3721$

Bonsoir à tous ( et à toutes )
Voilà, sous Office 2010, dans Excel plus précisément, j'ai créé un tableau
d'environ 55 000 lignes sur 60 colonnes.
Je voudrai supprimer les espaces vides en trop entre les
mots que contient ce tableau.
Donc une macro serait bien venue pour faire cette correction qui donnerai
ceci:
Je voudrai supprimer les espaces vides en trop entre les mots que contient
ce tableau.
Grand merci à celui ou celle qui peut m'aider et je sais que je peux compter
sur la compétence de certains d'entre vous.....

Avatar
MichD
Bonjour,

Essaie ceci :

Tu adaptes le nom de la feuille au besoin dans la procédure.

Pour cette ligne de code : For a = 1 To 10
j'ai supposé arbitrairement qu'il n'y avait pas plus de 10
espaces consécutives dans les différentes expressions à
supprimer. Tu peux adapter le chiffre 10 pour le nombre
que tu penses requis. Assure-toi que ce nombre est suffisamment
grand pour ne rien oublier. Cette procédure ne touche pas au
contenu de cellule autre que du texte.

'------------------------------------
Sub test()
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom feuille à adapter
For a = 1 To 10
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
.Replace " ", " ", LookAt:=xlPart
End With
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'------------------------------------


MichD
---------------------------------------------------------------
Avatar
gtoukc
Bonjour,
cette macro fonctionne nickel
un petit bémol...elle ne supprime pas les espaces.... devant......
encore birn merci





"MichD" a écrit dans le message de news:
kk6ss2$iml$

Bonjour,

Essaie ceci :

Tu adaptes le nom de la feuille au besoin dans la procédure.

Pour cette ligne de code : For a = 1 To 10
j'ai supposé arbitrairement qu'il n'y avait pas plus de 10
espaces consécutives dans les différentes expressions à
supprimer. Tu peux adapter le chiffre 10 pour le nombre
que tu penses requis. Assure-toi que ce nombre est suffisamment
grand pour ne rien oublier. Cette procédure ne touche pas au
contenu de cellule autre que du texte.

'------------------------------------
Sub test()
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom feuille à adapter
For a = 1 To 10
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
.Replace " ", " ", LookAt:=xlPart
End With
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'------------------------------------


MichD
---------------------------------------------------------------

Avatar
MichD
| un petit bémol...elle ne supprime pas pas les espaces.... devant......

***Ce n'était pas spécifié dans ta demande...

Voilà une macro qui fera disparaître toutes les espaces en trop
y compris devant et après...
'----------------------------------------
Sub test()
Dim Rg As Range, Are As Range, T As Variant
Dim A As Long, B As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom feuille à adapter
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
For A = 1 To 10
.Replace " ", " ", LookAt:=xlPart
Next
For Each Are In .Cells.Areas
T = Are.Value
For A = 1 To UBound(T, 1)
For B = 1 To UBound(T, 2)
T(A, B) = Trim(T(A, B))
Next
Next
Are = T
Next
End With
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'----------------------------------------


MichD
---------------------------------------------------------------
"gtoukc" a écrit dans le message de groupe de discussion :
5167fdc2$0$2290$

Bonjour,
cette macro fonctionne nickel
un petit bémol...elle ne supprime pas les espaces.... devant......
encore birn merci





"MichD" a écrit dans le message de news:
kk6ss2$iml$

Bonjour,

Essaie ceci :

Tu adaptes le nom de la feuille au besoin dans la procédure.

Pour cette ligne de code : For a = 1 To 10
j'ai supposé arbitrairement qu'il n'y avait pas plus de 10
espaces consécutives dans les différentes expressions à
supprimer. Tu peux adapter le chiffre 10 pour le nombre
que tu penses requis. Assure-toi que ce nombre est suffisamment
grand pour ne rien oublier. Cette procédure ne touche pas au
contenu de cellule autre que du texte.

'------------------------------------
Sub test()
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom feuille à adapter
For a = 1 To 10
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
.Replace " ", " ", LookAt:=xlPart
End With
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'------------------------------------


MichD
---------------------------------------------------------------

Avatar
gtoukc
C' est vrai je ne l'avais pas spécifié.
Je reste admiratif devant ta rapidité et ton efficacité...
Encore merci, et bon week-end.




"MichD" a écrit dans le message de news:
kk90js$7r9$

| un petit bémol...elle ne supprime pas pas les espaces.... devant......

***Ce n'était pas spécifié dans ta demande...

Voilà une macro qui fera disparaître toutes les espaces en trop
y compris devant et après...
'----------------------------------------
Sub test()
Dim Rg As Range, Are As Range, T As Variant
Dim A As Long, B As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom feuille à adapter
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
For A = 1 To 10
.Replace " ", " ", LookAt:=xlPart
Next
For Each Are In .Cells.Areas
T = Are.Value
For A = 1 To UBound(T, 1)
For B = 1 To UBound(T, 2)
T(A, B) = Trim(T(A, B))
Next
Next
Are = T
Next
End With
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'----------------------------------------


MichD
---------------------------------------------------------------
"gtoukc" a écrit dans le message de groupe de discussion :
5167fdc2$0$2290$

Bonjour,
cette macro fonctionne nickel
un petit bémol...elle ne supprime pas les espaces.... devant......
encore birn merci





"MichD" a écrit dans le message de news:
kk6ss2$iml$

Bonjour,

Essaie ceci :

Tu adaptes le nom de la feuille au besoin dans la procédure.

Pour cette ligne de code : For a = 1 To 10
j'ai supposé arbitrairement qu'il n'y avait pas plus de 10
espaces consécutives dans les différentes expressions à
supprimer. Tu peux adapter le chiffre 10 pour le nombre
que tu penses requis. Assure-toi que ce nombre est suffisamment
grand pour ne rien oublier. Cette procédure ne touche pas au
contenu de cellule autre que du texte.

'------------------------------------
Sub test()
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom feuille à adapter
For a = 1 To 10
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
.Replace " ", " ", LookAt:=xlPart
End With
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'------------------------------------


MichD
---------------------------------------------------------------




Avatar
gtoukc
Bonjour MichD , et les autres bine entendu
Je n' ai testé la macro que ce matin, pas eu le temps avant.
Elle se boque à:
For A = 1 To UBound(T, 1)
Merci, A+tard



"gtoukc" a écrit dans le message de news:
516809bc$0$1970$
C' est vrai je ne l'avais pas spécifié.
Je reste admiratif devant ta rapidité et ton efficacité...
Encore merci, et bon week-end.




"MichD" a écrit dans le message de news:
kk90js$7r9$

| un petit bémol...elle ne supprime pas pas les espaces.... devant......

***Ce n'était pas spécifié dans ta demande...

Voilà une macro qui fera disparaître toutes les espaces en trop
y compris devant et après...




----------------------------------------
Sub test()
Dim Rg As Range, Are As Range, T As Variant
Dim A As Long, B As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom feuille à adapter
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
For A = 1 To 10
.Replace " ", " ", LookAt:=xlPart
Next
For Each Are In .Cells.Areas
T = Are.Value
For A = 1 To UBound(T, 1)
For B = 1 To UBound(T, 2)
T(A, B) = Trim(T(A, B))
Next
Next
Are = T
Next
End With
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

MichD
---------------------------------------------------------------
"gtoukc" a écrit dans le message de groupe de discussion :
5167fdc2$0$2290$

Bonjour,
cette macro fonctionne nickel
un petit bémol...elle ne supprime pas les espaces.... devant......
encore birn merci





"MichD" a écrit dans le message de news:
kk6ss2$iml$

Bonjour,

Essaie ceci :

Tu adaptes le nom de la feuille au besoin dans la procédure.

Pour cette ligne de code : For a = 1 To 10
j'ai supposé arbitrairement qu'il n'y avait pas plus de 10
espaces consécutives dans les différentes expressions à
supprimer. Tu peux adapter le chiffre 10 pour le nombre
que tu penses requis. Assure-toi que ce nombre est suffisamment
grand pour ne rien oublier. Cette procédure ne touche pas au
contenu de cellule autre que du texte.

'------------------------------------
Sub test()
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom feuille à adapter
For a = 1 To 10
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
.Replace " ", " ", LookAt:=xlPart
End With
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'------------------------------------


MichD
---------------------------------------------------------------








Avatar
MichD
Bonjour,

Avec cette macro, il n'y aucune raison pour que la
procédure s'arrête sur cette ligne :

À partir de la barre des menus de la fenêtre de l'éditeur
de code / Outils / référence /
Est-ce qu'il y a des items marqués "MANQUANTES" ? Si oui,
décoche ces items et essaie à nouveau la macro.

Une autre alternative, publie le classeur (seulement la feuille)
en utilisant l'adresse cijoint.com et retourne-nous ici l'adresse
que tu auras obtenue.

'--------------------------------------------------
Sub test()
Dim Rg As Range, Are As Range, T As Variant
Dim A As Long, B As Long

Application.ScreenUpdating = False
Application.EnableEvents = False

With Worksheets("Feuil1") 'Nom feuille à adapter
If Not IsEmpty(.UsedRange) Then
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
For A = 1 To 10
.Replace " ", " ", LookAt:=xlPart
Next
For Each Are In .Cells.Areas
T = Are.Value
For A = 1 To UBound(T, 1)
For B = 1 To UBound(T, 2)
T(A, B) = Trim(T(A, B))
Next
Next
Are = T
Next
End With
Else
MsgBox "La feuille est totalement vide."
End If
End With

Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
'--------------------------------------------------




MichD
---------------------------------------------------------------
"gtoukc" a écrit dans le message de groupe de discussion :
51690292$0$1854$

Bonjour MichD , et les autres bine entendu
Je n' ai testé la macro que ce matin, pas eu le temps avant.
Elle se boque à:
For A = 1 To UBound(T, 1)
Merci, A+tard



"gtoukc" a écrit dans le message de news:
516809bc$0$1970$
C' est vrai je ne l'avais pas spécifié.
Je reste admiratif devant ta rapidité et ton efficacité...
Encore merci, et bon week-end.




"MichD" a écrit dans le message de news:
kk90js$7r9$

| un petit bémol...elle ne supprime pas pas les espaces.... devant......

***Ce n'était pas spécifié dans ta demande...

Voilà une macro qui fera disparaître toutes les espaces en trop
y compris devant et après...




----------------------------------------
Sub test()
Dim Rg As Range, Are As Range, T As Variant
Dim A As Long, B As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom feuille à adapter
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
For A = 1 To 10
.Replace " ", " ", LookAt:=xlPart
Next
For Each Are In .Cells.Areas
T = Are.Value
For A = 1 To UBound(T, 1)
For B = 1 To UBound(T, 2)
T(A, B) = Trim(T(A, B))
Next
Next
Are = T
Next
End With
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

MichD
---------------------------------------------------------------
"gtoukc" a écrit dans le message de groupe de discussion :
5167fdc2$0$2290$

Bonjour,
cette macro fonctionne nickel
un petit bémol...elle ne supprime pas les espaces.... devant......
encore birn merci





"MichD" a écrit dans le message de news:
kk6ss2$iml$

Bonjour,

Essaie ceci :

Tu adaptes le nom de la feuille au besoin dans la procédure.

Pour cette ligne de code : For a = 1 To 10
j'ai supposé arbitrairement qu'il n'y avait pas plus de 10
espaces consécutives dans les différentes expressions à
supprimer. Tu peux adapter le chiffre 10 pour le nombre
que tu penses requis. Assure-toi que ce nombre est suffisamment
grand pour ne rien oublier. Cette procédure ne touche pas au
contenu de cellule autre que du texte.

'------------------------------------
Sub test()
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom feuille à adapter
For a = 1 To 10
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
.Replace " ", " ", LookAt:=xlPart
End With
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'------------------------------------


MichD
---------------------------------------------------------------








Avatar
gtoukc
Bonsoir MichD,
En fait, j'ai mis en application sur un autre classeur cette macro modifiée,
la lignes: For A = 1 To 10
se met en surligné jaune et le mode Débogage s'affiche, mais pour autant
en cliquant sur "Fin" , la fenètre se ferme et la macro a accompli son
office
donc je m'en contente.
Merci





"MichD" a écrit dans le message de news:
kke605$b47$
Bonjour,

Avec cette macro, il n'y aucune raison pour que la
procédure s'arrête sur cette ligne :

À partir de la barre des menus de la fenêtre de l'éditeur
de code / Outils / référence /
Est-ce qu'il y a des items marqués "MANQUANTES" ? Si oui,
décoche ces items et essaie à nouveau la macro.

Une autre alternative, publie le classeur (seulement la feuille)
en utilisant l'adresse cijoint.com et retourne-nous ici l'adresse
que tu auras obtenue.

'--------------------------------------------------
Sub test()
Dim Rg As Range, Are As Range, T As Variant
Dim A As Long, B As Long

Application.ScreenUpdating = False
Application.EnableEvents = False

With Worksheets("Feuil1") 'Nom feuille à adapter
If Not IsEmpty(.UsedRange) Then
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
For A = 1 To 10
.Replace " ", " ", LookAt:=xlPart
Next
For Each Are In .Cells.Areas
T = Are.Value
For A = 1 To UBound(T, 1)
For B = 1 To UBound(T, 2)
T(A, B) = Trim(T(A, B))
Next
Next
Are = T
Next
End With
Else
MsgBox "La feuille est totalement vide."
End If
End With

Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
'--------------------------------------------------




MichD
---------------------------------------------------------------
"gtoukc" a écrit dans le message de groupe de discussion :
51690292$0$1854$

Bonjour MichD , et les autres bine entendu
Je n' ai testé la macro que ce matin, pas eu le temps avant.
Elle se boque à:
For A = 1 To UBound(T, 1)
Merci, A+tard



"gtoukc" a écrit dans le message de news:
516809bc$0$1970$
C' est vrai je ne l'avais pas spécifié.
Je reste admiratif devant ta rapidité et ton efficacité...
Encore merci, et bon week-end.




"MichD" a écrit dans le message de news:
kk90js$7r9$

| un petit bémol...elle ne supprime pas pas les espaces.... devant......

***Ce n'était pas spécifié dans ta demande...

Voilà une macro qui fera disparaître toutes les espaces en trop
y compris devant et après...




----------------------------------------
Sub test()
Dim Rg As Range, Are As Range, T As Variant
Dim A As Long, B As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom feuille à adapter
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
For A = 1 To 10
.Replace " ", " ", LookAt:=xlPart
Next
For Each Are In .Cells.Areas
T = Are.Value
For A = 1 To UBound(T, 1)
For B = 1 To UBound(T, 2)
T(A, B) = Trim(T(A, B))
Next
Next
Are = T
Next
End With
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

MichD
---------------------------------------------------------------
"gtoukc" a écrit dans le message de groupe de discussion :
5167fdc2$0$2290$

Bonjour,
cette macro fonctionne nickel
un petit bémol...elle ne supprime pas les espaces.... devant......
encore birn merci





"MichD" a écrit dans le message de news:
kk6ss2$iml$

Bonjour,

Essaie ceci :

Tu adaptes le nom de la feuille au besoin dans la procédure.

Pour cette ligne de code : For a = 1 To 10
j'ai supposé arbitrairement qu'il n'y avait pas plus de 10
espaces consécutives dans les différentes expressions à
supprimer. Tu peux adapter le chiffre 10 pour le nombre
que tu penses requis. Assure-toi que ce nombre est suffisamment
grand pour ne rien oublier. Cette procédure ne touche pas au
contenu de cellule autre que du texte.

'------------------------------------
Sub test()
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom feuille à adapter
For a = 1 To 10
With .UsedRange.SpecialCells(xlCellTypeConstants, 2)
.Replace " ", " ", LookAt:=xlPart
End With
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'------------------------------------


MichD
---------------------------------------------------------------











Avatar
MichD
Bonjour,

Si tu veux publier ton classeur en utilisant cette
adresse Cjoint.com (tu dois nous retourner l'adresse
obtenue ici), je veux bien regarder ce qu'il y a de
particulier avec ce classeur.


MichD
---------------------------------------------------------------
Avatar
gtoukc
Bonjour à tous,
et en particulier à MichD,
Voilà un tableau en exemple auquel j' ai adapté la macro.
Bien entendu, j' ai pris un tout petit tableau car l' original
fait + de 55 000 lignes, d'ou l'interet de cette macro.
Bonne journée.



http://cjoint.com/?0DpiWq0I9EA
"MichD" a écrit dans le message de news:
kketl7$g7l$
Bonjour,

Si tu veux publier ton classeur en utilisant cette adresse Cjoint.com (tu
dois nous retourner l'adresse
obtenue ici), je veux bien regarder ce qu'il y a de particulier avec ce
classeur.


MichD
---------------------------------------------------------------
1 2