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 ?
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
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.
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
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
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.
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
JpPradier
Bonjour anomymousA
Ben non, je n'ai pas d'explication qui me vient, mais il doit en exister une.
j-p
Bonjour anomymousA
Ben non, je n'ai pas d'explication qui me vient, mais il doit en exister une.
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!
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
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
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
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!
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) ?
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!
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
"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.
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
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
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.
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.