OVH Cloud OVH Cloud

Renommer un onglet

18 réponses
Avatar
Rekam
Bonjour à la foule de tout le monde !

Je cherche à résoudre un problème bizarre (comme la plupart des problèmes,
d'ailleurs). Je voudrais renommer un onglet (une feuille) en passant par VBA
mais impossible, ça veut pas...

Mon code ressemble à ça :
Public Function get_lundi_j(jour As Date, langue As String) As String
Dim semaine, nums As Integer
Dim mois, annee As String
Dim dimanche As Date

Application.ScreenUpdating = False
ActiveSheet.Name = ("mon")
'... Ensuite, plein d'autres lignes de code
End Function

Je n'ai pas d'erreurs dans mon code, si jamais. Il fonctionne très bien.
Sauf que le renommage de l'onglet ne marche pas.

Cette fonction est appelée en modifiant la valeur de la cellule F8 (ça
marche aussi ça).

Y'a-t-il une raison pour quelque chose qui est senser fonctionner ne
fonctionne pas ?

Merci d'avance !

8 réponses

1 2
Avatar
anomymousA
Bonjour,

En fait ce que tu dis mérite qu'on s'y attarde plus longuement.
En effet, l'appel à une fonction depuis la feuille Excel ne permet pas de
changer le nom des feuilles par l'intermédiaire d'une fonction. Par contre si
depuis une Sub, on appelle la fonction, le nom des feuilles peut être changé
par la fonction.
Cette subtile différence m'interpelle sur ses raisons fondamentales.
Aurais-tu une explication ?

Merci


Bonjour Rekam

Ca ne marche pas parce qu'une fonction ne peut pas modifier une feuille ou une cellule. Une fonction
fait un traitement de données et renvoie éventuellement une valeur après. Pour ton problème, tu dois
passer par une Sub.

j-p




Avatar
JpPradier
Tu peux passer par une événementielle. Si ton nom est en cellule A1, comment change-t-il ? à la main
ou via une formule ?
Selon la réponse, tu peux passer par Worksheet_change ou Worksheet_calculate.

j-p
Avatar
JpPradier
Bonjour anomymousA

Ben non, je n'ai pas d'explication qui me vient, mais il doit en exister une.

j-p
Avatar
Rekam
Il se change à la main, tout simplement. Donc j'imagine qu'il faut utiliser
Worksheet_change. J'espère pouvoir y arriver un jour ;) en tout cas merci!
Avatar
JpPradier
Alors avec ça :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a1")) Is Nothing Then
ActiveSheet.Name=Range("a1").value
end if
End Sub

j-p
Avatar
Rekam
Salut
et merci, je constate que ça fonctionne. Par contre, je n'arrive pas à
l'adapter à mon problème. En effet, mon but, c'est que le nom de toutes les
feuilles (sauf la 1ere) changent, ceci après avoir modifié manuellement la
valeur de A1 dans la 1ere feuille.

Avec ce système, je dois faire comment ? Mettre ce bout de code dans toutes
mes feuilles (+ de 20) ? Ou alors y'a-t-il un autre moyen (un module, ou
autre) ?

Merci!
Avatar
JpPradier
"Rekam" a écrit
Avec ce système, je dois faire comment ? Mettre ce bout de code dans toutes
mes feuilles (+ de 20) ? Ou alors y'a-t-il un autre moyen (un module, ou
autre) ?


Oui, c'est le plus simple. Ca va te prendre 2mn en copiant collant.

j-p

Avatar
Rekam
VOILA, C BON !!!!! :)

Merci beaucoup, maintenant tout baigne, YAHOOOO!

a+ !

"JpPradier" wrote:


"Rekam" a écrit
Avec ce système, je dois faire comment ? Mettre ce bout de code dans toutes
mes feuilles (+ de 20) ? Ou alors y'a-t-il un autre moyen (un module, ou
autre) ?


Oui, c'est le plus simple. Ca va te prendre 2mn en copiant collant.

j-p





1 2