Bonjour Patrick,
Suppose que dans ton classeur que tu as un nom (plage nommée) "Toto" et
que tu veuilles remplacer ce nom "toto" par "titi"
Voici un petit exemple de code :
'-------------------------------------
Sub test()
Dim Rg As Range, X As String
Dim Sh As Worksheet
On Error Resume Next
Range("Toto").Name = "Titi"
ThisWorkbook.Names("Toto").Delete
For Each Sh In ThisWorkbook.Worksheets
With Sh.Cells
Set Rg = .Find("toto", LookIn:=xlFormulas, lookat:=xlPart)
If Not Rg Is Nothing Then
adr = Rg.Address
Do
X = UCase(Rg.Formula)
X = Application.Substitute(X, UCase("toto"), "titi")
Rg.Formula = X
Set Rg = .FindNext(Rg)
Loop Until Rg Is Nothing Or Rg.Address <> adr
End If
End With
Next
End Sub
'-------------------------------------
"Patrick" a écrit dans le message de groupe de
discussion :
Bonjour,
J'aimerais créer une macro qui permettrait de modifier un nom de plage de
cellules et, surtout, qui permette d'appliquer ce changement dans toutes les
cellules qui font référence à ce nom.
Pour la 1e partie, je vois très comment faire mais pour la suite je ne vois
pas trop comment faire ? Avez-vous une idée ?
Merci pour votre aide.
--
Patrick
Bonjour Patrick,
Suppose que dans ton classeur que tu as un nom (plage nommée) "Toto" et
que tu veuilles remplacer ce nom "toto" par "titi"
Voici un petit exemple de code :
'-------------------------------------
Sub test()
Dim Rg As Range, X As String
Dim Sh As Worksheet
On Error Resume Next
Range("Toto").Name = "Titi"
ThisWorkbook.Names("Toto").Delete
For Each Sh In ThisWorkbook.Worksheets
With Sh.Cells
Set Rg = .Find("toto", LookIn:=xlFormulas, lookat:=xlPart)
If Not Rg Is Nothing Then
adr = Rg.Address
Do
X = UCase(Rg.Formula)
X = Application.Substitute(X, UCase("toto"), "titi")
Rg.Formula = X
Set Rg = .FindNext(Rg)
Loop Until Rg Is Nothing Or Rg.Address <> adr
End If
End With
Next
End Sub
'-------------------------------------
"Patrick" <no.spam.patrick.fredin@iquebec.com> a écrit dans le message de groupe de
discussion : 425DA7DA-9EBA-4C3A-8DB5-8D7BED7198B6@microsoft.com...
Bonjour,
J'aimerais créer une macro qui permettrait de modifier un nom de plage de
cellules et, surtout, qui permette d'appliquer ce changement dans toutes les
cellules qui font référence à ce nom.
Pour la 1e partie, je vois très comment faire mais pour la suite je ne vois
pas trop comment faire ? Avez-vous une idée ?
Merci pour votre aide.
--
Patrick
Bonjour Patrick,
Suppose que dans ton classeur que tu as un nom (plage nommée) "Toto" et
que tu veuilles remplacer ce nom "toto" par "titi"
Voici un petit exemple de code :
'-------------------------------------
Sub test()
Dim Rg As Range, X As String
Dim Sh As Worksheet
On Error Resume Next
Range("Toto").Name = "Titi"
ThisWorkbook.Names("Toto").Delete
For Each Sh In ThisWorkbook.Worksheets
With Sh.Cells
Set Rg = .Find("toto", LookIn:=xlFormulas, lookat:=xlPart)
If Not Rg Is Nothing Then
adr = Rg.Address
Do
X = UCase(Rg.Formula)
X = Application.Substitute(X, UCase("toto"), "titi")
Rg.Formula = X
Set Rg = .FindNext(Rg)
Loop Until Rg Is Nothing Or Rg.Address <> adr
End If
End With
Next
End Sub
'-------------------------------------
"Patrick" a écrit dans le message de groupe de
discussion :
Bonjour,
J'aimerais créer une macro qui permettrait de modifier un nom de plage de
cellules et, surtout, qui permette d'appliquer ce changement dans toutes les
cellules qui font référence à ce nom.
Pour la 1e partie, je vois très comment faire mais pour la suite je ne vois
pas trop comment faire ? Avez-vous une idée ?
Merci pour votre aide.
--
Patrick
Bonjour Patrick,
Suppose que dans ton classeur que tu as un nom (plage nommée) "Toto" et
que tu veuilles remplacer ce nom "toto" par "titi"
Voici un petit exemple de code :
'-------------------------------------
Sub test()
Dim Rg As Range, X As String
Dim Sh As Worksheet
On Error Resume Next
Range("Toto").Name = "Titi"
ThisWorkbook.Names("Toto").Delete
For Each Sh In ThisWorkbook.Worksheets
With Sh.Cells
Set Rg = .Find("toto", LookIn:=xlFormulas, lookat:=xlPart)
If Not Rg Is Nothing Then
adr = Rg.Address
Do
X = UCase(Rg.Formula)
X = Application.Substitute(X, UCase("toto"), "titi")
Rg.Formula = X
Set Rg = .FindNext(Rg)
Loop Until Rg Is Nothing Or Rg.Address <> adr
End If
End With
Next
End Sub
'-------------------------------------
"Patrick" a écrit dans le message de groupe de
discussion :
Bonjour,
J'aimerais créer une macro qui permettrait de modifier un nom de plage de
cellules et, surtout, qui permette d'appliquer ce changement dans toutes les
cellules qui font référence à ce nom.
Pour la 1e partie, je vois très comment faire mais pour la suite je ne vois
pas trop comment faire ? Avez-vous une idée ?
Merci pour votre aide.
--
Patrick
Bonjour Patrick,
Suppose que dans ton classeur que tu as un nom (plage nommée) "Toto" et
que tu veuilles remplacer ce nom "toto" par "titi"
Voici un petit exemple de code :
'-------------------------------------
Sub test()
Dim Rg As Range, X As String
Dim Sh As Worksheet
On Error Resume Next
Range("Toto").Name = "Titi"
ThisWorkbook.Names("Toto").Delete
For Each Sh In ThisWorkbook.Worksheets
With Sh.Cells
Set Rg = .Find("toto", LookIn:=xlFormulas, lookat:=xlPart)
If Not Rg Is Nothing Then
adr = Rg.Address
Do
X = UCase(Rg.Formula)
X = Application.Substitute(X, UCase("toto"), "titi")
Rg.Formula = X
Set Rg = .FindNext(Rg)
Loop Until Rg Is Nothing Or Rg.Address <> adr
End If
End With
Next
End Sub
'-------------------------------------
"Patrick" <no.spam.patrick.fredin@iquebec.com> a écrit dans le message de groupe de
discussion : 425DA7DA-9EBA-4C3A-8DB5-8D7BED7198B6@microsoft.com...
Bonjour,
J'aimerais créer une macro qui permettrait de modifier un nom de plage de
cellules et, surtout, qui permette d'appliquer ce changement dans toutes les
cellules qui font référence à ce nom.
Pour la 1e partie, je vois très comment faire mais pour la suite je ne vois
pas trop comment faire ? Avez-vous une idée ?
Merci pour votre aide.
--
Patrick
Bonjour Patrick,
Suppose que dans ton classeur que tu as un nom (plage nommée) "Toto" et
que tu veuilles remplacer ce nom "toto" par "titi"
Voici un petit exemple de code :
'-------------------------------------
Sub test()
Dim Rg As Range, X As String
Dim Sh As Worksheet
On Error Resume Next
Range("Toto").Name = "Titi"
ThisWorkbook.Names("Toto").Delete
For Each Sh In ThisWorkbook.Worksheets
With Sh.Cells
Set Rg = .Find("toto", LookIn:=xlFormulas, lookat:=xlPart)
If Not Rg Is Nothing Then
adr = Rg.Address
Do
X = UCase(Rg.Formula)
X = Application.Substitute(X, UCase("toto"), "titi")
Rg.Formula = X
Set Rg = .FindNext(Rg)
Loop Until Rg Is Nothing Or Rg.Address <> adr
End If
End With
Next
End Sub
'-------------------------------------
"Patrick" a écrit dans le message de groupe de
discussion :
Bonjour,
J'aimerais créer une macro qui permettrait de modifier un nom de plage de
cellules et, surtout, qui permette d'appliquer ce changement dans toutes les
cellules qui font référence à ce nom.
Pour la 1e partie, je vois très comment faire mais pour la suite je ne vois
pas trop comment faire ? Avez-vous une idée ?
Merci pour votre aide.
--
Patrick
Si tu veux remplacer le "NOM" toto1 par le nom "denis"
il y a ce qui suit :
Si tu as une collection de nom "toto", "toto1", "toto2"....
pour remplacer le premier nom "toto", il va falloir modifier
la procédure afin de s'assurer d'isoler correctement le bon
nom.
'---------------------------------------
Sub test()
Dim Rg As Range, X As String, Adr As String
Dim Sh As Worksheet, Plage As String
On Error Resume Next
'Récupération de l'adresse de la plage
'représentée par "toto1"
X = ThisWorkbook.Names("toto1").RefersTo
Plage = Right(X, Len(X) - 1)
'Attribution du nouveau nom à la plage
Range(Adr).Name = "denis"
'Suppression du NOM "Toto"
ThisWorkbook.Names("Toto1").Delete
'Boucle dans toutes les feuilles du classeur pour
'faire la substitution du nom "toto" par l'adresse
'de la plage que représentait "toto"
For Each Sh In ThisWorkbook.Worksheets
With Sh.Cells
Set Rg = .Find("toto1", LookIn:=xlFormulas, lookat:=xlPart)
If Not Rg Is Nothing Then
Adr = Rg.Address
Do
X = UCase(Rg.Formula)
y = Rg.NumberFormat
X = Application.Substitute(X, UCase("toto1"), Plage)
Rg.NumberFormat = y
Rg.Formula = X
Set Rg = .FindNext(Rg)
Loop Until Rg Is Nothing Or Rg.Address <> Adr
End If
' Appliquer le nouveau nom à l'ensemble de la feuille
Sh.Cells.ApplyNames Names:="denis", IgnoreRelativeAbsolute:=True, _
UseRowColumnNames:=True, OmitColumn:=True, OmitRow:=True, Order:=1, _
AppendLast:úlse
End With
Next
End Sub
'---------------------------------------
"Patrick" a écrit dans le message de groupe de
discussion :
Bonjour,
Merci pour ce code. Mais qu'arrive-t-il si le classeur contient d'autres
noms contenant "toto" ("toto1", "toto2", ...). Est-ce que le code qui
remplace "toto" par "titi" dans les formules ne risque pas de modifier celles
où il y a "toto1" en mettant "titi1", alors que "titi1" n'existe pas ?
Merci.
--
Patrick
"michdenis" wrote:
> Bonjour Patrick,
>
> Suppose que dans ton classeur que tu as un nom (plage nommée) "Toto" et
> que tu veuilles remplacer ce nom "toto" par "titi"
>
> Voici un petit exemple de code :
> '-------------------------------------
> Sub test()
> Dim Rg As Range, X As String
> Dim Sh As Worksheet
> On Error Resume Next
> Range("Toto").Name = "Titi"
> ThisWorkbook.Names("Toto").Delete
> For Each Sh In ThisWorkbook.Worksheets
> With Sh.Cells
> Set Rg = .Find("toto", LookIn:=xlFormulas, lookat:=xlPart)
> If Not Rg Is Nothing Then
> adr = Rg.Address
> Do
> X = UCase(Rg.Formula)
> X = Application.Substitute(X, UCase("toto"), "titi")
> Rg.Formula = X
> Set Rg = .FindNext(Rg)
> Loop Until Rg Is Nothing Or Rg.Address <> adr
> End If
> End With
> Next
> End Sub
> '-------------------------------------
>
>
>
> "Patrick" a écrit dans le message de groupe de
> discussion :
> Bonjour,
>
> J'aimerais créer une macro qui permettrait de modifier un nom de plage de
> cellules et, surtout, qui permette d'appliquer ce changement dans toutes les
> cellules qui font référence à ce nom.
>
> Pour la 1e partie, je vois très comment faire mais pour la suite je ne vois
> pas trop comment faire ? Avez-vous une idée ?
>
> Merci pour votre aide.
>
> --
> Patrick
>
Si tu veux remplacer le "NOM" toto1 par le nom "denis"
il y a ce qui suit :
Si tu as une collection de nom "toto", "toto1", "toto2"....
pour remplacer le premier nom "toto", il va falloir modifier
la procédure afin de s'assurer d'isoler correctement le bon
nom.
'---------------------------------------
Sub test()
Dim Rg As Range, X As String, Adr As String
Dim Sh As Worksheet, Plage As String
On Error Resume Next
'Récupération de l'adresse de la plage
'représentée par "toto1"
X = ThisWorkbook.Names("toto1").RefersTo
Plage = Right(X, Len(X) - 1)
'Attribution du nouveau nom à la plage
Range(Adr).Name = "denis"
'Suppression du NOM "Toto"
ThisWorkbook.Names("Toto1").Delete
'Boucle dans toutes les feuilles du classeur pour
'faire la substitution du nom "toto" par l'adresse
'de la plage que représentait "toto"
For Each Sh In ThisWorkbook.Worksheets
With Sh.Cells
Set Rg = .Find("toto1", LookIn:=xlFormulas, lookat:=xlPart)
If Not Rg Is Nothing Then
Adr = Rg.Address
Do
X = UCase(Rg.Formula)
y = Rg.NumberFormat
X = Application.Substitute(X, UCase("toto1"), Plage)
Rg.NumberFormat = y
Rg.Formula = X
Set Rg = .FindNext(Rg)
Loop Until Rg Is Nothing Or Rg.Address <> Adr
End If
' Appliquer le nouveau nom à l'ensemble de la feuille
Sh.Cells.ApplyNames Names:="denis", IgnoreRelativeAbsolute:=True, _
UseRowColumnNames:=True, OmitColumn:=True, OmitRow:=True, Order:=1, _
AppendLast:úlse
End With
Next
End Sub
'---------------------------------------
"Patrick" <no.spam.patrick.fredin@iquebec.com> a écrit dans le message de groupe de
discussion : 726FF570-0260-4413-8D82-35D1104E19A1@microsoft.com...
Bonjour,
Merci pour ce code. Mais qu'arrive-t-il si le classeur contient d'autres
noms contenant "toto" ("toto1", "toto2", ...). Est-ce que le code qui
remplace "toto" par "titi" dans les formules ne risque pas de modifier celles
où il y a "toto1" en mettant "titi1", alors que "titi1" n'existe pas ?
Merci.
--
Patrick
"michdenis" wrote:
> Bonjour Patrick,
>
> Suppose que dans ton classeur que tu as un nom (plage nommée) "Toto" et
> que tu veuilles remplacer ce nom "toto" par "titi"
>
> Voici un petit exemple de code :
> '-------------------------------------
> Sub test()
> Dim Rg As Range, X As String
> Dim Sh As Worksheet
> On Error Resume Next
> Range("Toto").Name = "Titi"
> ThisWorkbook.Names("Toto").Delete
> For Each Sh In ThisWorkbook.Worksheets
> With Sh.Cells
> Set Rg = .Find("toto", LookIn:=xlFormulas, lookat:=xlPart)
> If Not Rg Is Nothing Then
> adr = Rg.Address
> Do
> X = UCase(Rg.Formula)
> X = Application.Substitute(X, UCase("toto"), "titi")
> Rg.Formula = X
> Set Rg = .FindNext(Rg)
> Loop Until Rg Is Nothing Or Rg.Address <> adr
> End If
> End With
> Next
> End Sub
> '-------------------------------------
>
>
>
> "Patrick" <no.spam.patrick.fredin@iquebec.com> a écrit dans le message de groupe de
> discussion : 425DA7DA-9EBA-4C3A-8DB5-8D7BED7198B6@microsoft.com...
> Bonjour,
>
> J'aimerais créer une macro qui permettrait de modifier un nom de plage de
> cellules et, surtout, qui permette d'appliquer ce changement dans toutes les
> cellules qui font référence à ce nom.
>
> Pour la 1e partie, je vois très comment faire mais pour la suite je ne vois
> pas trop comment faire ? Avez-vous une idée ?
>
> Merci pour votre aide.
>
> --
> Patrick
>
Si tu veux remplacer le "NOM" toto1 par le nom "denis"
il y a ce qui suit :
Si tu as une collection de nom "toto", "toto1", "toto2"....
pour remplacer le premier nom "toto", il va falloir modifier
la procédure afin de s'assurer d'isoler correctement le bon
nom.
'---------------------------------------
Sub test()
Dim Rg As Range, X As String, Adr As String
Dim Sh As Worksheet, Plage As String
On Error Resume Next
'Récupération de l'adresse de la plage
'représentée par "toto1"
X = ThisWorkbook.Names("toto1").RefersTo
Plage = Right(X, Len(X) - 1)
'Attribution du nouveau nom à la plage
Range(Adr).Name = "denis"
'Suppression du NOM "Toto"
ThisWorkbook.Names("Toto1").Delete
'Boucle dans toutes les feuilles du classeur pour
'faire la substitution du nom "toto" par l'adresse
'de la plage que représentait "toto"
For Each Sh In ThisWorkbook.Worksheets
With Sh.Cells
Set Rg = .Find("toto1", LookIn:=xlFormulas, lookat:=xlPart)
If Not Rg Is Nothing Then
Adr = Rg.Address
Do
X = UCase(Rg.Formula)
y = Rg.NumberFormat
X = Application.Substitute(X, UCase("toto1"), Plage)
Rg.NumberFormat = y
Rg.Formula = X
Set Rg = .FindNext(Rg)
Loop Until Rg Is Nothing Or Rg.Address <> Adr
End If
' Appliquer le nouveau nom à l'ensemble de la feuille
Sh.Cells.ApplyNames Names:="denis", IgnoreRelativeAbsolute:=True, _
UseRowColumnNames:=True, OmitColumn:=True, OmitRow:=True, Order:=1, _
AppendLast:úlse
End With
Next
End Sub
'---------------------------------------
"Patrick" a écrit dans le message de groupe de
discussion :
Bonjour,
Merci pour ce code. Mais qu'arrive-t-il si le classeur contient d'autres
noms contenant "toto" ("toto1", "toto2", ...). Est-ce que le code qui
remplace "toto" par "titi" dans les formules ne risque pas de modifier celles
où il y a "toto1" en mettant "titi1", alors que "titi1" n'existe pas ?
Merci.
--
Patrick
"michdenis" wrote:
> Bonjour Patrick,
>
> Suppose que dans ton classeur que tu as un nom (plage nommée) "Toto" et
> que tu veuilles remplacer ce nom "toto" par "titi"
>
> Voici un petit exemple de code :
> '-------------------------------------
> Sub test()
> Dim Rg As Range, X As String
> Dim Sh As Worksheet
> On Error Resume Next
> Range("Toto").Name = "Titi"
> ThisWorkbook.Names("Toto").Delete
> For Each Sh In ThisWorkbook.Worksheets
> With Sh.Cells
> Set Rg = .Find("toto", LookIn:=xlFormulas, lookat:=xlPart)
> If Not Rg Is Nothing Then
> adr = Rg.Address
> Do
> X = UCase(Rg.Formula)
> X = Application.Substitute(X, UCase("toto"), "titi")
> Rg.Formula = X
> Set Rg = .FindNext(Rg)
> Loop Until Rg Is Nothing Or Rg.Address <> adr
> End If
> End With
> Next
> End Sub
> '-------------------------------------
>
>
>
> "Patrick" a écrit dans le message de groupe de
> discussion :
> Bonjour,
>
> J'aimerais créer une macro qui permettrait de modifier un nom de plage de
> cellules et, surtout, qui permette d'appliquer ce changement dans toutes les
> cellules qui font référence à ce nom.
>
> Pour la 1e partie, je vois très comment faire mais pour la suite je ne vois
> pas trop comment faire ? Avez-vous une idée ?
>
> Merci pour votre aide.
>
> --
> Patrick
>
Si tu veux remplacer le "NOM" toto1 par le nom "denis"
il y a ce qui suit :
Si tu as une collection de nom "toto", "toto1", "toto2"....
pour remplacer le premier nom "toto", il va falloir modifier
la procédure afin de s'assurer d'isoler correctement le bon
nom.
'---------------------------------------
Sub test()
Dim Rg As Range, X As String, Adr As String
Dim Sh As Worksheet, Plage As String
On Error Resume Next
'Récupération de l'adresse de la plage
'représentée par "toto1"
X = ThisWorkbook.Names("toto1").RefersTo
Plage = Right(X, Len(X) - 1)
'Attribution du nouveau nom à la plage
Range(Adr).Name = "denis"
'Suppression du NOM "Toto"
ThisWorkbook.Names("Toto1").Delete
'Boucle dans toutes les feuilles du classeur pour
'faire la substitution du nom "toto" par l'adresse
'de la plage que représentait "toto"
For Each Sh In ThisWorkbook.Worksheets
With Sh.Cells
Set Rg = .Find("toto1", LookIn:=xlFormulas, lookat:=xlPart)
If Not Rg Is Nothing Then
Adr = Rg.Address
Do
X = UCase(Rg.Formula)
y = Rg.NumberFormat
X = Application.Substitute(X, UCase("toto1"), Plage)
Rg.NumberFormat = y
Rg.Formula = X
Set Rg = .FindNext(Rg)
Loop Until Rg Is Nothing Or Rg.Address <> Adr
End If
' Appliquer le nouveau nom à l'ensemble de la feuille
Sh.Cells.ApplyNames Names:="denis", IgnoreRelativeAbsolute:=True, _
UseRowColumnNames:=True, OmitColumn:=True, OmitRow:=True, Order:=1, _
AppendLast:úlse
End With
Next
End Sub
'---------------------------------------
"Patrick" a écrit dans le message de groupe de
discussion :
Bonjour,
Merci pour ce code. Mais qu'arrive-t-il si le classeur contient d'autres
noms contenant "toto" ("toto1", "toto2", ...). Est-ce que le code qui
remplace "toto" par "titi" dans les formules ne risque pas de modifier celles
où il y a "toto1" en mettant "titi1", alors que "titi1" n'existe pas ?
Merci.
--
Patrick
"michdenis" wrote:
> Bonjour Patrick,
>
> Suppose que dans ton classeur que tu as un nom (plage nommée) "Toto" et
> que tu veuilles remplacer ce nom "toto" par "titi"
>
> Voici un petit exemple de code :
> '-------------------------------------
> Sub test()
> Dim Rg As Range, X As String
> Dim Sh As Worksheet
> On Error Resume Next
> Range("Toto").Name = "Titi"
> ThisWorkbook.Names("Toto").Delete
> For Each Sh In ThisWorkbook.Worksheets
> With Sh.Cells
> Set Rg = .Find("toto", LookIn:=xlFormulas, lookat:=xlPart)
> If Not Rg Is Nothing Then
> adr = Rg.Address
> Do
> X = UCase(Rg.Formula)
> X = Application.Substitute(X, UCase("toto"), "titi")
> Rg.Formula = X
> Set Rg = .FindNext(Rg)
> Loop Until Rg Is Nothing Or Rg.Address <> adr
> End If
> End With
> Next
> End Sub
> '-------------------------------------
>
>
>
> "Patrick" a écrit dans le message de groupe de
> discussion :
> Bonjour,
>
> J'aimerais créer une macro qui permettrait de modifier un nom de plage de
> cellules et, surtout, qui permette d'appliquer ce changement dans toutes les
> cellules qui font référence à ce nom.
>
> Pour la 1e partie, je vois très comment faire mais pour la suite je ne vois
> pas trop comment faire ? Avez-vous une idée ?
>
> Merci pour votre aide.
>
> --
> Patrick
>
Si tu veux remplacer le "NOM" toto1 par le nom "denis"
il y a ce qui suit :
Si tu as une collection de nom "toto", "toto1", "toto2"....
pour remplacer le premier nom "toto", il va falloir modifier
la procédure afin de s'assurer d'isoler correctement le bon
nom.
'---------------------------------------
Sub test()
Dim Rg As Range, X As String, Adr As String
Dim Sh As Worksheet, Plage As String
On Error Resume Next
'Récupération de l'adresse de la plage
'représentée par "toto1"
X = ThisWorkbook.Names("toto1").RefersTo
Plage = Right(X, Len(X) - 1)
'Attribution du nouveau nom à la plage
Range(Adr).Name = "denis"
'Suppression du NOM "Toto"
ThisWorkbook.Names("Toto1").Delete
'Boucle dans toutes les feuilles du classeur pour
'faire la substitution du nom "toto" par l'adresse
'de la plage que représentait "toto"
For Each Sh In ThisWorkbook.Worksheets
With Sh.Cells
Set Rg = .Find("toto1", LookIn:=xlFormulas, lookat:=xlPart)
If Not Rg Is Nothing Then
Adr = Rg.Address
Do
X = UCase(Rg.Formula)
y = Rg.NumberFormat
X = Application.Substitute(X, UCase("toto1"), Plage)
Rg.NumberFormat = y
Rg.Formula = X
Set Rg = .FindNext(Rg)
Loop Until Rg Is Nothing Or Rg.Address <> Adr
End If
' Appliquer le nouveau nom à l'ensemble de la feuille
Sh.Cells.ApplyNames Names:="denis", IgnoreRelativeAbsolute:=True, _
UseRowColumnNames:=True, OmitColumn:=True, OmitRow:=True, Order:=1, _
AppendLast:úlse
End With
Next
End Sub
'---------------------------------------
"Patrick" <no.spam.patrick.fredin@iquebec.com> a écrit dans le message de groupe de
discussion : 726FF570-0260-4413-8D82-35D1104E19A1@microsoft.com...
Bonjour,
Merci pour ce code. Mais qu'arrive-t-il si le classeur contient d'autres
noms contenant "toto" ("toto1", "toto2", ...). Est-ce que le code qui
remplace "toto" par "titi" dans les formules ne risque pas de modifier celles
où il y a "toto1" en mettant "titi1", alors que "titi1" n'existe pas ?
Merci.
--
Patrick
"michdenis" wrote:
> Bonjour Patrick,
>
> Suppose que dans ton classeur que tu as un nom (plage nommée) "Toto" et
> que tu veuilles remplacer ce nom "toto" par "titi"
>
> Voici un petit exemple de code :
> '-------------------------------------
> Sub test()
> Dim Rg As Range, X As String
> Dim Sh As Worksheet
> On Error Resume Next
> Range("Toto").Name = "Titi"
> ThisWorkbook.Names("Toto").Delete
> For Each Sh In ThisWorkbook.Worksheets
> With Sh.Cells
> Set Rg = .Find("toto", LookIn:=xlFormulas, lookat:=xlPart)
> If Not Rg Is Nothing Then
> adr = Rg.Address
> Do
> X = UCase(Rg.Formula)
> X = Application.Substitute(X, UCase("toto"), "titi")
> Rg.Formula = X
> Set Rg = .FindNext(Rg)
> Loop Until Rg Is Nothing Or Rg.Address <> adr
> End If
> End With
> Next
> End Sub
> '-------------------------------------
>
>
>
> "Patrick" <no.spam.patrick.fredin@iquebec.com> a écrit dans le message de groupe de
> discussion : 425DA7DA-9EBA-4C3A-8DB5-8D7BED7198B6@microsoft.com...
> Bonjour,
>
> J'aimerais créer une macro qui permettrait de modifier un nom de plage de
> cellules et, surtout, qui permette d'appliquer ce changement dans toutes les
> cellules qui font référence à ce nom.
>
> Pour la 1e partie, je vois très comment faire mais pour la suite je ne vois
> pas trop comment faire ? Avez-vous une idée ?
>
> Merci pour votre aide.
>
> --
> Patrick
>
Si tu veux remplacer le "NOM" toto1 par le nom "denis"
il y a ce qui suit :
Si tu as une collection de nom "toto", "toto1", "toto2"....
pour remplacer le premier nom "toto", il va falloir modifier
la procédure afin de s'assurer d'isoler correctement le bon
nom.
'---------------------------------------
Sub test()
Dim Rg As Range, X As String, Adr As String
Dim Sh As Worksheet, Plage As String
On Error Resume Next
'Récupération de l'adresse de la plage
'représentée par "toto1"
X = ThisWorkbook.Names("toto1").RefersTo
Plage = Right(X, Len(X) - 1)
'Attribution du nouveau nom à la plage
Range(Adr).Name = "denis"
'Suppression du NOM "Toto"
ThisWorkbook.Names("Toto1").Delete
'Boucle dans toutes les feuilles du classeur pour
'faire la substitution du nom "toto" par l'adresse
'de la plage que représentait "toto"
For Each Sh In ThisWorkbook.Worksheets
With Sh.Cells
Set Rg = .Find("toto1", LookIn:=xlFormulas, lookat:=xlPart)
If Not Rg Is Nothing Then
Adr = Rg.Address
Do
X = UCase(Rg.Formula)
y = Rg.NumberFormat
X = Application.Substitute(X, UCase("toto1"), Plage)
Rg.NumberFormat = y
Rg.Formula = X
Set Rg = .FindNext(Rg)
Loop Until Rg Is Nothing Or Rg.Address <> Adr
End If
' Appliquer le nouveau nom à l'ensemble de la feuille
Sh.Cells.ApplyNames Names:="denis", IgnoreRelativeAbsolute:=True, _
UseRowColumnNames:=True, OmitColumn:=True, OmitRow:=True, Order:=1, _
AppendLast:úlse
End With
Next
End Sub
'---------------------------------------
"Patrick" a écrit dans le message de groupe de
discussion :
Bonjour,
Merci pour ce code. Mais qu'arrive-t-il si le classeur contient d'autres
noms contenant "toto" ("toto1", "toto2", ...). Est-ce que le code qui
remplace "toto" par "titi" dans les formules ne risque pas de modifier celles
où il y a "toto1" en mettant "titi1", alors que "titi1" n'existe pas ?
Merci.
--
Patrick
"michdenis" wrote:
> Bonjour Patrick,
>
> Suppose que dans ton classeur que tu as un nom (plage nommée) "Toto" et
> que tu veuilles remplacer ce nom "toto" par "titi"
>
> Voici un petit exemple de code :
> '-------------------------------------
> Sub test()
> Dim Rg As Range, X As String
> Dim Sh As Worksheet
> On Error Resume Next
> Range("Toto").Name = "Titi"
> ThisWorkbook.Names("Toto").Delete
> For Each Sh In ThisWorkbook.Worksheets
> With Sh.Cells
> Set Rg = .Find("toto", LookIn:=xlFormulas, lookat:=xlPart)
> If Not Rg Is Nothing Then
> adr = Rg.Address
> Do
> X = UCase(Rg.Formula)
> X = Application.Substitute(X, UCase("toto"), "titi")
> Rg.Formula = X
> Set Rg = .FindNext(Rg)
> Loop Until Rg Is Nothing Or Rg.Address <> adr
> End If
> End With
> Next
> End Sub
> '-------------------------------------
>
>
>
> "Patrick" a écrit dans le message de groupe de
> discussion :
> Bonjour,
>
> J'aimerais créer une macro qui permettrait de modifier un nom de plage de
> cellules et, surtout, qui permette d'appliquer ce changement dans toutes les
> cellules qui font référence à ce nom.
>
> Pour la 1e partie, je vois très comment faire mais pour la suite je ne vois
> pas trop comment faire ? Avez-vous une idée ?
>
> Merci pour votre aide.
>
> --
> Patrick
>