Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Bonjour Michdenis,
Je viens de tester le code que tu as retouché et curieusement, alors que
sur un classeur standard, ça fonctionne très bien et très rapidement, sur
mon classeur perso, j'obtiens un erreur à la ligne
.Range(.Name & "!" & Adr).Name = NouveauNom
Le débogueur me dit :
"la méthode 'Range' de l'objet '_Worksheet' a échoué"
Je ne comprends pas ce qui peut le déranger alors que cette même ligne ne
pose aucun problème comme je l'ai dit sur un nouveau classeur.
Aurais-tu une idée sur le problème ?
Je pensais peut être que cela pouvait venir de la protections des feuilles
ou du classeur, mais même tout déprotégé l'erreur est toujours présente
;-)
@+
Bartez
"michdenis" a écrit dans le message de news:
%
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Bonjour Michdenis,
Je viens de tester le code que tu as retouché et curieusement, alors que
sur un classeur standard, ça fonctionne très bien et très rapidement, sur
mon classeur perso, j'obtiens un erreur à la ligne
.Range(.Name & "!" & Adr).Name = NouveauNom
Le débogueur me dit :
"la méthode 'Range' de l'objet '_Worksheet' a échoué"
Je ne comprends pas ce qui peut le déranger alors que cette même ligne ne
pose aucun problème comme je l'ai dit sur un nouveau classeur.
Aurais-tu une idée sur le problème ?
Je pensais peut être que cela pouvait venir de la protections des feuilles
ou du classeur, mais même tout déprotégé l'erreur est toujours présente
;-)
@+
Bartez
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23GIAjdtZGHA.608@TK2MSFTNGP02.phx.gbl...
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Bonjour Michdenis,
Je viens de tester le code que tu as retouché et curieusement, alors que
sur un classeur standard, ça fonctionne très bien et très rapidement, sur
mon classeur perso, j'obtiens un erreur à la ligne
.Range(.Name & "!" & Adr).Name = NouveauNom
Le débogueur me dit :
"la méthode 'Range' de l'objet '_Worksheet' a échoué"
Je ne comprends pas ce qui peut le déranger alors que cette même ligne ne
pose aucun problème comme je l'ai dit sur un nouveau classeur.
Aurais-tu une idée sur le problème ?
Je pensais peut être que cela pouvait venir de la protections des feuilles
ou du classeur, mais même tout déprotégé l'erreur est toujours présente
;-)
@+
Bartez
"michdenis" a écrit dans le message de news:
%
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Je viens de trouver pourquoi ça bloque.
Dans mon classeur, les feuilles sont nommées sous cette forme :
Modèle17(4-2006)
si je change et que je les nomment de façon standard :
Feuil4(Feuil4)
dans ce cas, tout fonctionne
Existe-il une modification à apporter au code pour qu'il puisse travailler
avec correctement avec le nom que j'ai affecté aux feuilles du classeur ?
@+
Bartez
"Bartez" a écrit dans le message de news:Bonjour Michdenis,
Je viens de tester le code que tu as retouché et curieusement, alors que
sur un classeur standard, ça fonctionne très bien et très rapidement, sur
mon classeur perso, j'obtiens un erreur à la ligne
.Range(.Name & "!" & Adr).Name = NouveauNom
Le débogueur me dit :
"la méthode 'Range' de l'objet '_Worksheet' a échoué"
Je ne comprends pas ce qui peut le déranger alors que cette même ligne ne
pose aucun problème comme je l'ai dit sur un nouveau classeur.
Aurais-tu une idée sur le problème ?
Je pensais peut être que cela pouvait venir de la protections des
feuilles ou du classeur, mais même tout déprotégé l'erreur est toujours
présente ;-)
@+
Bartez
"michdenis" a écrit dans le message de news:
%
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Je viens de trouver pourquoi ça bloque.
Dans mon classeur, les feuilles sont nommées sous cette forme :
Modèle17(4-2006)
si je change et que je les nomment de façon standard :
Feuil4(Feuil4)
dans ce cas, tout fonctionne
Existe-il une modification à apporter au code pour qu'il puisse travailler
avec correctement avec le nom que j'ai affecté aux feuilles du classeur ?
@+
Bartez
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
OWAsha3ZGHA.4424@TK2MSFTNGP05.phx.gbl...
Bonjour Michdenis,
Je viens de tester le code que tu as retouché et curieusement, alors que
sur un classeur standard, ça fonctionne très bien et très rapidement, sur
mon classeur perso, j'obtiens un erreur à la ligne
.Range(.Name & "!" & Adr).Name = NouveauNom
Le débogueur me dit :
"la méthode 'Range' de l'objet '_Worksheet' a échoué"
Je ne comprends pas ce qui peut le déranger alors que cette même ligne ne
pose aucun problème comme je l'ai dit sur un nouveau classeur.
Aurais-tu une idée sur le problème ?
Je pensais peut être que cela pouvait venir de la protections des
feuilles ou du classeur, mais même tout déprotégé l'erreur est toujours
présente ;-)
@+
Bartez
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23GIAjdtZGHA.608@TK2MSFTNGP02.phx.gbl...
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Je viens de trouver pourquoi ça bloque.
Dans mon classeur, les feuilles sont nommées sous cette forme :
Modèle17(4-2006)
si je change et que je les nomment de façon standard :
Feuil4(Feuil4)
dans ce cas, tout fonctionne
Existe-il une modification à apporter au code pour qu'il puisse travailler
avec correctement avec le nom que j'ai affecté aux feuilles du classeur ?
@+
Bartez
"Bartez" a écrit dans le message de news:Bonjour Michdenis,
Je viens de tester le code que tu as retouché et curieusement, alors que
sur un classeur standard, ça fonctionne très bien et très rapidement, sur
mon classeur perso, j'obtiens un erreur à la ligne
.Range(.Name & "!" & Adr).Name = NouveauNom
Le débogueur me dit :
"la méthode 'Range' de l'objet '_Worksheet' a échoué"
Je ne comprends pas ce qui peut le déranger alors que cette même ligne ne
pose aucun problème comme je l'ai dit sur un nouveau classeur.
Aurais-tu une idée sur le problème ?
Je pensais peut être que cela pouvait venir de la protections des
feuilles ou du classeur, mais même tout déprotégé l'erreur est toujours
présente ;-)
@+
Bartez
"michdenis" a écrit dans le message de news:
%
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Je viens de trouver pourquoi ça bloque.
Dans mon classeur, les feuilles sont nommées sous cette forme :
Modèle17(4-2006)
si je change et que je les nomment de façon standard :
Feuil4(Feuil4)
dans ce cas, tout fonctionne
Existe-il une modification à apporter au code pour qu'il puisse travailler
avec correctement avec le nom que j'ai affecté aux feuilles du classeur ?
@+
Bartez
"Bartez" a écrit dans le message de news:Bonjour Michdenis,
Je viens de tester le code que tu as retouché et curieusement, alors que
sur un classeur standard, ça fonctionne très bien et très rapidement, sur
mon classeur perso, j'obtiens un erreur à la ligne
.Range(.Name & "!" & Adr).Name = NouveauNom
Le débogueur me dit :
"la méthode 'Range' de l'objet '_Worksheet' a échoué"
Je ne comprends pas ce qui peut le déranger alors que cette même ligne ne
pose aucun problème comme je l'ai dit sur un nouveau classeur.
Aurais-tu une idée sur le problème ?
Je pensais peut être que cela pouvait venir de la protections des
feuilles ou du classeur, mais même tout déprotégé l'erreur est toujours
présente ;-)
@+
Bartez
"michdenis" a écrit dans le message de news:
%
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Je viens de trouver pourquoi ça bloque.
Dans mon classeur, les feuilles sont nommées sous cette forme :
Modèle17(4-2006)
si je change et que je les nomment de façon standard :
Feuil4(Feuil4)
dans ce cas, tout fonctionne
Existe-il une modification à apporter au code pour qu'il puisse travailler
avec correctement avec le nom que j'ai affecté aux feuilles du classeur ?
@+
Bartez
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
OWAsha3ZGHA.4424@TK2MSFTNGP05.phx.gbl...
Bonjour Michdenis,
Je viens de tester le code que tu as retouché et curieusement, alors que
sur un classeur standard, ça fonctionne très bien et très rapidement, sur
mon classeur perso, j'obtiens un erreur à la ligne
.Range(.Name & "!" & Adr).Name = NouveauNom
Le débogueur me dit :
"la méthode 'Range' de l'objet '_Worksheet' a échoué"
Je ne comprends pas ce qui peut le déranger alors que cette même ligne ne
pose aucun problème comme je l'ai dit sur un nouveau classeur.
Aurais-tu une idée sur le problème ?
Je pensais peut être que cela pouvait venir de la protections des
feuilles ou du classeur, mais même tout déprotégé l'erreur est toujours
présente ;-)
@+
Bartez
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23GIAjdtZGHA.608@TK2MSFTNGP02.phx.gbl...
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Je viens de trouver pourquoi ça bloque.
Dans mon classeur, les feuilles sont nommées sous cette forme :
Modèle17(4-2006)
si je change et que je les nomment de façon standard :
Feuil4(Feuil4)
dans ce cas, tout fonctionne
Existe-il une modification à apporter au code pour qu'il puisse travailler
avec correctement avec le nom que j'ai affecté aux feuilles du classeur ?
@+
Bartez
"Bartez" a écrit dans le message de news:Bonjour Michdenis,
Je viens de tester le code que tu as retouché et curieusement, alors que
sur un classeur standard, ça fonctionne très bien et très rapidement, sur
mon classeur perso, j'obtiens un erreur à la ligne
.Range(.Name & "!" & Adr).Name = NouveauNom
Le débogueur me dit :
"la méthode 'Range' de l'objet '_Worksheet' a échoué"
Je ne comprends pas ce qui peut le déranger alors que cette même ligne ne
pose aucun problème comme je l'ai dit sur un nouveau classeur.
Aurais-tu une idée sur le problème ?
Je pensais peut être que cela pouvait venir de la protections des
feuilles ou du classeur, mais même tout déprotégé l'erreur est toujours
présente ;-)
@+
Bartez
"michdenis" a écrit dans le message de news:
%
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr, Wk As Workbook
Dim Nom As String, NouveauNom As String
Application.EnableEvents = False
Set Wk = ActiveWorkbook
With Wk
Nb = .Worksheets.Count
For Each Nom_à_Définir In .Sheets(Nb).Names
Nom = Split(.Names(Nom_à_Définir.Name).Name, "!")(1)
Adr = Range(.Names(Nom_à_Définir.Name).Name).Address
For Each Sh In .Worksheets
If Sh.Name <> .Sheets(Nb).Name Then
With Sh
NouveauNom = "'" & .Name & "'!" & Nom
.Range("'" & .Name & "'!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Wk.Sheets(Nb).Range _
(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
End If
Next
Next
End With
Application.EnableEvents = True
End Sub
"Bartez" a écrit dans le message de news:
Ok, j'ai trouvé :)
voici comment j'ai modifié les 2 lignes de code :
NouveauNom = "'" & .Name & "'" & "!" & Nom
.Range("'" & .Name & "'" & "!" & Adr).Name = NouveauNom
Cette fois, avec cette modification, ça fonctionne même avec mon classeur
et
mes feuilles renommées.
Merci Michdenis, ton code est bien plus propre que le mien à l'origine.
Par contre pour la vitesse, ça ne m'a pas accéléré les choses.
Une boucle reste une boucle et il faut autant le même temps dans un sens
comme dans l'autre pour lire et écrire les 289 Noms contenus sur ma
feuille.
Tanpis.
Ce qui aurrait été bien c'est de prendre comme pour la copies de cellules
(plage) tous les noms d'un coup, changer seulement l'origine de la feuille
"Feuil2!Nom1" devriendrait "Feuil1!Nom1" et de tout coller dans la Feuil1
en
évitant les boucles.
En tout cas, Merci encore de ton aide
@+
Bartez
"Bartez" a écrit dans le message de news:Je viens de trouver pourquoi ça bloque.
Dans mon classeur, les feuilles sont nommées sous cette forme :
Modèle17(4-2006)
si je change et que je les nomment de façon standard :
Feuil4(Feuil4)
dans ce cas, tout fonctionne
Existe-il une modification à apporter au code pour qu'il puisse
travailler
avec correctement avec le nom que j'ai affecté aux feuilles du classeur ?
@+
Bartez
"Bartez" a écrit dans le message de news:Bonjour Michdenis,
Je viens de tester le code que tu as retouché et curieusement, alors que
sur un classeur standard, ça fonctionne très bien et très rapidement,
sur
mon classeur perso, j'obtiens un erreur à la ligne
.Range(.Name & "!" & Adr).Name = NouveauNom
Le débogueur me dit :
"la méthode 'Range' de l'objet '_Worksheet' a échoué"
Je ne comprends pas ce qui peut le déranger alors que cette même ligne
ne
pose aucun problème comme je l'ai dit sur un nouveau classeur.
Aurais-tu une idée sur le problème ?
Je pensais peut être que cela pouvait venir de la protections des
feuilles ou du classeur, mais même tout déprotégé l'erreur est toujours
présente ;-)
@+
Bartez
"michdenis" a écrit dans le message de news:
%
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr, Wk As Workbook
Dim Nom As String, NouveauNom As String
Application.EnableEvents = False
Set Wk = ActiveWorkbook
With Wk
Nb = .Worksheets.Count
For Each Nom_à_Définir In .Sheets(Nb).Names
Nom = Split(.Names(Nom_à_Définir.Name).Name, "!")(1)
Adr = Range(.Names(Nom_à_Définir.Name).Name).Address
For Each Sh In .Worksheets
If Sh.Name <> .Sheets(Nb).Name Then
With Sh
NouveauNom = "'" & .Name & "'!" & Nom
.Range("'" & .Name & "'!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Wk.Sheets(Nb).Range _
(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
End If
Next
Next
End With
Application.EnableEvents = True
End Sub
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
eVYGLQ6ZGHA.3752@TK2MSFTNGP03.phx.gbl...
Ok, j'ai trouvé :)
voici comment j'ai modifié les 2 lignes de code :
NouveauNom = "'" & .Name & "'" & "!" & Nom
.Range("'" & .Name & "'" & "!" & Adr).Name = NouveauNom
Cette fois, avec cette modification, ça fonctionne même avec mon classeur
et
mes feuilles renommées.
Merci Michdenis, ton code est bien plus propre que le mien à l'origine.
Par contre pour la vitesse, ça ne m'a pas accéléré les choses.
Une boucle reste une boucle et il faut autant le même temps dans un sens
comme dans l'autre pour lire et écrire les 289 Noms contenus sur ma
feuille.
Tanpis.
Ce qui aurrait été bien c'est de prendre comme pour la copies de cellules
(plage) tous les noms d'un coup, changer seulement l'origine de la feuille
"Feuil2!Nom1" devriendrait "Feuil1!Nom1" et de tout coller dans la Feuil1
en
évitant les boucles.
En tout cas, Merci encore de ton aide
@+
Bartez
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
O2aSz95ZGHA.3652@TK2MSFTNGP03.phx.gbl...
Je viens de trouver pourquoi ça bloque.
Dans mon classeur, les feuilles sont nommées sous cette forme :
Modèle17(4-2006)
si je change et que je les nomment de façon standard :
Feuil4(Feuil4)
dans ce cas, tout fonctionne
Existe-il une modification à apporter au code pour qu'il puisse
travailler
avec correctement avec le nom que j'ai affecté aux feuilles du classeur ?
@+
Bartez
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
OWAsha3ZGHA.4424@TK2MSFTNGP05.phx.gbl...
Bonjour Michdenis,
Je viens de tester le code que tu as retouché et curieusement, alors que
sur un classeur standard, ça fonctionne très bien et très rapidement,
sur
mon classeur perso, j'obtiens un erreur à la ligne
.Range(.Name & "!" & Adr).Name = NouveauNom
Le débogueur me dit :
"la méthode 'Range' de l'objet '_Worksheet' a échoué"
Je ne comprends pas ce qui peut le déranger alors que cette même ligne
ne
pose aucun problème comme je l'ai dit sur un nouveau classeur.
Aurais-tu une idée sur le problème ?
Je pensais peut être que cela pouvait venir de la protections des
feuilles ou du classeur, mais même tout déprotégé l'erreur est toujours
présente ;-)
@+
Bartez
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23GIAjdtZGHA.608@TK2MSFTNGP02.phx.gbl...
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub
Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr, Wk As Workbook
Dim Nom As String, NouveauNom As String
Application.EnableEvents = False
Set Wk = ActiveWorkbook
With Wk
Nb = .Worksheets.Count
For Each Nom_à_Définir In .Sheets(Nb).Names
Nom = Split(.Names(Nom_à_Définir.Name).Name, "!")(1)
Adr = Range(.Names(Nom_à_Définir.Name).Name).Address
For Each Sh In .Worksheets
If Sh.Name <> .Sheets(Nb).Name Then
With Sh
NouveauNom = "'" & .Name & "'!" & Nom
.Range("'" & .Name & "'!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Wk.Sheets(Nb).Range _
(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
End If
Next
Next
End With
Application.EnableEvents = True
End Sub
"Bartez" a écrit dans le message de news:
Ok, j'ai trouvé :)
voici comment j'ai modifié les 2 lignes de code :
NouveauNom = "'" & .Name & "'" & "!" & Nom
.Range("'" & .Name & "'" & "!" & Adr).Name = NouveauNom
Cette fois, avec cette modification, ça fonctionne même avec mon classeur
et
mes feuilles renommées.
Merci Michdenis, ton code est bien plus propre que le mien à l'origine.
Par contre pour la vitesse, ça ne m'a pas accéléré les choses.
Une boucle reste une boucle et il faut autant le même temps dans un sens
comme dans l'autre pour lire et écrire les 289 Noms contenus sur ma
feuille.
Tanpis.
Ce qui aurrait été bien c'est de prendre comme pour la copies de cellules
(plage) tous les noms d'un coup, changer seulement l'origine de la feuille
"Feuil2!Nom1" devriendrait "Feuil1!Nom1" et de tout coller dans la Feuil1
en
évitant les boucles.
En tout cas, Merci encore de ton aide
@+
Bartez
"Bartez" a écrit dans le message de news:Je viens de trouver pourquoi ça bloque.
Dans mon classeur, les feuilles sont nommées sous cette forme :
Modèle17(4-2006)
si je change et que je les nomment de façon standard :
Feuil4(Feuil4)
dans ce cas, tout fonctionne
Existe-il une modification à apporter au code pour qu'il puisse
travailler
avec correctement avec le nom que j'ai affecté aux feuilles du classeur ?
@+
Bartez
"Bartez" a écrit dans le message de news:Bonjour Michdenis,
Je viens de tester le code que tu as retouché et curieusement, alors que
sur un classeur standard, ça fonctionne très bien et très rapidement,
sur
mon classeur perso, j'obtiens un erreur à la ligne
.Range(.Name & "!" & Adr).Name = NouveauNom
Le débogueur me dit :
"la méthode 'Range' de l'objet '_Worksheet' a échoué"
Je ne comprends pas ce qui peut le déranger alors que cette même ligne
ne
pose aucun problème comme je l'ai dit sur un nouveau classeur.
Aurais-tu une idée sur le problème ?
Je pensais peut être que cela pouvait venir de la protections des
feuilles ou du classeur, mais même tout déprotégé l'erreur est toujours
présente ;-)
@+
Bartez
"michdenis" a écrit dans le message de news:
%
Private Sub Copier_les_Noms_et_leurs_Étiquettes()
Dim Sh As Worksheet, Nb As Integer
Dim Nom_à_Définir As Name, Adr
Dim Nom As String, NouveauNom As String
Nb = Worksheets.Count
For Each Nom_à_Définir In Sheets(Nb).Names
Nom = Split(Nom_à_Définir.Name, "!")(1)
Adr = Range(Nom_à_Définir).Address
For Each Sh In Worksheets
With Sh
NouveauNom = .Name & "!" & Nom
.Range(.Name & "!" & Adr).Name = NouveauNom
With .Range(NouveauNom)
If .Column = 80 Then
.Offset(0, -1).Value = _
Range(Nom_à_Définir.Name).Offset(0, -1).Value
End If
End With
End With
Next
Next
End Sub