(resolu) "Nettoyer" des références par une macro.

klorane

XLDnaute Occasionnel
Bonsoir le forum,

je suis embêté avec des références dans un tableau.
Et pour m'aider j'aurai besoin de faire un "nettoyage" de ces références

Dans une feuil1 et dans les cellules D2 à D150 j'ai des références les unes derrières les autres séparées par "/"
Problème c'est que certaines de ces références sont aussi composées de "/".

Se qui différencie la séparation et la compostion c'est l'espace avant et après "/"

Ex : Références séparées 12/600 / 12/600 PS
Il y a donc la référence 12/600 et 12/600 PS

Par une macro, serait il possible de faire que "/" placé dans une référence soit remplacé par un espace mais conserver le "/" de séparation des diiférentes références.

Se qui donnerait le résultat suivant : 12 600 / 12 600 PS

Je joins un tableau d'exemple.
La colonne à traiter serait de D2 A D150.

Merci

Klorane.
 

Pièces jointes

  • demo6.xlsm
    12.4 KB · Affichages: 61
Dernière édition:

fhoest

XLDnaute Accro
Re : "Nettoyer" des références par une macro.

Edit .. Bonjour David84 ;)
Bonjour,
un exemple avec la cellule "D3" est résultat écrit dans "E3"
Code:
Sub test()
Dim tempo As String
tempo = Replace([D3], " / ", "zzz")
tempo = Replace(tempo, "/", " ")
[E3] = Replace(tempo, "zzz", " / ")
End Sub

A bientôt.
 

klorane

XLDnaute Occasionnel
Re : "Nettoyer" des références par une macro.

Re,

ça fonctionne bien avec la methode de fhoest.

Seul regret c'est que la macro va etre "enorme" car elle va faire environ 450 lignes.

Faudrait un truc avec next pour lui dire de sauter les lignes

Mais sinon l'idée est là.

Klorane
 

klorane

XLDnaute Occasionnel
Re : "Nettoyer" des références par une macro.

Tu trouve que 450 lignes c 'est pas beaucoup? et par une macro répétée?

Dim tempo As String
tempo = Replace([D3], " / ", "zzz")
tempo = Replace(tempo, "/", " ")
[E3] = Replace(tempo, "zzz", " / ")

tempo = Replace([D4], " / ", "zzz")
tempo = Replace(tempo, "/", " ")
[E4] = Replace(tempo, "zzz", " / ")
....
tempo = Replace([D150], " / ", "zzz")
tempo = Replace(tempo, "/", " ")
[E150] = Replace(tempo, "zzz", " / ")

Je pense qu il ya quelqu un qui va passer par là et là simplifier en 20 lignes maxi.

En gros comme les references change de D3 à D150 il faut appliquer ça dans toutes les cellules.
Vas y avoir une histoire avec Next...:)

Klorane
 

fhoest

XLDnaute Accro
Re : "Nettoyer" des références par une macro.

Tu trouve que 450 lignes c 'est pas beaucoup? et par une macro répétée?

Je pense qu il ya quelqu un qui va passer par là et là simplifier en 20 lignes maxi.

En gros comme les references change de D3 à D150 il faut appliquer ça dans toutes les cellules.
Vas y avoir une histoire avec Next...:)

Klorane
En clair ça ne sera pas moi !
je l'aurait simplifier en moins que 20 lignes de plus de la façon que tu me réponds je ne pense pas que d'autres auront l'envie de le faire.
 

klorane

XLDnaute Occasionnel
Re : "Nettoyer" des références par une macro.

pas grave ça sera une question de temps....j'ai bien fonctionné comem ça depuis un mois suis pas à 15 jours pret lol.

Quelle susceptibilité lol et y avait rien de méchant là dedans juste une constatation qu une macro faite de 150 blocs répétés de 3 lignes ne pouvaient pas etre considérée comme "courte" et ta façon d'écrire laissait pensait que tu n'avais pas la solution (car sauf erreur j'ai bien parlé de D2 à D150 : voir le premier post)

Et pour infos j'ai pret de 250 messages postés t'es bien le premier à me faire une tel remarque et pense avoir toujours était courtois.

Bonne soirée à toi sans oublier de te remercier pour le début du travail que tu as fait. (Je ne voudrais pas qu on m 'en fasse le reproche)

Klorane
 
Dernière édition:

fhoest

XLDnaute Accro
Re : "Nettoyer" des références par une macro.

Bonsoir,
voilà pour toi le code,je ne voudrai pas passer pour quelqu'un que je ne suis pas,mais relis toi tout de même par rapport à ta réponse pour le futur,et ce même si tu as posté les 252 messages à ce jours.
-de 20 lignes.
Code:
Sub test()
Dim c As Range
Dim tempo As String
For Each c In Range("D2:D150")
tempo = Replace(c, " / ", "zzz")
tempo = Replace(tempo, "/", " ")
c.Offset(0, 1) = Replace(tempo, "zzz", " / ")
Next
End Sub
Bonne soirée également
 

Discussions similaires

Réponses
9
Affichages
508

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG