Par VBA je dois faire plusieurs Replace. Ceci dans plusieurs cellules dans =
une plage. Mais j'ai un probl=C3=A8me dans certaines situations du texte se=
change une 2=C3=A8me fois =E2=80=A6 ce qu'il ne faut pas qu'il se produise=
.
Lorsque je remplace ce texte =E2=80=A6 je le met en bleu. Y a t'il moyen de=
faire un replace =E2=80=A6 mais seulement si le texte en question n'est pa=
s bleu ou =E2=80=A6 selon un autre crit=C3=A8re que je pourrais =C3=A9tabli=
r?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Roland Miller
J'ai essayé avec le code ci-dessous. Dans ma sélection … dans une des cellules j'ai 4 fois le mot allo dont 2 déjà en bleu (couleur #5). Dans cette situation le code ci-dessous ne fonctionne pas. Ça change les 4 allo … et je souhaiterais évidemment que ça ne change pas les 2 allo en bleu. Dans ma sélection …. pour les autres cellules il n'y a que le mot allo dans chacune des cellule s et là ça fonctionne. Les allo en bleu ne se changent pas. Car le format de la cellule est automatique. Donc j'en conclu que le findFo rmat s'applique au format de la cellule et non au texte à l'intér ieur de la cellule. Y a-t'il un moyen que ça puisse s'appliquer au tex te seulement dans la cellule? ' Establish search criteria. With Application.FindFormat.Font '.Name = "Arial" '.FontStyle = "Regular" '.ColorIndex = 5 .ColorIndex = xlAutomatic '.Size = 10 End With Selection.Replace What:="allo", LookAt:=xlPart, MatchCase:=True, Repl acement:="salut", searchFormat:=True
J'ai essayé avec le code ci-dessous. Dans ma sélection … dans une des cellules j'ai 4 fois le mot allo dont 2 déjà en bleu (couleur #5). Dans cette situation le code ci-dessous ne fonctionne pas. Ça change les 4 allo … et je souhaiterais évidemment que ça ne change pas les 2 allo en bleu. Dans ma sélection …. pour les autres cellules il n'y a que le mot allo dans chacune des cellule s et là ça fonctionne. Les allo en bleu ne se changent pas.
Car le format de la cellule est automatique. Donc j'en conclu que le findFo rmat s'applique au format de la cellule et non au texte à l'intér ieur de la cellule. Y a-t'il un moyen que ça puisse s'appliquer au tex te seulement dans la cellule?
' Establish search criteria.
With Application.FindFormat.Font
'.Name = "Arial"
'.FontStyle = "Regular"
'.ColorIndex = 5
.ColorIndex = xlAutomatic
'.Size = 10
End With
J'ai essayé avec le code ci-dessous. Dans ma sélection … dans une des cellules j'ai 4 fois le mot allo dont 2 déjà en bleu (couleur #5). Dans cette situation le code ci-dessous ne fonctionne pas. Ça change les 4 allo … et je souhaiterais évidemment que ça ne change pas les 2 allo en bleu. Dans ma sélection …. pour les autres cellules il n'y a que le mot allo dans chacune des cellule s et là ça fonctionne. Les allo en bleu ne se changent pas. Car le format de la cellule est automatique. Donc j'en conclu que le findFo rmat s'applique au format de la cellule et non au texte à l'intér ieur de la cellule. Y a-t'il un moyen que ça puisse s'appliquer au tex te seulement dans la cellule? ' Establish search criteria. With Application.FindFormat.Font '.Name = "Arial" '.FontStyle = "Regular" '.ColorIndex = 5 .ColorIndex = xlAutomatic '.Size = 10 End With Selection.Replace What:="allo", LookAt:=xlPart, MatchCase:=True, Repl acement:="salut", searchFormat:=True
MichD
Le 11/06/19 à 09:11, Roland Miller a écrit :
Bonjour, Par VBA je dois faire plusieurs Replace. Ceci dans plusieurs cellules dans une plage. Mais j'ai un problème dans certaines situations du texte se change une 2ème fois … ce qu'il ne faut pas qu'il se produise. Lorsque je remplace ce texte … je le met en bleu. Y a t'il moyen de faire un replace … mais seulement si le texte en question n'est pas bleu ou … selon un autre critère que je pourrais établir? Merci à l'avance.
Bonjour, Essaie comme ceci : Adapte le nom de la feuille "Feuil" et la valeur des 2 expressions, celle à chercher et celle de remplacement, et la plage de cellules où se fera la recherche. '---------------------------------- Sub test() Dim Rg As Range, Trouve As Range, Adr As String Dim ExpressionR As String, ExpressionC As String Dim A As Long, B As Long ExpressionC = "Bozo" 'expression à chercher ExpressionR = "MichD" 'Expression de remplacement With Worksheets("Feuil1") Set Rg = .Range("A1:A10") End With With Rg Set Trouve = .Find(what:=ExpressionC, LookIn:=xlValues, LookAt:=xlPart) If Not Trouve Is Nothing Then Adr = Trouve.Address Do Trouve.Replace ExpressionC, ExpressionR A = Application.Find(ExpressionR, Trouve.Text, 1) B = Len(ExpressionR) Trouve.Characters(A, B + 1).Font.Color = vbBlue Set Trouve = .Find(what:=ExpressionC, After:=Trouve, LookIn:=xlValues, LookAt:=xlPart) Loop Until Trouve Is Nothing End If End With End Sub '----------------------------------
Le 11/06/19 à 09:11, Roland Miller a écrit :
Bonjour,
Par VBA je dois faire plusieurs Replace. Ceci dans plusieurs cellules dans une plage. Mais j'ai un problème dans certaines situations du texte se change une 2ème fois … ce qu'il ne faut pas qu'il se produise.
Lorsque je remplace ce texte … je le met en bleu. Y a t'il moyen de faire un replace … mais seulement si le texte en question n'est pas bleu ou … selon un autre critère que je pourrais établir?
Merci à l'avance.
Bonjour,
Essaie comme ceci :
Adapte le nom de la feuille "Feuil" et la valeur des 2 expressions,
celle à chercher et celle de remplacement, et la plage de cellules où se
fera la recherche.
'----------------------------------
Sub test()
Dim Rg As Range, Trouve As Range, Adr As String
Dim ExpressionR As String, ExpressionC As String
Dim A As Long, B As Long
ExpressionC = "Bozo" 'expression à chercher
ExpressionR = "MichD" 'Expression de remplacement
With Worksheets("Feuil1")
Set Rg = .Range("A1:A10")
End With
With Rg
Set Trouve = .Find(what:=ExpressionC, LookIn:=xlValues, LookAt:=xlPart)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
Trouve.Replace ExpressionC, ExpressionR
A = Application.Find(ExpressionR, Trouve.Text, 1)
B = Len(ExpressionR)
Trouve.Characters(A, B + 1).Font.Color = vbBlue
Set Trouve = .Find(what:=ExpressionC, After:=Trouve,
LookIn:=xlValues, LookAt:=xlPart)
Loop Until Trouve Is Nothing
End If
End With
Bonjour, Par VBA je dois faire plusieurs Replace. Ceci dans plusieurs cellules dans une plage. Mais j'ai un problème dans certaines situations du texte se change une 2ème fois … ce qu'il ne faut pas qu'il se produise. Lorsque je remplace ce texte … je le met en bleu. Y a t'il moyen de faire un replace … mais seulement si le texte en question n'est pas bleu ou … selon un autre critère que je pourrais établir? Merci à l'avance.
Bonjour, Essaie comme ceci : Adapte le nom de la feuille "Feuil" et la valeur des 2 expressions, celle à chercher et celle de remplacement, et la plage de cellules où se fera la recherche. '---------------------------------- Sub test() Dim Rg As Range, Trouve As Range, Adr As String Dim ExpressionR As String, ExpressionC As String Dim A As Long, B As Long ExpressionC = "Bozo" 'expression à chercher ExpressionR = "MichD" 'Expression de remplacement With Worksheets("Feuil1") Set Rg = .Range("A1:A10") End With With Rg Set Trouve = .Find(what:=ExpressionC, LookIn:=xlValues, LookAt:=xlPart) If Not Trouve Is Nothing Then Adr = Trouve.Address Do Trouve.Replace ExpressionC, ExpressionR A = Application.Find(ExpressionR, Trouve.Text, 1) B = Len(ExpressionR) Trouve.Characters(A, B + 1).Font.Color = vbBlue Set Trouve = .Find(what:=ExpressionC, After:=Trouve, LookIn:=xlValues, LookAt:=xlPart) Loop Until Trouve Is Nothing End If End With End Sub '----------------------------------
MichD
Le 11/06/19 à 10:46, MichD a écrit :
Le 11/06/19 à 09:11, Roland Miller a écrit :
Bonjour, Par VBA je dois faire plusieurs Replace. Ceci dans plusieurs cellules dans une plage. Mais j'ai un problème dans certaines situations du texte se change une 2ème fois … ce qu'il ne faut pas qu'il se produise. Lorsque je remplace ce texte … je le met en bleu. Y a t'il moyen de faire un replace … mais seulement si le texte en question n'est pas bleu ou … selon un autre critère que je pourrais établir? Merci à l'avance.
Bonjour, Essaie comme ceci : Adapte le nom de la feuille "Feuil" et la valeur des 2 expressions, celle à chercher et celle de remplacement, et la plage de cellules où se fera la recherche. '---------------------------------- Sub test() Dim Rg As Range, Trouve As Range, Adr As String Dim ExpressionR As String, ExpressionC As String Dim A As Long, B As Long ExpressionC = "Bozo" 'expression à chercher ExpressionR = "MichD" 'Expression de remplacement With Worksheets("Feuil1") Set Rg = .Range("A1:A10") End With With Rg Set Trouve = .Find(what:=ExpressionC, LookIn:=xlValues, LookAt:=xlPart) If Not Trouve Is Nothing Then Adr = Trouve.Address Do Trouve.Replace ExpressionC, ExpressionR A = Application.Find(ExpressionR, Trouve.Text, 1) B = Len(ExpressionR) Trouve.Characters(A, B + 1).Font.Color = vbBlue Set Trouve = .Find(what:=ExpressionC, After:=Trouve, LookIn:=xlValues, LookAt:=xlPart) Loop Until Trouve Is Nothing End If End With End Sub '----------------------------------
Si tu préfères, tu peux remplacer cette ligne de code (le deuxième Set Trouve de la sub....) Set Trouve = .Find(what:=ExpressionC, After:=Trouve, LookIn:=xlValues, LookAt:=xlPart) Par Set Trouve = .FindNext(Trouve) MichD
Le 11/06/19 à 10:46, MichD a écrit :
Le 11/06/19 à 09:11, Roland Miller a écrit :
Bonjour,
Par VBA je dois faire plusieurs Replace. Ceci dans plusieurs cellules
dans une plage. Mais j'ai un problème dans certaines situations du
texte se change une 2ème fois … ce qu'il ne faut pas qu'il se produise.
Lorsque je remplace ce texte … je le met en bleu. Y a t'il moyen de
faire un replace … mais seulement si le texte en question n'est pas
bleu ou … selon un autre critère que je pourrais établir?
Merci à l'avance.
Bonjour,
Essaie comme ceci :
Adapte le nom de la feuille "Feuil" et la valeur des 2 expressions,
celle à chercher et celle de remplacement, et la plage de cellules où se
fera la recherche.
'----------------------------------
Sub test()
Dim Rg As Range, Trouve As Range, Adr As String
Dim ExpressionR As String, ExpressionC As String
Dim A As Long, B As Long
ExpressionC = "Bozo" 'expression à chercher
ExpressionR = "MichD" 'Expression de remplacement
With Worksheets("Feuil1")
Set Rg = .Range("A1:A10")
End With
With Rg
Set Trouve = .Find(what:=ExpressionC, LookIn:=xlValues,
LookAt:=xlPart)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
Trouve.Replace ExpressionC, ExpressionR
A = Application.Find(ExpressionR, Trouve.Text, 1)
B = Len(ExpressionR)
Trouve.Characters(A, B + 1).Font.Color = vbBlue
Set Trouve = .Find(what:=ExpressionC, After:=Trouve,
LookIn:=xlValues, LookAt:=xlPart)
Loop Until Trouve Is Nothing
End If
End With
End Sub
'----------------------------------
Si tu préfères, tu peux remplacer cette ligne de code
(le deuxième Set Trouve de la sub....)
Set Trouve = .Find(what:=ExpressionC, After:=Trouve,
LookIn:=xlValues, LookAt:=xlPart)
Bonjour, Par VBA je dois faire plusieurs Replace. Ceci dans plusieurs cellules dans une plage. Mais j'ai un problème dans certaines situations du texte se change une 2ème fois … ce qu'il ne faut pas qu'il se produise. Lorsque je remplace ce texte … je le met en bleu. Y a t'il moyen de faire un replace … mais seulement si le texte en question n'est pas bleu ou … selon un autre critère que je pourrais établir? Merci à l'avance.
Bonjour, Essaie comme ceci : Adapte le nom de la feuille "Feuil" et la valeur des 2 expressions, celle à chercher et celle de remplacement, et la plage de cellules où se fera la recherche. '---------------------------------- Sub test() Dim Rg As Range, Trouve As Range, Adr As String Dim ExpressionR As String, ExpressionC As String Dim A As Long, B As Long ExpressionC = "Bozo" 'expression à chercher ExpressionR = "MichD" 'Expression de remplacement With Worksheets("Feuil1") Set Rg = .Range("A1:A10") End With With Rg Set Trouve = .Find(what:=ExpressionC, LookIn:=xlValues, LookAt:=xlPart) If Not Trouve Is Nothing Then Adr = Trouve.Address Do Trouve.Replace ExpressionC, ExpressionR A = Application.Find(ExpressionR, Trouve.Text, 1) B = Len(ExpressionR) Trouve.Characters(A, B + 1).Font.Color = vbBlue Set Trouve = .Find(what:=ExpressionC, After:=Trouve, LookIn:=xlValues, LookAt:=xlPart) Loop Until Trouve Is Nothing End If End With End Sub '----------------------------------
Si tu préfères, tu peux remplacer cette ligne de code (le deuxième Set Trouve de la sub....) Set Trouve = .Find(what:=ExpressionC, After:=Trouve, LookIn:=xlValues, LookAt:=xlPart) Par Set Trouve = .FindNext(Trouve) MichD