Je ne suis pas un très grand connaisseur dans la programmation de macros dans Excel. Dans le fichier en pièce jointe, j'ai différents onglets que j'aimerais modifier automatiquement pour tenir compte des mois et des années. L'onglet contenant la liste des noms actuels du fichier se nomme «Onglets». Dans cet onglet, j'ai inséré la liste des noms des onglets actuels dans le fichier (cellules B5 à B87). Cette liste est générée par une macro nommée «Snamelist» et fonctionne très bien (bouton Liste noms onglets actuels). J'aimerais être en mesure d'automatiser le changement des noms des onglets actuel de ce fichier par le nom indiqué aux cellules D5 à D87. J'ai créé un bouton nommé «Modifier le nom des onglets en fonction de la date de l'année financière de l'entreprise» et je lui ai associé une macro nommée «Nom_onglets». Lorsque je tente de lancer cette macro, rien ne se passe.
J'aimerais pouvoir bénéficier de vos précieux conseils afin de m'indiquer ce qui ne fonctionne pas bien dans cette macro.
Bonjour Patrice,
Un essai en PJ avec cette macro :
Code:
Sub RenommerOnglets()
With Worksheets("Onglets")
For i = 5 To 86
If WsExist(.Cells(i, "B")) Then
Sheets(.Cells(i, "B").Value).Name = .Cells(i, "D").Value
End If
Next i
End With
End Sub
Function WsExist(Nom$) As Boolean
On Error Resume Next
WsExist = Sheets(Nom).Index
End Function
Le nom de macro Worksheet_SelectionChange est réservé. C'est une macro événementielle qui est à placer uniquement dans les feuilles.
Ensuite pour aller de 5 à 86 autant passer par une boucle.
Enfin avant de renommer une feuille il faut vérifier si elle existe sinon il y a erreur. D'autant qu'une fois renommer elle n'existera plus...
Bonjour Patrice,
Un essai en PJ avec cette macro :
Code:
Sub RenommerOnglets()
With Worksheets("Onglets")
For i = 5 To 86
If WsExist(.Cells(i, "B")) Then
Sheets(.Cells(i, "B").Value).Name = .Cells(i, "D").Value
End If
Next i
End With
End Sub
Function WsExist(Nom$) As Boolean
On Error Resume Next
WsExist = Sheets(Nom).Index
End Function
Le nom de macro Worksheet_SelectionChange est réservé. C'est une macro événementielle qui est à placer uniquement dans les feuilles.
Ensuite pour aller de 5 à 86 autant passer par une boucle.
Enfin avant de renommer une feuille il faut vérifier si elle existe sinon il y a erreur. D'autant qu'une fois renommer elle n'existera plus avec l'ancienne liste.
Bonjour Patrice,
Un essai en PJ avec cette macro :
Code:
Sub RenommerOnglets()
With Worksheets("Onglets")
For i = 5 To 86
If WsExist(.Cells(i, "B")) Then
Sheets(.Cells(i, "B").Value).Name = .Cells(i, "D").Value
End If
Next i
End With
End Sub
Function WsExist(Nom$) As Boolean
On Error Resume Next
WsExist = Sheets(Nom).Index
End Function
Le nom de macro Worksheet_SelectionChange est réservé. C'est une macro événementielle qui est à placer uniquement dans les feuilles.
Ensuite pour aller de 5 à 86 autant passer par une boucle.
Enfin avant de renommer une feuille il faut vérifier si elle existe sinon il y a erreur. D'autant qu'une fois renommer elle n'existera plus avec l'ancienne liste.