Supression d'espaces inutiles.

Le
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
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacquouille
Le #25332562
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.....

MichD
Le #25332682
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
---------------------------------------------------------------
gtoukc
Le #25335032
Bonjour,
cette macro fonctionne nickel
un petit bémol...elle ne supprime pas les espaces.... devant......
encore birn merci





"MichD" 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
---------------------------------------------------------------

MichD
Le #25335132
| 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" 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
---------------------------------------------------------------

gtoukc
Le #25335142
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" 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" 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
---------------------------------------------------------------




gtoukc
Le #25337372
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" 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" 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" 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
---------------------------------------------------------------








MichD
Le #25340522
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" 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" 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" 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
---------------------------------------------------------------








gtoukc
Le #25341272
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" 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" 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" 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" 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
---------------------------------------------------------------











MichD
Le #25341422
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
---------------------------------------------------------------
gtoukc
Le #25342132
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" 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
---------------------------------------------------------------
Publicité
Poster une réponse
Anonyme