OVH Cloud OVH Cloud

automatiser la modif de zones nommées

10 réponses
Avatar
J
Bonjour à tous
J'ai une ribambelle de zones nommées, genre A5:A500, c'est très pénible
de toutes les modifier à la main.
Comment faire, par exemple, pour remplacer 500 par 600 ?
merci pour l'aide
@+
J@@

10 réponses

Avatar
FxM
Bonjour à tous
J'ai une ribambelle de zones nommées, genre A5:A500, c'est très pénible
de toutes les modifier à la main.
Comment faire, par exemple, pour remplacer 500 par 600 ?
merci pour l'aide
@+
J@@


Bonjour J@@,

Quelque chose comme ce qui suit ?
Attention aux coupures de lignes !

@+
FxM

Sub test2()
Dim ligold, lignew, derlig, cel

'ancienne extension
ligold = 500
'nouvelle extension
lignew = 600
'ajouter une feuille et la nommer
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza"
With Sheets("zaza")
'lister les noms contenus dans le classeur
.Range("A1").ListNames
'dernière ligne de la feuille
derlig = .Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
'parcourir la liste
For Each cel In .Range("B1:B" & derlig)
'si le nom se termine par ligold
If Right(cel, Len(ligold)) = ligold Then
'effectuer le remplacement
cel = Left(cel, Len(cel) - Len(ligold)) & lignew
'ef réaffecter le nom à la nouvelle zone
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
End If
Next cel
'détruire la feuille
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub

Avatar
J
Bonjour FxM
tout fonctionne au pas à pas, sauf cette ligne qui ne fait rien :
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
que faire?
merci
@+
J@@

Bonjour à tous
J'ai une ribambelle de zones nommées, genre A5:A500, c'est très
pénible de toutes les modifier à la main.
Comment faire, par exemple, pour remplacer 500 par 600 ?
merci pour l'aide
@+
J@@


Bonjour J@@,

Quelque chose comme ce qui suit ?
Attention aux coupures de lignes !

@+
FxM

Sub test2()
Dim ligold, lignew, derlig, cel

'ancienne extension
ligold = 500
'nouvelle extension
lignew = 600
'ajouter une feuille et la nommer
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza"
With Sheets("zaza")
'lister les noms contenus dans le classeur
.Range("A1").ListNames
'dernière ligne de la feuille
derlig = .Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
'parcourir la liste
For Each cel In .Range("B1:B" & derlig)
'si le nom se termine par ligold
If Right(cel, Len(ligold)) = ligold Then
'effectuer le remplacement
cel = Left(cel, Len(cel) - Len(ligold)) & lignew
'ef réaffecter le nom à la nouvelle zone
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
End If
Next cel
'détruire la feuille
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub



Avatar
FxM
Bonjour J@@ (bonsoir pour toi),

qui ne fait rien
Ne fait rien ou génère une erreur ?


La fonction de cette ligne est de remplacer le nom existant par celui de
la zone étendue.
En mode pas-à-pas et via les menus insertion - nom - définir d'Excel, tu
devrais pouvoir constater que le nom (...500) avant est devenu (...600)
après.

@+
FxM



Bonjour FxM
tout fonctionne au pas à pas, sauf cette ligne qui ne fait rien :
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
que faire?
merci
@+
J@@

Bonjour à tous
J'ai une ribambelle de zones nommées, genre A5:A500, c'est très
pénible de toutes les modifier à la main.
Comment faire, par exemple, pour remplacer 500 par 600 ?
merci pour l'aide
@+
J@@


Bonjour J@@,

Quelque chose comme ce qui suit ?
Attention aux coupures de lignes !

@+
FxM

Sub test2()
Dim ligold, lignew, derlig, cel

'ancienne extension
ligold = 500
'nouvelle extension
lignew = 600
'ajouter une feuille et la nommer
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza"
With Sheets("zaza")
'lister les noms contenus dans le classeur
.Range("A1").ListNames
'dernière ligne de la feuille
derlig = .Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
'parcourir la liste
For Each cel In .Range("B1:B" & derlig)
'si le nom se termine par ligold
If Right(cel, Len(ligold)) = ligold Then
'effectuer le remplacement
cel = Left(cel, Len(cel) - Len(ligold)) & lignew
'ef réaffecter le nom à la nouvelle zone
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
End If
Next cel
'détruire la feuille
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub





Avatar
J
Bonjour FxM
non non pas d'erreur, la ligne ne fait rien, on voit la macro créer une
feuille, tout copier dedans, traiter chaque ligne, mais sans agir sur
chacune : pas de remplacement.
Ne me dis pas que c'est mon FAI (comme me dit Misange ;-) pour ma
connection)
Et j'ai testé sans modifier le code.
Que se passe-t-il???
merci à toi
@+
J@@

Bonjour J@@ (bonsoir pour toi),

qui ne fait rien
Ne fait rien ou génère une erreur ?


La fonction de cette ligne est de remplacer le nom existant par celui de
la zone étendue.
En mode pas-à-pas et via les menus insertion - nom - définir d'Excel, tu
devrais pouvoir constater que le nom (...500) avant est devenu (...600)
après.

@+
FxM

tout fonctionne au pas à pas, sauf cette ligne qui ne fait rien :
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
que faire?

J'ai une ribambelle de zones nommées, genre A5:A500, c'est très
pénible de toutes les modifier à la main.
Comment faire, par exemple, pour remplacer 500 par 600 ?


FxM
Sub test2()
Dim ligold, lignew, derlig, cel

'ancienne extension
ligold = 500
'nouvelle extension
lignew = 600
'ajouter une feuille et la nommer
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza"
With Sheets("zaza")
'lister les noms contenus dans le classeur
.Range("A1").ListNames
'dernière ligne de la feuille
derlig = .Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
'parcourir la liste
For Each cel In .Range("B1:B" & derlig)
'si le nom se termine par ligold
If Right(cel, Len(ligold)) = ligold Then
'effectuer le remplacement
cel = Left(cel, Len(cel) - Len(ligold)) & lignew
'ef réaffecter le nom à la nouvelle zone
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
End If
Next cel
'détruire la feuille
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub







Avatar
FxM
Bonjour J@@,

Pourrais-tu m'envoyer ton document ? J'aimerais y jeter un oeil.
spamtrap <at> cestouvert <dot> net

@+
FxM


Bonjour FxM
non non pas d'erreur, la ligne ne fait rien, on voit la macro créer une
feuille, tout copier dedans, traiter chaque ligne, mais sans agir sur
chacune : pas de remplacement.
Ne me dis pas que c'est mon FAI (comme me dit Misange ;-) pour ma
connection)
Et j'ai testé sans modifier le code.
Que se passe-t-il???
merci à toi
@+
J@@

Bonjour J@@ (bonsoir pour toi),

qui ne fait rien
Ne fait rien ou génère une erreur ?


La fonction de cette ligne est de remplacer le nom existant par celui
de la zone étendue.
En mode pas-à-pas et via les menus insertion - nom - définir d'Excel,
tu devrais pouvoir constater que le nom (...500) avant est devenu
(...600) après.

@+
FxM

tout fonctionne au pas à pas, sauf cette ligne qui ne fait rien :
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
que faire?

J'ai une ribambelle de zones nommées, genre A5:A500, c'est très
pénible de toutes les modifier à la main.
Comment faire, par exemple, pour remplacer 500 par 600 ?


FxM
Sub test2()
Dim ligold, lignew, derlig, cel

'ancienne extension
ligold = 500
'nouvelle extension
lignew = 600
'ajouter une feuille et la nommer
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza"
With Sheets("zaza")
'lister les noms contenus dans le classeur
.Range("A1").ListNames
'dernière ligne de la feuille
derlig = .Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
'parcourir la liste
For Each cel In .Range("B1:B" & derlig)
'si le nom se termine par ligold
If Right(cel, Len(ligold)) = ligold Then
'effectuer le remplacement
cel = Left(cel, Len(cel) - Len(ligold)) & lignew
'ef réaffecter le nom à la nouvelle zone
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
End If
Next cel
'détruire la feuille
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub









Avatar
J
Bonjour FxM
c'est pari, sur ta drôle d'adresse ;-)
@+
J@@

FxM wrote:
Bonjour J@@,

Pourrais-tu m'envoyer ton document ? J'aimerais y jeter un oeil.
spamtrap <at> cestouvert <dot> net

@+
FxM



Bonjour FxM
non non pas d'erreur, la ligne ne fait rien, on voit la macro créer
une feuille, tout copier dedans, traiter chaque ligne, mais sans agir
sur chacune : pas de remplacement.
Ne me dis pas que c'est mon FAI (comme me dit Misange ;-) pour ma
connection)
Et j'ai testé sans modifier le code.
Que se passe-t-il???
merci à toi
@+
J@@


Bonjour J@@ (bonsoir pour toi),

qui ne fait rien
Ne fait rien ou génère une erreur ?


La fonction de cette ligne est de remplacer le nom existant par celui
de la zone étendue.
En mode pas-à-pas et via les menus insertion - nom - définir d'Excel,
tu devrais pouvoir constater que le nom (...500) avant est devenu
(...600) après.

@+
FxM


tout fonctionne au pas à pas, sauf cette ligne qui ne fait rien :
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
que faire?



J'ai une ribambelle de zones nommées, genre A5:A500, c'est très
pénible de toutes les modifier à la main.
Comment faire, par exemple, pour remplacer 500 par 600 ?



FxM
Sub test2()
Dim ligold, lignew, derlig, cel

'ancienne extension
ligold = 500
'nouvelle extension
lignew = 600
'ajouter une feuille et la nommer
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza"
With Sheets("zaza")
'lister les noms contenus dans le classeur
.Range("A1").ListNames
'dernière ligne de la feuille
derlig = .Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
'parcourir la liste
For Each cel In .Range("B1:B" & derlig)
'si le nom se termine par ligold
If Right(cel, Len(ligold)) = ligold Then
'effectuer le remplacement
cel = Left(cel, Len(cel) - Len(ligold)) & lignew
'ef réaffecter le nom à la nouvelle zone
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
End If
Next cel
'détruire la feuille
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub











Avatar
FxM
Bonsoir J@@,

dans laquelle tu auras remplacé ' <at> ' par @ et ' <dot> ' par .
n'est-ce pas ?

@+
FxM


Bonjour FxM
c'est pari, sur ta drôle d'adresse ;-)
@+
J@@

FxM wrote:
Bonjour J@@,

Pourrais-tu m'envoyer ton document ? J'aimerais y jeter un oeil.
spamtrap <at> cestouvert <dot> net

@+
FxM



Bonjour FxM
non non pas d'erreur, la ligne ne fait rien, on voit la macro créer
une feuille, tout copier dedans, traiter chaque ligne, mais sans agir
sur chacune : pas de remplacement.
Ne me dis pas que c'est mon FAI (comme me dit Misange ;-) pour ma
connection)
Et j'ai testé sans modifier le code.
Que se passe-t-il???
merci à toi
@+
J@@


Bonjour J@@ (bonsoir pour toi),

qui ne fait rien
Ne fait rien ou génère une erreur ?


La fonction de cette ligne est de remplacer le nom existant par
celui de la zone étendue.
En mode pas-à-pas et via les menus insertion - nom - définir
d'Excel, tu devrais pouvoir constater que le nom (...500) avant est
devenu (...600) après.

@+
FxM


tout fonctionne au pas à pas, sauf cette ligne qui ne fait rien :
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
que faire?



J'ai une ribambelle de zones nommées, genre A5:A500, c'est très
pénible de toutes les modifier à la main.
Comment faire, par exemple, pour remplacer 500 par 600 ?



FxM
Sub test2()
Dim ligold, lignew, derlig, cel

'ancienne extension
ligold = 500
'nouvelle extension
lignew = 600
'ajouter une feuille et la nommer
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza"
With Sheets("zaza")
'lister les noms contenus dans le classeur
.Range("A1").ListNames
'dernière ligne de la feuille
derlig = .Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
'parcourir la liste
For Each cel In .Range("B1:B" & derlig)
'si le nom se termine par ligold
If Right(cel, Len(ligold)) = ligold Then
'effectuer le remplacement
cel = Left(cel, Len(cel) - Len(ligold)) & lignew
'ef réaffecter le nom à la nouvelle zone
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
End If
Next cel
'détruire la feuille
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub













Avatar
J
Bonjour FxM
n'est-ce pas ?
Oui, quand même, j'étais à jeun ;-)

Mais le message a été refoulé
----- The following addresses had permanent delivery errors -----

OK faute de ma part, manque le s :-<
je recommence
ça y est, c'est parti, ne te mets pas en face de la prise de téléphone!
@+
J@@

Bonsoir J@@,

dans laquelle tu auras remplacé ' <at> ' par @ et ' <dot> ' par .
n'est-ce pas ?

@+
FxM


Bonjour FxM
c'est pari, sur ta drôle d'adresse ;-)
@+
J@@

FxM wrote:
Bonjour J@@,

Pourrais-tu m'envoyer ton document ? J'aimerais y jeter un oeil.
spamtrap <at> cestouvert <dot> net

@+
FxM



Bonjour FxM
non non pas d'erreur, la ligne ne fait rien, on voit la macro créer
une feuille, tout copier dedans, traiter chaque ligne, mais sans
agir sur chacune : pas de remplacement.
Ne me dis pas que c'est mon FAI (comme me dit Misange ;-) pour ma
connection)
Et j'ai testé sans modifier le code.
Que se passe-t-il???
merci à toi
@+
J@@


Bonjour J@@ (bonsoir pour toi),

qui ne fait rien
Ne fait rien ou génère une erreur ?


La fonction de cette ligne est de remplacer le nom existant par
celui de la zone étendue.
En mode pas-à-pas et via les menus insertion - nom - définir
d'Excel, tu devrais pouvoir constater que le nom (...500) avant est
devenu (...600) après.

@+
FxM


tout fonctionne au pas à pas, sauf cette ligne qui ne fait rien :
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
que faire?



J'ai une ribambelle de zones nommées, genre A5:A500, c'est très
pénible de toutes les modifier à la main.
Comment faire, par exemple, pour remplacer 500 par 600 ?



FxM
Sub test2()
Dim ligold, lignew, derlig, cel

'ancienne extension
ligold = 500
'nouvelle extension
lignew = 600
'ajouter une feuille et la nommer
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza"
With Sheets("zaza")
'lister les noms contenus dans le classeur
.Range("A1").ListNames
'dernière ligne de la feuille
derlig = .Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
'parcourir la liste
For Each cel In .Range("B1:B" & derlig)
'si le nom se termine par ligold
If Right(cel, Len(ligold)) = ligold Then
'effectuer le remplacement
cel = Left(cel, Len(cel) - Len(ligold)) & lignew
'ef réaffecter le nom à la nouvelle zone
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
End If
Next cel
'détruire la feuille
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub















Avatar
FxM
Argghhh, l'adresse en clair !!! Y'a un robot qui ne va pas chômer :o(

Fichier reçu et renvoyé.
Pour suivi du forum, les plages ne sont plus étendues d'après leur noms
et adresses ... mais en insérant des lignes.

@+
FxM (partisan du moindre effort)



Bonjour FxM
n'est-ce pas ?
Oui, quand même, j'étais à jeun ;-)

Mais le message a été refoulé
----- The following addresses had permanent delivery errors -----

OK faute de ma part, manque le s :-<
je recommence
ça y est, c'est parti, ne te mets pas en face de la prise de téléphone!
@+
J@@

Bonsoir J@@,

dans laquelle tu auras remplacé ' <at> ' par @ et ' <dot> ' par .
n'est-ce pas ?

@+
FxM


Bonjour FxM
c'est pari, sur ta drôle d'adresse ;-)
@+
J@@

FxM wrote:
Bonjour J@@,

Pourrais-tu m'envoyer ton document ? J'aimerais y jeter un oeil.
spamtrap <at> cestouvert <dot> net

@+
FxM



Bonjour FxM
non non pas d'erreur, la ligne ne fait rien, on voit la macro créer
une feuille, tout copier dedans, traiter chaque ligne, mais sans
agir sur chacune : pas de remplacement.
Ne me dis pas que c'est mon FAI (comme me dit Misange ;-) pour ma
connection)
Et j'ai testé sans modifier le code.
Que se passe-t-il???
merci à toi
@+
J@@


Bonjour J@@ (bonsoir pour toi),

qui ne fait rien
Ne fait rien ou génère une erreur ?


La fonction de cette ligne est de remplacer le nom existant par
celui de la zone étendue.
En mode pas-à-pas et via les menus insertion - nom - définir
d'Excel, tu devrais pouvoir constater que le nom (...500) avant
est devenu (...600) après.

@+
FxM


tout fonctionne au pas à pas, sauf cette ligne qui ne fait rien :
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
que faire?



J'ai une ribambelle de zones nommées, genre A5:A500, c'est très
pénible de toutes les modifier à la main.
Comment faire, par exemple, pour remplacer 500 par 600 ?



FxM
Sub test2()
Dim ligold, lignew, derlig, cel

'ancienne extension
ligold = 500
'nouvelle extension
lignew = 600
'ajouter une feuille et la nommer
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza"
With Sheets("zaza")
'lister les noms contenus dans le classeur
.Range("A1").ListNames
'dernière ligne de la feuille
derlig = .Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
'parcourir la liste
For Each cel In .Range("B1:B" & derlig)
'si le nom se termine par ligold
If Right(cel, Len(ligold)) = ligold Then
'effectuer le remplacement
cel = Left(cel, Len(cel) - Len(ligold)) & lignew
'ef réaffecter le nom à la nouvelle zone
ActiveWorkbook.Names.Add Name:Îl.Offset(0, -1), RefersTo:Îl
End If
Next cel
'détruire la feuille
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub

















Avatar
J
Bonjour FxM
non, non l'adresse était fausse.
Mais désolé de cette maladresse
Encore merci pour ton aide.
@+
J@@

Argghhh, l'adresse en clair !!! Y'a un robot qui ne va pas chômer :o(
)

Mais le message a été refoulé
----- The following addresses had permanent delivery errors -----