bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse) base de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par "zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop remplie
2) arrête tout bonnement de remplacer à partir de la première cellule trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right, mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
http://jacxl.free.fr
bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse) base de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par "zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop remplie
2) arrête tout bonnement de remplacer à partir de la première cellule trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right, mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
j@c
http://jacxl.free.fr
bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse) base de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par "zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop remplie
2) arrête tout bonnement de remplacer à partir de la première cellule trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right, mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
http://jacxl.free.fr
Salut ,
Je crains que ce ne soit assez long également (ça dépendra de ce qu'il y a
exactement dans tes cellules), même si passer par un tableau permet des
traitements en principe rapides :
Sub test()
For i = 1 To 30
For j = 1 To 15
x = Split(Cells(i, j).Value, "titi")
Cells(i, j).Formula = Join(x, "zaza")
Next j
Next i
End Sub
(pour 30 lignes et 15 colonnes contenant au total 1 700 000 caractères :
7s ).
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.frbonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse)
base de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par
"zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop
remplie
2) arrête tout bonnement de remplacer à partir de la première cellule
trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right,
mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots
à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
http://jacxl.free.fr
Salut j@c,
Je crains que ce ne soit assez long également (ça dépendra de ce qu'il y a
exactement dans tes cellules), même si passer par un tableau permet des
traitements en principe rapides :
Sub test()
For i = 1 To 30
For j = 1 To 15
x = Split(Cells(i, j).Value, "titi")
Cells(i, j).Formula = Join(x, "zaza")
Next j
Next i
End Sub
(pour 30 lignes et 15 colonnes contenant au total 1 700 000 caractères :
7s ).
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr
bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse)
base de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par
"zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop
remplie
2) arrête tout bonnement de remplacer à partir de la première cellule
trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right,
mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots
à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
j@c
http://jacxl.free.fr
Salut ,
Je crains que ce ne soit assez long également (ça dépendra de ce qu'il y a
exactement dans tes cellules), même si passer par un tableau permet des
traitements en principe rapides :
Sub test()
For i = 1 To 30
For j = 1 To 15
x = Split(Cells(i, j).Value, "titi")
Cells(i, j).Formula = Join(x, "zaza")
Next j
Next i
End Sub
(pour 30 lignes et 15 colonnes contenant au total 1 700 000 caractères :
7s ).
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.frbonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse)
base de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par
"zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop
remplie
2) arrête tout bonnement de remplacer à partir de la première cellule
trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right,
mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots
à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
http://jacxl.free.fr
Pour remplacer toto par tata
'--------------------------
Sub test()
Dim V As Range, Are As Range
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
For Each Are In V.Areas
t = Are
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
Are(a, b).Value = Application.Substitute(t(a, b), "toto",
"tata")
Next
Next
Next
End Sub
''----------------------------------------
"" a écrit dans le message de news:
bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse) base
de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par
"zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop remplie
2) arrête tout bonnement de remplacer à partir de la première cellule trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right, mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
http://jacxl.free.fr
Pour remplacer toto par tata
'--------------------------
Sub test()
Dim V As Range, Are As Range
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
For Each Are In V.Areas
t = Are
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
Are(a, b).Value = Application.Substitute(t(a, b), "toto",
"tata")
Next
Next
Next
End Sub
''----------------------------------------
"j@c" <bidon@bidon.fr> a écrit dans le message de news:
ejhxkklcIHA.288@TK2MSFTNGP02.phx.gbl...
bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse) base
de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par
"zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop remplie
2) arrête tout bonnement de remplacer à partir de la première cellule trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right, mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
j@c
http://jacxl.free.fr
Pour remplacer toto par tata
'--------------------------
Sub test()
Dim V As Range, Are As Range
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
For Each Are In V.Areas
t = Are
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
Are(a, b).Value = Application.Substitute(t(a, b), "toto",
"tata")
Next
Next
Next
End Sub
''----------------------------------------
"" a écrit dans le message de news:
bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse) base
de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par
"zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop remplie
2) arrête tout bonnement de remplacer à partir de la première cellule trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right, mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
http://jacxl.free.fr
Pour remplacer toto par tata
'--------------------------
Sub test()
Dim V As Range, Are As Range
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
For Each Are In V.Areas
t = Are
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
Are(a, b).Value = Application.Substitute(t(a, b), "toto",
"tata")
Next
Next
Next
End Sub
''----------------------------------------
"" a écrit dans le message de news:
bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse) base
de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par
"zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop remplie
2) arrête tout bonnement de remplacer à partir de la première cellule trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right, mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
http://jacxl.free.fr
Pour remplacer toto par tata
'--------------------------
Sub test()
Dim V As Range, Are As Range
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
For Each Are In V.Areas
t = Are
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
Are(a, b).Value = Application.Substitute(t(a, b), "toto",
"tata")
Next
Next
Next
End Sub
''----------------------------------------
"j@c" <bidon@bidon.fr> a écrit dans le message de news:
ejhxkklcIHA.288@TK2MSFTNGP02.phx.gbl...
bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse) base
de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par
"zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop remplie
2) arrête tout bonnement de remplacer à partir de la première cellule trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right, mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
j@c
http://jacxl.free.fr
Pour remplacer toto par tata
'--------------------------
Sub test()
Dim V As Range, Are As Range
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
For Each Are In V.Areas
t = Are
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
Are(a, b).Value = Application.Substitute(t(a, b), "toto",
"tata")
Next
Next
Next
End Sub
''----------------------------------------
"" a écrit dans le message de news:
bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse) base
de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par
"zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop remplie
2) arrête tout bonnement de remplacer à partir de la première cellule trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right, mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
http://jacxl.free.fr
| Pour ce qui est de substit
*** tu peux utiliser "Replace" si tu désires
Ben, c'est justement ce qui ne fonctionne pas si le texte de la cellule est
| pas tenir compte des majuscules
*** dans la procédure tu peux utiliser Lcase() ou Ucase()
C'est ce que je fais actuellement, mais comme je souhaite remplacer "toto"
| le problème vient surtout du balayage cellule par cellule qui est trop
long)
*** As-tu essayé, c'est la méthode la plus rapide que je connaisse !
Je n'arrête pas de balayer, mais quand je n'ai pas le problème des textes
'----------------------------
Sub test()
Dim V As Range
Dim a As Long, b As Long
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
t = V
Application.ScreenUpdating = False
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
V(a, b).Value = Replace(t(a, b), UCase("tata"), "TOTO")
Next
Next
End Sub
'----------------------------
"" a écrit dans le message de news:
sorry, pas tout compris
Dans mon cas, l'utilisation des Areas ne doit pas apporter grand chose,
parce que la plage de cellule est bien rectangulaire et completement
remplie.
Pour ce qui est de substitute, je ne l'avais pas retenu parce que je ne
voulais pas tenir compte des majuscules (mais le problème vient surtout du
balayage cellule par cellule qui est trop long)
En outre, je ne comprends pas pourquoi, mais je bloque sur une
"incompatibilité de type" avec le Ubound...
Merci
"MichDenis" a écrit dans le message de news:
#Pour remplacer toto par tata
'--------------------------
Sub test()
Dim V As Range, Are As Range
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
For Each Are In V.Areas
t = Are
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
Are(a, b).Value = Application.Substitute(t(a, b), "toto",
"tata")Next
Next
Next
End Sub
''----------------------------------------
"" a écrit dans le message de news:bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse)
base
dedonnées contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par
"zaza"par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop
remplie
2) arrête tout bonnement de remplacer à partir de la première cellule
trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right,
mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots
à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
http://jacxl.free.fr
| Pour ce qui est de substit
*** tu peux utiliser "Replace" si tu désires
Ben, c'est justement ce qui ne fonctionne pas si le texte de la cellule est
| pas tenir compte des majuscules
*** dans la procédure tu peux utiliser Lcase() ou Ucase()
C'est ce que je fais actuellement, mais comme je souhaite remplacer "toto"
| le problème vient surtout du balayage cellule par cellule qui est trop
long)
*** As-tu essayé, c'est la méthode la plus rapide que je connaisse !
Je n'arrête pas de balayer, mais quand je n'ai pas le problème des textes
'----------------------------
Sub test()
Dim V As Range
Dim a As Long, b As Long
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
t = V
Application.ScreenUpdating = False
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
V(a, b).Value = Replace(t(a, b), UCase("tata"), "TOTO")
Next
Next
End Sub
'----------------------------
"j@c" <bidon@bidon.fr> a écrit dans le message de news:
uEoy6IncIHA.484@TK2MSFTNGP06.phx.gbl...
sorry, pas tout compris
Dans mon cas, l'utilisation des Areas ne doit pas apporter grand chose,
parce que la plage de cellule est bien rectangulaire et completement
remplie.
Pour ce qui est de substitute, je ne l'avais pas retenu parce que je ne
voulais pas tenir compte des majuscules (mais le problème vient surtout du
balayage cellule par cellule qui est trop long)
En outre, je ne comprends pas pourquoi, mais je bloque sur une
"incompatibilité de type" avec le Ubound...
Merci
j@c
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
#fstb7mcIHA.6024@TK2MSFTNGP06.phx.gbl...
Pour remplacer toto par tata
'--------------------------
Sub test()
Dim V As Range, Are As Range
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
For Each Are In V.Areas
t = Are
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
Are(a, b).Value = Application.Substitute(t(a, b), "toto",
"tata")
Next
Next
Next
End Sub
''----------------------------------------
"j@c" <bidon@bidon.fr> a écrit dans le message de news:
ejhxkklcIHA.288@TK2MSFTNGP02.phx.gbl...
bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse)
base
de
données contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par
"zaza"
par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop
remplie
2) arrête tout bonnement de remplacer à partir de la première cellule
trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right,
mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots
à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
j@c
http://jacxl.free.fr
| Pour ce qui est de substit
*** tu peux utiliser "Replace" si tu désires
Ben, c'est justement ce qui ne fonctionne pas si le texte de la cellule est
| pas tenir compte des majuscules
*** dans la procédure tu peux utiliser Lcase() ou Ucase()
C'est ce que je fais actuellement, mais comme je souhaite remplacer "toto"
| le problème vient surtout du balayage cellule par cellule qui est trop
long)
*** As-tu essayé, c'est la méthode la plus rapide que je connaisse !
Je n'arrête pas de balayer, mais quand je n'ai pas le problème des textes
'----------------------------
Sub test()
Dim V As Range
Dim a As Long, b As Long
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
t = V
Application.ScreenUpdating = False
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
V(a, b).Value = Replace(t(a, b), UCase("tata"), "TOTO")
Next
Next
End Sub
'----------------------------
"" a écrit dans le message de news:
sorry, pas tout compris
Dans mon cas, l'utilisation des Areas ne doit pas apporter grand chose,
parce que la plage de cellule est bien rectangulaire et completement
remplie.
Pour ce qui est de substitute, je ne l'avais pas retenu parce que je ne
voulais pas tenir compte des majuscules (mais le problème vient surtout du
balayage cellule par cellule qui est trop long)
En outre, je ne comprends pas pourquoi, mais je bloque sur une
"incompatibilité de type" avec le Ubound...
Merci
"MichDenis" a écrit dans le message de news:
#Pour remplacer toto par tata
'--------------------------
Sub test()
Dim V As Range, Are As Range
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
For Each Are In V.Areas
t = Are
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
Are(a, b).Value = Application.Substitute(t(a, b), "toto",
"tata")Next
Next
Next
End Sub
''----------------------------------------
"" a écrit dans le message de news:bonjour,
j'ai, dans Excel (je sais bien, c'est pas fait pour ça) une (grosse)
base
dedonnées contenant uniquement du texte.
Mais, dans certaines cellules, de... (très) longs textes.
Jusque là, tout va bien.
Mais si malencontreusement je m'avise de vouloir remplacer "toto" par
"zaza"par VBA dans tout le texte de toute la page (avec cells.replace), je
constate que VBA
1) fait bien son boulot tant qu'il ne rencontre pas une case trop
remplie
2) arrête tout bonnement de remplacer à partir de la première cellule
trop
pleine contenant un "toto"... et ce sans aucun avertissement d'erreur !
(Si je fait la même chose avec Edition / remplacer, message d'erreur
"formule trop longue" (en fait de formule je n'ai que du texte).)
Quelqu'un a-t-il une solution à ce pb désagréable ?
J'ai bien trouvé une solution VBA bancale avec Instr, left et right,
mais
c'est beaucoup trop lent pour ce que je veux faire (j'ai plusieurs mots
à
remplacer dans 20 000 lignes...).
d'avance merci de vos avis éclairés
http://jacxl.free.fr
| C'est ce que je fais actuellement, mais comme je souhaite remplacer
"toto"
| ou "Toto" ou "TOTO" ou "tOto" ou "TOto"... par "zaza" sans modifier la
casse
| du reste du texte, et que je ne veux pas encore alourdir le code,
j'utilise
| instr+left+right
Tu utilises ceci et pour la partie sans égard à la casse, tu place dans le
haut
du module où tu copieras cette procédure la ligne de code "Option Compare
Text"
et adieu la casse !
Il faut tout leur dire à ces jeunes ... ;-))
Option Compare Text
'-------------------------------------------
Sub test()
Dim V As Range
Dim a As Long, b As Long
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
t = V
Application.ScreenUpdating = False
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
V(a, b).Value = Replace(t(a, b), "toto" ,"ZAZA")
Next
Next
End Sub
'-------------------------------------------
| C'est ce que je fais actuellement, mais comme je souhaite remplacer
"toto"
| ou "Toto" ou "TOTO" ou "tOto" ou "TOto"... par "zaza" sans modifier la
casse
| du reste du texte, et que je ne veux pas encore alourdir le code,
j'utilise
| instr+left+right
Tu utilises ceci et pour la partie sans égard à la casse, tu place dans le
haut
du module où tu copieras cette procédure la ligne de code "Option Compare
Text"
et adieu la casse !
Il faut tout leur dire à ces jeunes ... ;-))
Option Compare Text
'-------------------------------------------
Sub test()
Dim V As Range
Dim a As Long, b As Long
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
t = V
Application.ScreenUpdating = False
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
V(a, b).Value = Replace(t(a, b), "toto" ,"ZAZA")
Next
Next
End Sub
'-------------------------------------------
| C'est ce que je fais actuellement, mais comme je souhaite remplacer
"toto"
| ou "Toto" ou "TOTO" ou "tOto" ou "TOto"... par "zaza" sans modifier la
casse
| du reste du texte, et que je ne veux pas encore alourdir le code,
j'utilise
| instr+left+right
Tu utilises ceci et pour la partie sans égard à la casse, tu place dans le
haut
du module où tu copieras cette procédure la ligne de code "Option Compare
Text"
et adieu la casse !
Il faut tout leur dire à ces jeunes ... ;-))
Option Compare Text
'-------------------------------------------
Sub test()
Dim V As Range
Dim a As Long, b As Long
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
t = V
Application.ScreenUpdating = False
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
V(a, b).Value = Replace(t(a, b), "toto" ,"ZAZA")
Next
Next
End Sub
'-------------------------------------------
| C'est ce que je fais actuellement, mais comme je souhaite remplacer
"toto"
| ou "Toto" ou "TOTO" ou "tOto" ou "TOto"... par "zaza" sans modifier la
casse
| du reste du texte, et que je ne veux pas encore alourdir le code,
j'utilise
| instr+left+right
Tu utilises ceci et pour la partie sans égard à la casse, tu place dans le
haut
du module où tu copieras cette procédure la ligne de code "Option Compare
Text"
et adieu la casse !
Il faut tout leur dire à ces jeunes ... ;-))
Option Compare Text
'-------------------------------------------
Sub test()
Dim V As Range
Dim a As Long, b As Long
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
t = V
Application.ScreenUpdating = False
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
V(a, b).Value = Replace(t(a, b), "toto" ,"ZAZA")
Next
Next
End Sub
'-------------------------------------------
| C'est ce que je fais actuellement, mais comme je souhaite remplacer
"toto"
| ou "Toto" ou "TOTO" ou "tOto" ou "TOto"... par "zaza" sans modifier la
casse
| du reste du texte, et que je ne veux pas encore alourdir le code,
j'utilise
| instr+left+right
Tu utilises ceci et pour la partie sans égard à la casse, tu place dans le
haut
du module où tu copieras cette procédure la ligne de code "Option Compare
Text"
et adieu la casse !
Il faut tout leur dire à ces jeunes ... ;-))
Option Compare Text
'-------------------------------------------
Sub test()
Dim V As Range
Dim a As Long, b As Long
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
t = V
Application.ScreenUpdating = False
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
V(a, b).Value = Replace(t(a, b), "toto" ,"ZAZA")
Next
Next
End Sub
'-------------------------------------------
| C'est ce que je fais actuellement, mais comme je souhaite remplacer
"toto"
| ou "Toto" ou "TOTO" ou "tOto" ou "TOto"... par "zaza" sans modifier la
casse
| du reste du texte, et que je ne veux pas encore alourdir le code,
j'utilise
| instr+left+right
Tu utilises ceci et pour la partie sans égard à la casse, tu place dans le
haut
du module où tu copieras cette procédure la ligne de code "Option Compare
Text"
et adieu la casse !
Il faut tout leur dire à ces jeunes ... ;-))
Option Compare Text
'-------------------------------------------
Sub test()
Dim V As Range
Dim a As Long, b As Long
With Feuil1
Set V = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
End With
t = V
Application.ScreenUpdating = False
For a = 1 To UBound(t, 1)
For b = 1 To UBound(t, 2)
V(a, b).Value = Replace(t(a, b), "toto" ,"ZAZA")
Next
Next
End Sub
'-------------------------------------------