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 !

10 réponses

1 2
Avatar
Rai
Bonjour,

Ya un bout de ton code que je trouve bizarre :
ActiveSheet.Name = ("mon")

Je vois pas ce que tu veux faire avec ("mon").

N'as-tu pas oublié quelquechose ?

Rai

"Rekam" a écrit dans le message de news:
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 !


Avatar
anomymousA
bonjour

ça fonctionne bien sur ma bécane (Win NT et Xcel 2000). J'obtiens bien la
feuille Active avec le nom "mon" mais sans les parenthèses ce qui est normal.
Vois pas le pb.

A+


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 !


Avatar
papou
Bonjour
Enlève les paranthèses si "mon" est le nouveau nom de la feuille :
ActiveSheet.Name = "mon"

Cordialement
Pascal

"Rai" a écrit dans le message de news:
%
Bonjour,

Ya un bout de ton code que je trouve bizarre :
ActiveSheet.Name = ("mon")

Je vois pas ce que tu veux faire avec ("mon").

N'as-tu pas oublié quelquechose ?

Rai

"Rekam" a écrit dans le message de news:

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 !


Avatar
Rekam
Salut

Ben moi non plus je vois pas le problème :| ...!
Si jamais "mon" est bien le nom de la feuille, et je ne comprend vraiment
pas pkoi ça fonctionne pas...

J'ai essayé dans un nouveau fichier et effectivement, ça fonctionne à
merveille (ce qui est normal, j'en conviens). Alors je ne sais pas ce qui ne
va pas dans le mien. Est-ce que le fait de renommer dans une Sub ou une
Function est différent ?

Merci encore

"anomymousA" wrote:

bonjour

ça fonctionne bien sur ma bécane (Win NT et Xcel 2000). J'obtiens bien la
feuille Active avec le nom "mon" mais sans les parenthèses ce qui est normal.
Vois pas le pb.

A+


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 !




Avatar
anomymousA
Re,

non.Il n'y a pas de différence. Ceci dit, je me pose la question en y
regardant bien. Tu as indiqué que tu te servais de cette fonction car elle
est appelée en modifiant une valeur de cellule. Quand tu dis que ca marche
aussi, qu'entends tu par là ?.
Par ailleurs, je n'ai en effet pas vu dans ta fonction l'instruction
Application.volatile utile seulement pour les fonctions personnalisées.

Volatile: Marque comme volatile une fonction personnalisée. Une fonction
volatile doit être recalculée chaque fois qu'un calcul est effectué dans une
cellule quelconque de la feuille de calcul. Une fonction non volatile n'est
recalculée qu'en cas de changement des variables d'entrée. Cette méthode est
sans effet si elle ne se trouve pas à l'intérieur d'une fonction définie par
l'utilisateur utilisée pour calculer une cellule de feuille de calcul.

Autrement, vérifie ton code pour voir si tu ne conserves pas une instruction
qui remettrait le nom de la feuille d'avant, fais un essai pas à pas en
enlevant application.screenupdatingúlse et essaye ce que Papou t'a dit car
à part ça , je ne vois pas.

A+, je suis intéréssé par savoir comment tu t'en es sorti.


Salut

Ben moi non plus je vois pas le problème :| ...!
Si jamais "mon" est bien le nom de la feuille, et je ne comprend vraiment
pas pkoi ça fonctionne pas...

J'ai essayé dans un nouveau fichier et effectivement, ça fonctionne à
merveille (ce qui est normal, j'en conviens). Alors je ne sais pas ce qui ne
va pas dans le mien. Est-ce que le fait de renommer dans une Sub ou une
Function est différent ?

Merci encore

"anomymousA" wrote:

bonjour

ça fonctionne bien sur ma bécane (Win NT et Xcel 2000). J'obtiens bien la
feuille Active avec le nom "mon" mais sans les parenthèses ce qui est normal.
Vois pas le pb.

A+


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 !






Avatar
Rekam
Yop,

Je commence maintenant le debug pas-à-pas. Je vais voir ce que je peux faire
avec Volatile. Je vous tiens au courant.

a+

"anomymousA" wrote:

Re,

non.Il n'y a pas de différence. Ceci dit, je me pose la question en y
regardant bien. Tu as indiqué que tu te servais de cette fonction car elle
est appelée en modifiant une valeur de cellule. Quand tu dis que ca marche
aussi, qu'entends tu par là ?.
Par ailleurs, je n'ai en effet pas vu dans ta fonction l'instruction
Application.volatile utile seulement pour les fonctions personnalisées.

Volatile: Marque comme volatile une fonction personnalisée. Une fonction
volatile doit être recalculée chaque fois qu'un calcul est effectué dans une
cellule quelconque de la feuille de calcul. Une fonction non volatile n'est
recalculée qu'en cas de changement des variables d'entrée. Cette méthode est
sans effet si elle ne se trouve pas à l'intérieur d'une fonction définie par
l'utilisateur utilisée pour calculer une cellule de feuille de calcul.

Autrement, vérifie ton code pour voir si tu ne conserves pas une instruction
qui remettrait le nom de la feuille d'avant, fais un essai pas à pas en
enlevant application.screenupdatingúlse et essaye ce que Papou t'a dit car
à part ça , je ne vois pas.

A+, je suis intéréssé par savoir comment tu t'en es sorti.


Salut

Ben moi non plus je vois pas le problème :| ...!
Si jamais "mon" est bien le nom de la feuille, et je ne comprend vraiment
pas pkoi ça fonctionne pas...

J'ai essayé dans un nouveau fichier et effectivement, ça fonctionne à
merveille (ce qui est normal, j'en conviens). Alors je ne sais pas ce qui ne
va pas dans le mien. Est-ce que le fait de renommer dans une Sub ou une
Function est différent ?

Merci encore

"anomymousA" wrote:

bonjour

ça fonctionne bien sur ma bécane (Win NT et Xcel 2000). J'obtiens bien la
feuille Active avec le nom "mon" mais sans les parenthèses ce qui est normal.
Vois pas le pb.

A+


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 !








Avatar
Rekam
Re salut,

J'ai simplifié le problème au maximum. Je vous envoie la totalité du code.
Au cas où, je l'ai mis dans un module.

Option Explicit

Public Function blu(test As Integer) As Integer
Dim base As Date
Dim jour As Date
Dim feuille, t

jour = Now()
base = jour
Application.Volatile
' On parcourt toutes les feuilles du classeur
For Each feuille In ThisWorkbook.Sheets
t = Split(feuille.Name, " ")
MsgBox (feuille.Name & "#" & t(0))
feuille.Name = t(0) & " " & Day(jour)
jour = jour + 1
Next
blu = 1
End Function

Les noms des feuilles sont toutes en 2 parties, séparées par un espace
("Tabelle 1", "Tabelle 2" et "Tabelle 3"). Le code garde seulement la 1ere
partie et remplace le numéro par le jour courant (dans la version, je veux
encore rajouter le nom du mois, mais ça c pas un problème).

le MsgBox affiche bien le nom complet de chaque feuille, suivi d'un dièse,
suivi de la 1ere partie du nom de la feuille. Donc il rentre bien dans la
fonction et il tourne bien dans la boucle for each...

Pkoi ça ne fonctionne pas ??
Merci !

Pour appeler la fonction, j'ai en A2 ceci :
=blu(A1)
et en A1, je rentre un chiffre au hasard


"anomymousA" wrote:

Re,

non.Il n'y a pas de différence. Ceci dit, je me pose la question en y
regardant bien. Tu as indiqué que tu te servais de cette fonction car elle
est appelée en modifiant une valeur de cellule. Quand tu dis que ca marche
aussi, qu'entends tu par là ?.
Par ailleurs, je n'ai en effet pas vu dans ta fonction l'instruction
Application.volatile utile seulement pour les fonctions personnalisées.

Volatile: Marque comme volatile une fonction personnalisée. Une fonction
volatile doit être recalculée chaque fois qu'un calcul est effectué dans une
cellule quelconque de la feuille de calcul. Une fonction non volatile n'est
recalculée qu'en cas de changement des variables d'entrée. Cette méthode est
sans effet si elle ne se trouve pas à l'intérieur d'une fonction définie par
l'utilisateur utilisée pour calculer une cellule de feuille de calcul.

Autrement, vérifie ton code pour voir si tu ne conserves pas une instruction
qui remettrait le nom de la feuille d'avant, fais un essai pas à pas en
enlevant application.screenupdatingúlse et essaye ce que Papou t'a dit car
à part ça , je ne vois pas.

A+, je suis intéréssé par savoir comment tu t'en es sorti.


Salut

Ben moi non plus je vois pas le problème :| ...!
Si jamais "mon" est bien le nom de la feuille, et je ne comprend vraiment
pas pkoi ça fonctionne pas...

J'ai essayé dans un nouveau fichier et effectivement, ça fonctionne à
merveille (ce qui est normal, j'en conviens). Alors je ne sais pas ce qui ne
va pas dans le mien. Est-ce que le fait de renommer dans une Sub ou une
Function est différent ?

Merci encore

"anomymousA" wrote:

bonjour

ça fonctionne bien sur ma bécane (Win NT et Xcel 2000). J'obtiens bien la
feuille Active avec le nom "mon" mais sans les parenthèses ce qui est normal.
Vois pas le pb.

A+


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 !








Avatar
JpPradier
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
Rekam
Salut,

Et si j'ai une fonction qui, juste avant de retourner sa valeur, fait appel
à une Sub, et que je met dans cette Sub le code, ça ne fonctionne pas non
plus? Pourtant je n'ai pas tellement le choix, comme fais-je alors... ?

"JpPradier" wrote:

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
Rekam
Ah, et puis j'y pense, j'arrive pas à faire appel à une Sub depuis une
cellule excel.
Si dans A2, je met =blu(A1) et que blu() est une fonction, c bon. Si c'est
une sub, c'est pas bon. Je suis au bout du rouleau, snif....

Merci pour votre aide précieuse

"JpPradier" wrote:

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




1 2