Fonction VBA

cs_marly Messages postés 4 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 28 février 2008 - 28 févr. 2008 à 02:08
yvan777 Messages postés 4 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 29 février 2008 - 29 févr. 2008 à 10:08
 Bonjour,
je souhaiterais faire une fonction qui récupère en entrée le nom d'un onglet existant et qui renomme cet onglet avec un nouveau nom (également passé en paramètres). Voici le code de ma fonction :

Function ChangerNom(AncienNom As String, NouveauNom As String) As String
    Sheets(AncienNom).Name = NouveauNom
    ChangerNom = NouveauNom
End Function

Je ne comprends pas pourquoi ca ne marche pas, pouvez vous m'aider?
Merci.

4 réponses

rbidocho Messages postés 41 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 15 septembre 2008
28 févr. 2008 à 05:42
Bonjour marly,

ça marche très bien chez moi avec

Function ChangerNom(AncienNom As String, NouveauNom As String) As String
    Sheets(AncienNom).Name = NouveauNom
    ChangerNom = NouveauNom
End Function

Sub test()
    xxx = ChangerNom("Feuil1", "ccc")
End Sub

la feuille nommée "Feuil1" est bien renomée en "ccc" et xxx contient aussi "ccc"

RB
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
28 févr. 2008 à 08:59
Salut,
(ca marche aussi nickel chez moi)

"pouvez vous m'aider"
Oui on peut t'aider mais il faut savoir que  "ca ne marche pas,"  ne nous aide pas du tout.

Est ce que tu as une erreur, ou bien aucun resultat mais pas d'erreur?

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_marly Messages postés 4 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 28 février 2008
28 févr. 2008 à 15:21
Oui ca marche comme ca effectivement mais j'aimerais lancer le renommage d'onglet en passant directement les paramètres (AncienNom et NouveauNom) à la macro (Est ce possible???) ou a la fonction que je lancerais depuis nimportequelle cellule. 

Car comme c'est codé plus haut, cela oblige a coder en dur soit les noms d'onglet a renommer, soit l'emplacement des 2 cellules dans lesquelles on va inscrire les 2 noms.
0
yvan777 Messages postés 4 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 29 février 2008
29 févr. 2008 à 10:08
Salut,
Au niveau de ta feuille faire un Worksheet_Change tel que :

Private Sub Worksheet_Change(ByVal Target As Range)
          Dim AncienNom As String
          Dim NouveauNom As String
          AncienNom = Range("$B$2").Value
          If Target.Address = "$C$2" Then
                    NouveauNom = Target.Value
                    Sheets(AncienNom).Name = NouveauNom
          End If
End Sub

Dans un module creer la fonction NomFeuille

Function NomFeuille()
          Application.Volatile
          NomFeuille = Application.Caller.Parent.Name
End Function

Dans mon exemple la cellule B2 comporte la formule suivante          =NomFeuille()
Dans la cellule C2 tu entres ton nouveau nom et voila.
0
Rejoignez-nous