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

VBA Supprimer les quatre derniers caractères de milliers de cellules

12 réponses
Avatar
Céline Brien
Bonjour à tous et à toutes,
Un fichier Excel 2000 avec une colonne contenant noms et numéros de
département.
Des milliers de cellules !
PAUL TALBOT 3456
LISE LATRIMOUILLE 3455
ALAIN GIROUX 2366
Je souhaite supprimer le numéro de département et les espaces après le
nom.
Merci beaucoup de votre aide,
Céline

10 réponses

1 2
Avatar
ChrisV
Bonjour Céline,

Sur la plage de cellules sélectionnée...

Sub extracTxt()
Dim c As Range, txT As String, i As Integer
Application.ScreenUpdating = False
For Each c In Selection
txT = ""
For i = 1 To Len(c)
If Not IsNumeric(Mid(c, i, 1)) = True Then _
txT = txT & Mid(c, i, 1)
Next i
c.Value = Application.Trim(txT)
Next c
End Sub


ChrisV


"Céline Brien" a écrit dans le message de
news:
Bonjour à tous et à toutes,
Un fichier Excel 2000 avec une colonne contenant noms et numéros de
département.
Des milliers de cellules !
PAUL TALBOT 3456
LISE LATRIMOUILLE 3455
ALAIN GIROUX 2366
Je souhaite supprimer le numéro de département et les espaces après le
nom.
Merci beaucoup de votre aide,
Céline



Avatar
Céline Brien
Bonjour Chris,
Super ! Exactement ce qu'il me fallait ! De la vraie magie !
Assez rapide aussi. Environ 12 secondes pour plus de 7 000 cellules.
Il me reste à étudier les codes pour les comprendre.
Merci beaucoup,
Céline


"ChrisV" a écrit dans le message de
news:
Bonjour Céline,

Sur la plage de cellules sélectionnée...

Sub extracTxt()
Dim c As Range, txT As String, i As Integer
Application.ScreenUpdating = False
For Each c In Selection
txT = ""
For i = 1 To Len(c)
If Not IsNumeric(Mid(c, i, 1)) = True Then _
txT = txT & Mid(c, i, 1)
Next i
c.Value = Application.Trim(txT)
Next c
End Sub


ChrisV


"Céline Brien" a écrit dans le message
de

news:
Bonjour à tous et à toutes,
Un fichier Excel 2000 avec une colonne contenant noms et numéros de
département.
Des milliers de cellules !
PAUL TALBOT 3456
LISE LATRIMOUILLE 3455
ALAIN GIROUX 2366
Je souhaite supprimer le numéro de département et les espaces après
le


nom.
Merci beaucoup de votre aide,
Céline







Avatar
ChrisV
De rien Céline, content d'avoir pu te dépanner !
;-)


ChrisV


"Céline Brien" a écrit dans le message de
news: uNN9U$
Bonjour Chris,
Super ! Exactement ce qu'il me fallait ! De la vraie magie !
Assez rapide aussi. Environ 12 secondes pour plus de 7 000 cellules.
Il me reste à étudier les codes pour les comprendre.
Merci beaucoup,
Céline


"ChrisV" a écrit dans le message de
news:
Bonjour Céline,

Sur la plage de cellules sélectionnée...

Sub extracTxt()
Dim c As Range, txT As String, i As Integer
Application.ScreenUpdating = False
For Each c In Selection
txT = ""
For i = 1 To Len(c)
If Not IsNumeric(Mid(c, i, 1)) = True Then _
txT = txT & Mid(c, i, 1)
Next i
c.Value = Application.Trim(txT)
Next c
End Sub


ChrisV


"Céline Brien" a écrit dans le message
de

news:
Bonjour à tous et à toutes,
Un fichier Excel 2000 avec une colonne contenant noms et numéros de
département.
Des milliers de cellules !
PAUL TALBOT 3456
LISE LATRIMOUILLE 3455
ALAIN GIROUX 2366
Je souhaite supprimer le numéro de département et les espaces après
le


nom.
Merci beaucoup de votre aide,
Céline










Avatar
Michel Gaboly
Bonjour Céline,

Voici une variante qui devrait être encore + rapide.

Sub Nettoie()
Dim c As Range
For Each c In Selection
c.Value = Trim(Left(c.Value, Len(c) - 5))
Next c
End Sub

La raisin de la plus grande rapidité est que contrairement
à la procédure de Chris, tous les caractères ne sont pas testés :
pour cette raison, ma procédure est basée sur ton exemple
(des espaces et 4 chiffres). Elle ne fonctionne que s'il y a au
moins 5 caractères à supprimer en fin de chaîne (espaces
et choffres), et pas + de 5 chiffres.

En résumé, la procédure de Chris est d'un usage + général,
et celle-ci devrait être + rapide.



Bonjour Chris,
Super ! Exactement ce qu'il me fallait ! De la vraie magie !
Assez rapide aussi. Environ 12 secondes pour plus de 7 000 cellules.
Il me reste à étudier les codes pour les comprendre.
Merci beaucoup,
Céline

"ChrisV" a écrit dans le message de
news:
Bonjour Céline,

Sur la plage de cellules sélectionnée...

Sub extracTxt()
Dim c As Range, txT As String, i As Integer
Application.ScreenUpdating = False
For Each c In Selection
txT = ""
For i = 1 To Len(c)
If Not IsNumeric(Mid(c, i, 1)) = True Then _
txT = txT & Mid(c, i, 1)
Next i
c.Value = Application.Trim(txT)
Next c
End Sub


ChrisV


"Céline Brien" a écrit dans le message
de

news:
Bonjour à tous et à toutes,
Un fichier Excel 2000 avec une colonne contenant noms et numéros de
département.
Des milliers de cellules !
PAUL TALBOT 3456
LISE LATRIMOUILLE 3455
ALAIN GIROUX 2366
Je souhaite supprimer le numéro de département et les espaces après
le


nom.
Merci beaucoup de votre aide,
Céline







--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
sabatier
pour cela, céline, mieux vaut t'adresser à quelqu'un d'autre car chez
les MVP, tout ceci est tellement inné qu'ils ont bien du mal à expliquer
le pourquoi du comment...
jps (toujours prêt, comme les scouts)

Céline Brien a écrit:
Bonjour Chris,

Il me reste à étudier les codes pour les comprendre.


Avatar
Pierre CFI [mvp]
oui, hum "toujours prét" lorsque l'on s'adresse à une femme c'est, jusqu'à un certain age, tendancieux, aprés c'est prétentieux
:o))) sinon ta grippe ?? çà va mieux, remarque, il va falloir t'habituer... avec l'age, bon à tout à l'heure

--
Pierre CFI



Avatar
ChrisV
Bonjour Michel,

la procédure de Chris est d'un usage + général


C'est effectivement dans cette direction que je m'étais orienté, au cas
ou...
(attention toutefois si la chaîne de caractères comporte des chiffres
"intermédiaires"...)


ChrisV


"Michel Gaboly" a écrit dans le message de news:

Bonjour Céline,

Voici une variante qui devrait être encore + rapide.

Sub Nettoie()
Dim c As Range
For Each c In Selection
c.Value = Trim(Left(c.Value, Len(c) - 5))
Next c
End Sub

La raisin de la plus grande rapidité est que contrairement
à la procédure de Chris, tous les caractères ne sont pas testés :
pour cette raison, ma procédure est basée sur ton exemple
(des espaces et 4 chiffres). Elle ne fonctionne que s'il y a au
moins 5 caractères à supprimer en fin de chaîne (espaces
et choffres), et pas + de 5 chiffres.

En résumé, la procédure de Chris est d'un usage + général,
et celle-ci devrait être + rapide.



Bonjour Chris,
Super ! Exactement ce qu'il me fallait ! De la vraie magie !
Assez rapide aussi. Environ 12 secondes pour plus de 7 000 cellules.
Il me reste à étudier les codes pour les comprendre.
Merci beaucoup,
Céline

"ChrisV" a écrit dans le message de
news:
Bonjour Céline,

Sur la plage de cellules sélectionnée...

Sub extracTxt()
Dim c As Range, txT As String, i As Integer
Application.ScreenUpdating = False
For Each c In Selection
txT = ""
For i = 1 To Len(c)
If Not IsNumeric(Mid(c, i, 1)) = True Then _
txT = txT & Mid(c, i, 1)
Next i
c.Value = Application.Trim(txT)
Next c
End Sub


ChrisV


"Céline Brien" a écrit dans le message
de

news:
Bonjour à tous et à toutes,
Un fichier Excel 2000 avec une colonne contenant noms et numéros de
département.
Des milliers de cellules !
PAUL TALBOT 3456
LISE LATRIMOUILLE 3455
ALAIN GIROUX 2366
Je souhaite supprimer le numéro de département et les espaces après
le


nom.
Merci beaucoup de votre aide,
Céline







--
Cordialement,

Michel Gaboly
http://www.gaboly.com







Avatar
Michel Gaboly
Bonjour Chris,

Nous sommes tout à fait d'accord : ma procédure est adaptée à un
nombre de cas bien moins grand que la tienne, mais est optimisée
pour la structure correspondant à l'exemple donné : si toutes les
lignes ont la même structure (texte, puis espaces puis 4 chiffres),
ma procédure sera plus rapide, mais si les données ne sont pas
homogènes dans leur forme, il est évident qu'il faut utiliser la
tienne.



Bonjour Michel,

la procédure de Chris est d'un usage + général


C'est effectivement dans cette direction que je m'étais orienté, au cas
ou...
(attention toutefois si la chaîne de caractères comporte des chiffres
"intermédiaires"...)

ChrisV

"Michel Gaboly" a écrit dans le message de news:

Bonjour Céline,

Voici une variante qui devrait être encore + rapide.

Sub Nettoie()
Dim c As Range
For Each c In Selection
c.Value = Trim(Left(c.Value, Len(c) - 5))
Next c
End Sub

La raisin de la plus grande rapidité est que contrairement
à la procédure de Chris, tous les caractères ne sont pas testés :
pour cette raison, ma procédure est basée sur ton exemple
(des espaces et 4 chiffres). Elle ne fonctionne que s'il y a au
moins 5 caractères à supprimer en fin de chaîne (espaces
et choffres), et pas + de 5 chiffres.

En résumé, la procédure de Chris est d'un usage + général,
et celle-ci devrait être + rapide.



Bonjour Chris,
Super ! Exactement ce qu'il me fallait ! De la vraie magie !
Assez rapide aussi. Environ 12 secondes pour plus de 7 000 cellules.
Il me reste à étudier les codes pour les comprendre.
Merci beaucoup,
Céline

"ChrisV" a écrit dans le message de
news:
Bonjour Céline,

Sur la plage de cellules sélectionnée...

Sub extracTxt()
Dim c As Range, txT As String, i As Integer
Application.ScreenUpdating = False
For Each c In Selection
txT = ""
For i = 1 To Len(c)
If Not IsNumeric(Mid(c, i, 1)) = True Then _
txT = txT & Mid(c, i, 1)
Next i
c.Value = Application.Trim(txT)
Next c
End Sub


ChrisV


"Céline Brien" a écrit dans le message
de

news:
Bonjour à tous et à toutes,
Un fichier Excel 2000 avec une colonne contenant noms et numéros de
département.
Des milliers de cellules !
PAUL TALBOT 3456
LISE LATRIMOUILLE 3455
ALAIN GIROUX 2366
Je souhaite supprimer le numéro de département et les espaces après
le


nom.
Merci beaucoup de votre aide,
Céline







--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
Céline Brien
Bonjour Michel,
Merci beaucoup pour ta réponse.
Effectivement, tes codes sont environ 3 fois plus rapides.
J'ai noté les risques associés à ce gain de rapidité.
Merci encore,
Céline

"Michel Gaboly" a écrit dans le message de
news:
Bonjour Céline,

Voici une variante qui devrait être encore + rapide.

Sub Nettoie()
Dim c As Range
For Each c In Selection
c.Value = Trim(Left(c.Value, Len(c) - 5))
Next c
End Sub

La raisin de la plus grande rapidité est que contrairement
à la procédure de Chris, tous les caractères ne sont pas testés :
pour cette raison, ma procédure est basée sur ton exemple
(des espaces et 4 chiffres). Elle ne fonctionne que s'il y a au
moins 5 caractères à supprimer en fin de chaîne (espaces
et choffres), et pas + de 5 chiffres.

En résumé, la procédure de Chris est d'un usage + général,
et celle-ci devrait être + rapide.



Bonjour Chris,
Super ! Exactement ce qu'il me fallait ! De la vraie magie !
Assez rapide aussi. Environ 12 secondes pour plus de 7 000 cellules.
Il me reste à étudier les codes pour les comprendre.
Merci beaucoup,
Céline

"ChrisV" a écrit dans le message de
news:
Bonjour Céline,

Sur la plage de cellules sélectionnée...

Sub extracTxt()
Dim c As Range, txT As String, i As Integer
Application.ScreenUpdating = False
For Each c In Selection
txT = ""
For i = 1 To Len(c)
If Not IsNumeric(Mid(c, i, 1)) = True Then _
txT = txT & Mid(c, i, 1)
Next i
c.Value = Application.Trim(txT)
Next c
End Sub


ChrisV


"Céline Brien" a écrit dans le
message



de
news:
Bonjour à tous et à toutes,
Un fichier Excel 2000 avec une colonne contenant noms et numéros
de




département.
Des milliers de cellules !
PAUL TALBOT 3456
LISE LATRIMOUILLE 3455
ALAIN GIROUX 2366
Je souhaite supprimer le numéro de département et les espaces
après




le
nom.
Merci beaucoup de votre aide,
Céline







--
Cordialement,

Michel Gaboly
http://www.gaboly.com







Avatar
Céline Brien
Salut mon beau crapaud,
Pour moi tout ceci n'est pas du tout inné !
Conséquemment, mes clients apprécient mes explications et les qualifient
de très très claires.
Bises,
Céline

"sabatier" a écrit dans le message de
news:
pour cela, céline, mieux vaut t'adresser à quelqu'un d'autre car chez
les MVP, tout ceci est tellement inné qu'ils ont bien du mal à
expliquer

le pourquoi du comment...
jps (toujours prêt, comme les scouts)

Céline Brien a écrit:
Bonjour Chris,

Il me reste à étudier les codes pour les comprendre.





1 2