[COLOR="DarkSlateGray"][B]Sub toto()
Dim oDat, i As Long
3 With [B5] [COLOR="SeaGreen"]'Cellule à partir de laquelle sont placés les noms des feuilles _
à renommer. Il peut y en avoir autant qu'on veut. Les nouveaux noms à _
donner aux feuilles sont placés dans la colonne C. _
Exemple : si en B5 on a "Feuil50" et en C5 on a "Sheet_2327", _
l'exécution de la procédure renommera "Sheet_2327" la feuille nommée _
"Feuil50" à deux conditions : _
1. il existe une feuille nommée "Feuil50" dans le classeur ; _
2. il n'existe pas de feuille nommée "Sheet_2327" dans le classeur.[/COLOR]
4 If Cells(Rows.Count, .Column).End(xlUp).Cells(1, 1).Row < .Row Then GoTo E
[COLOR="SeaGreen"]'Si toutes les cellules en-dessous de B4 sont vides, aller à E _
(c'est-à-dire ne rien faire).[/COLOR]
5 With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
[COLOR="SeaGreen"]'Ligne "technique" pour accélérer l'exécution.[/COLOR]
6 oDat = Range(.Cells, Cells(Rows.Count, .Column + 1).End(xlUp)).Value
[COLOR="SeaGreen"]'Place dans le tableau oDat (deux colonnes) les valeurs de B5/C5 à _
Bn/Cn, où n est le numéro de la dernière ligne non vide de la colonne B.[/COLOR]
7 On Error Resume Next [COLOR="SeaGreen"]'Si une erreur se produit dans une des lignes qui _
suivent, cette ligne est ignorée, et l'exécution continue à la ligne _
suivante.[/COLOR]
8 For i = 1 To UBound(oDat, 1) [COLOR="SeaGreen"]'Pour i variant de 1 au nombre de lignes _
du tableau oDat...[/COLOR]
9 ThisWorkbook.Sheets(CStr(oDat(i, 1))).Name = CStr(oDat(i, 2)) [COLOR="SeaGreen"]'...renomme _
la feuille dont le nom est dans la ligne i de la première colonne de _
oDat avec le nom qui est dans la ligne i de la deuxième colonne du _
tableau oDat. Si une valeur est manquante dans le tableau oDat ou si _
un nom existe déjà dans le classeur, une erreur se produit. Grâce à _
la ligne 7 cette erreur est ignorée et l'exécution du code continue.[/COLOR]
10 Next [COLOR="SeaGreen"]'Reprendre l'exécution à la ligne 9 avec la valeur suivante de i, _
tant que la dernière ligne du tableau oDat n'est pas atteinte.[/COLOR]
11 On Error GoTo 0 [COLOR="SeaGreen"]'A partir d'ici, les éventuelles erreurs ne sont plus _
ignorées.[/COLOR]
12 With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
[COLOR="SeaGreen"]'Ligne "technique" pour rétablir les paramètres modifiés à la ligne 4. _
Le code fonctionne aussi si les lignes 4 et 12 sont supprimées, mais _
l'exécution est plus lente.[/COLOR]
E: End With
End Sub[/B][/COLOR]