Retrait Chiffres et Caractères Spéciaux Plage de Cellules

Bonjour à tous !

De retour avec une nouvelle question à vous poser. J'ai parcouru avec beaucoup d'assiduité Internet sans trouver de réponse à ma question.

Je voudrais pourvoir faire en VBA la chose suivante ( je sais que l'on peut le faire autrement, mais les données changeant souvent, j'aimerais pouvoir automatiser ).

Sur une feuille, j'ai une liste en Colonne B telle que celle-ci avec 300 noms de personnes représentées par leur matricule + Nom :

3120 - Pascal MARTIN
3156 - Vincent PASCAL
2104 - Paul HENRI
440 - Stéphane DERRIEN
21 - André DUPONT....

Je voudrais avec VBA, transformer ( sur place ) en supprimant les nombres et les "-" obtenir ceci :

Pascal MARTIN
Vincent PASCAL
Paul HENRI
Stéphane DERRIEN
André DUPONT....

Merci à vous tous !!!!

Bonsoir à tous !

Je voudrais pourvoir faire en VBA la chose suivante ( je sais que l'on peut le faire autrement, mais les données changeant souvent, j'aimerais pouvoir automatiser ).

Penser que VBA est le seul outil pour automatiser un processus est une erreur....

Bonjour,

Une solution :

Sub galopin()
Dim Arr, i%, x%
Arr = [B1].CurrentRegion.Value
For i = 1 To UBound(Arr)
x = Len(Split(Arr(i, 1))(0)) + 4
Cells(i, 2) = Mid(Arr(i, 1), x)
Next
End Sub

Nota il est supposé que les colonnes A et C sont vides.

A+

Merci pour ta réponse Galopin.

malheureusement les colonnes A et C contiennent bien des infos, donc je suppose que ça ne fonctionnera pas ?

Merci JFL pour ta suggestion. Je sais bien que ce n'est pas forcement le plus simple mais je préfère ainsi, par soucis d'utilisation.

Pourquoi tu crois qu'on demande un fichier joint ?

Je dois pouvoir identifier les limites du tableau et leurs coordonnées, les lignes et les objets indésirables éventuellement, les données pourries ou fusionnées...

Bref tout ce qui est capable de planter la macro...

Le tableau est-il identifiable par une plage nommée dans le Gestionnaire de Noms ? Est-ce un tableau structuré ?

Si je n'ai pas besoin de l'intégralité du tableau ni de toutes les lignes, il est nécessaire de tenir compte avec précision de tout l'environnement des données...

A+

Bonjour à tous,
Ci-joint le fichier exemple simplifié...
Merci pour votre aide !

6exemple.xlsm (36.62 Ko)

La macro modifiée :

Sub galopin()
Dim Arr, i%, x%, rng As Range
Set rng = [A1].CurrentRegion
With rng
    Set rng = .Offset(2, 1).Resize(.Rows.Count - 2, 1)
End With
Arr = rng.Value
For i = 1 To UBound(Arr)
   x = Len(Split(Arr(i, 1))(0)) + 4
   Cells(i + 2, 2) = Mid(Arr(i, 1), x)
Next
End Sub

A+

Merci Galopin !!!!

Parfaitement ce que je cherchais ;-)

Bonjour à tous,

Galopin, si tu es en mesure de m'aider à nouveau....

J'ai du modifier mon fichier source, et mes données à "débarrasser" sont passés maintenant de la colonne B à la colonne C.

Je n'arrive pas à adapter ton code
Je remets le fichier exemple à jour, ci-joint.

Pour rappel, mon souhait était de debarasser la colonne C de tout ce qui n'est pas des lettres.

Merci encore !

2exemple.xlsm (33.81 Ko)
Sub galopin()
Dim Arr, i%, x%, rng As Range
Set rng = [A1].CurrentRegion
With rng
    Set rng = .Offset(2, 1).Resize(.Rows.Count - 2, 1)
End With
Arr = rng.Value
For i = 1 To UBound(Arr)
   x = Len(Split(Arr(i, 1))(0)) + 4
   Cells(i + 2, 2) = Mid(Arr(i, 1), x)
Next
End Sub

Bonjour,

La macro modifiée :

Sub galopin3()
Dim Arr, i%, x%, rng As Range
Set rng = [A1].CurrentRegion
With rng
    Set rng = .Offset(2, 2).Resize(.Rows.Count - 2, 1)
End With
Arr = rng.Value
For i = 1 To UBound(Arr)
   x = Len(Split(Arr(i, 1))(0)) + 4
   Cells(i + 2, 3) = Mid(Arr(i, 1), x)
Next
End Sub

A+

Merci à toi Galopin, pour ta rapidité et ton aide.
Je te souhaite une excellente journée,

Bonjour à tous,

Je reviens sur cette merveilleuse contribution de Galopin qui fonctionne à merveille.

Sauf que l'auteur des données que j'extraie a modifié la source.

Auparavant j'avais :
3570 - PAUL DURAND
Et maintenant :
PAUL DURAND - 3570

Cette macro ne fonctionne que sur le début de la cellule alors que ce que je veux retirer se trouve maintenant à la fin. Pour rappel, je ne veux conserver que le nom et prénom, et retirer le tiret et le matricule.

Voila la macro qui fonctionnait avant :

''' SUPPRIME CODE VENDEUR
Dim Arr, i%, x%, rng As Range
Set rng = [A1].CurrentRegion
With rng
    Set rng = .Offset(2, 2).Resize(.Rows.Count - 2, 1)
End With
Arr = rng.Value
For i = 1 To UBound(Arr)
   x = Len(Split(Arr(i, 1))(0)) + 4
   Cells(i + 2, 3) = Mid(Arr(i, 1), x)
Next
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFormattingCells:=True, AllowSorting:=True, AllowFiltering:= _
        True, AllowUsingPivotTables:=True
End Sub

Merci pour votre aide !

Hello !

Je me répond à moi même mais, cela peut toujours servir à quelqu'un...
J'ai trouvé ceci mais.... Il me reste les " - " dont je n'arrive pas à me débarrasser. Une idée d'adaptation ?

Donc de :

"PAUL DURAND - 3570", j'obtiens "PAUL DURAND - "

Merci,

Sub Suppcodes()
 With Range("C3", Cells(Rows.Count, "C").End(xlUp)).Cells
         For i = 0 To 9: .Replace i, "": Next
         .Value = Evaluate("index(TRIM(" & .Address(0, 0) & "),)")
    End With
End Sub

Bonjour,

Ceci:

Sub Suppcodes()
    Application.ScreenUpdating = False
    With Range("C3", Cells(Rows.Count, "C").End(xlUp)).Cells
       For i = 0 To 9
           .Replace i, ""
       Next
       .Value = Evaluate("index(TRIM(" & .Address(0, 0) & "),)")
       .Replace "-", ""
    End With
End Sub

Cdlt

bonjour,

Sub Suppcodes()
Dim Tablo, Arr, i%
Tablo = Range("C3", Cells(Rows.Count, "C").End(xlUp)).Value
For i = 1 To UBound(Tablo)
   Arr = Split(Tablo(i, 1))
   Cells(i + 2, 3) = Arr(0) & " " & Arr(1)
Next
End Sub

A+

Bonjour à tous les deux Galopin et Arturo83.
J'ai testé les deux propositions et celles d'Arturo83 fonctionne à merveille. Galopin, avec ta proposition, j'obtiens une erreur d'indice qui n'appartient pas à la sélection. Mon soucis est donc réglé à présent.

Et je tiens à vous remercier tous les deux pour votre aide.

Rechercher des sujets similaires à "retrait chiffres caracteres speciaux plage"