Fonction remplacer

Bonsoir le Forum,

J' ai dans un tableau :

Colonne A

Segment : 111200

Segment : 111300

Segment : 111400

Segment : 111500

Colonne B

Libellé segment : 1112 smiley

Libellé segment : 1113 code

Libellé segment : 1114 interf

Libellé segment : 1115 fourchette

etc...

Je souhaiterai obtenir :

Colonne A

111200 : Smiley

111300 : Code

111400 : Interf

111500 : Fourchette

et rien en colonne B

J'utilise :

Columns("A:A").Select

Selection.Replace What:="Segment : 111200", Replacement:= _

111200 : Smiley, LookAt:=xlPart, SearchOrder:=xlByRows, _

MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Sauf que j' ai plusieurs fois cette modif ( environ une centaine) à apporter et cela commence à être lourd.

Auriez-vous une idée ?

Merci

Bonjour

A voir avec cette macro

Option Explicit

Sub Remplace()
Dim J As Long

  Application.ScreenUpdating = False
  If Range("B1") = "" Then Exit Sub
  For J = 1 To Range("A" & Rows.Count).End(xlUp).Row
    Range("A" & J) = Mid(Range("A" & J), InStr(1, Range("A" & J), ": ") + 2) & _
                  " : " & Application.Proper(Mid(Range("B" & J), InStrRev(Range("B" & J), " ") + 1))
  Next J
  Columns("B").ClearContents
End Sub

Bonsoir Banzai64, le forum,

Merci pour ta macro, c' est presque ça.

Pour être plus claire, je te joint un tableau ( un peu modifié) qui sera plus parlant que de l' écrit.

La colonne A reste et la B devient E.

En fait, c' est comme si on utilise la fonction "STXT" pour mettre un titre plus exact. J' ai indiqué en dessous le résultat souhaité.

Merci de ton aide.

13remplacement.zip (7.83 Ko)

Bonjour

Essayes cette macro

Option Explicit

Sub Remplace()
Dim Cel As Range

  Set Cel = Columns("E:H").Find(what:="Libellé Segment", LookIn:=xlValues, lookat:=xlPart)
  If Not Cel Is Nothing Then
    Do
      Range("A" & Cel.Row) = Mid(Range("A" & Cel.Row), InStr(1, Range("A" & Cel.Row), ": ") + 2) & _
                    " : " & Application.Proper(Mid(Range("E" & Cel.Row), InStrRev(Range("E" & Cel.Row), " ") + 1))
      Cel = ""
      Set Cel = Columns("E:H").FindNext(Cel)
    Loop While Not Cel Is Nothing
  End If
End Sub

Bonsoir Banzai,

Merci pour cette macro qui tourne à merveille sur mon tableau.

Pourrais tu m' expliquer ( ligne par ligne, si possible) ta macro car j' essai de la comprendre.

Je souhaiterai l' appliquer à un autre fichier qui lui comporte non pas un mot en libellé en colonne E mais plusieurs mots :

Libellé Segment : 1112 smiley à affecter

Libellé Segment : 1113 code à tester

Libellé Segment : 1114 interf non attribué

etc...

Merci et bonne soirée.

Bonsoir

C'est très simple

  • Recherche dans les colonnes E à H (à cause des cellules fusionnées) la chaîne "Libellé Segment"
  • Reconstruction de la cellule A
      en prenant un morceau par ici Mid(Range("A" & Cel.Row), InStr(1, Range("A" & Cel.Row), ": ") + 2) (la partie après les : )
    1. un morceau par là Mid(Range("E" & Cel.Row), InStrRev(Range("E" & Cel.Row), " ") + 1) (la partie après la dernière espace)
  • La 1ère lettre de cette partie en majuscule Application.Proper
  • Efface la cellule contenant le mot "Libellé Segment" : Cel = ""
  • Vérification si on trouve encore "Libellé Segment"
  • Si oui on recommence en B

Pour ton autre fichier si tu as des difficultés, repasses par ici avec lui

Re,

Merci pour cette explication.

J' ai donc modifié cette ligne pour l' aménager sur mon autre tableau :

Application.Proper(Mid(Range("E" & Cel.Row), InStrRev(Range("E" & Cel.Row), " ") + 1))

Ce qui donne :

Application.Proper(Mid(Range("E" & Cel.Row), InStrRev(Range("E" & Cel.Row), ": ") + 6))

Et ça marche nickel chrome.

Encore merci, ça me fait un max de ligne en moins

Rechercher des sujets similaires à "fonction remplacer"