IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Renommer un onglet de feuille de calcul depuis une formule dans une autre feuille. [XL-365]


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chômeur
    Inscrit en
    Janvier 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chômeur

    Informations forums :
    Inscription : Janvier 2021
    Messages : 5
    Par défaut Renommer un onglet de feuille de calcul depuis une formule dans une autre feuille.
    Bonjour,

    J'ai trouvé une formule sur internet qui permet d'afficher le nom de l'onglet actif dans une cellule.
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;50)

    Je cherche une formule pour renommer un onglet depuis une autre Feuille de calcul.
    Dans "Feuil1" j'ai une chaîne de caractères dans la cellule G12 :"SINO 40 w13 - LD COOP"
    et j'aimerais renommer la "Feuil2" avec cette chaîne.

    Est-ce qu'il est possible de le faire avec une formule sans macro et sans vba?
    Car je ne connais pas ces deux derniers.

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Une formule ne peut renvoyer un résultat que sur la cellule qu'elle occupe et en aucun cas sur une autre cellule et ne peut, bien sûr, pas modifier le nom d'une autre feuille. Ce que vous voulez ne peut s'obtenir qu'avec l'aide d'une macro écrite en VBA.

    Vous dites:
    Est-ce qu'il est possible de le faire avec une formule sans macro et sans vba?
    Car je ne connais pas ces deux derniers.
    Question: Quel est l'intérêt de vouloir connaître le contenu d'une macro, connaissez-vous tout ce qui se passe dans excel lorsque vous écrivez une formule, Non! et pourtant c'est bien un programme qui travaille en arrière plan.
    Si on doit passer par une macro, comment voulez-vous qu'elle soit déclenchée, soit en cliquant sur un bouton, soit une macro évènementielle qui réagit après le remplissage d'une cellule, dans votre cas le remplissage de G12?

    Cdlt

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chômeur
    Inscrit en
    Janvier 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chômeur

    Informations forums :
    Inscription : Janvier 2021
    Messages : 5
    Par défaut
    Bonjour,

    Je vous remercie ARTURO83 de votre retour cela m'évite de continuer à chercher dans une mauvaise direction.

    Je ne sais pas utiliser le VBA d'Excel ou concevoir des macros et encore moins les déclencher.
    Je vais regarder de ce côté là voir si je trouve quelque chose qui me convienne.

    Cordialement

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Voici un petit exemple
    Pièce jointe 588143

    le code utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Renommer_Feuill2()
        If Sheets("Feuil1").Range("G12") = "" Then Exit Sub 'si G12 est vide on sort du programme
        Worksheets(2).Name = Sheets("Feuil1").Range("G12").Value 'sinon, on affetce la valeur de G12 à la feuille 2
    End Sub
    allez sur la feuille 1, la cellule G12 étant remplie, cliquez sur le bouton, la feuille 2 est renommée avec le contenu de la cellule G12 de la feuille 1

    Pour accéder au code, faire ALT + F11

    Cdlt

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Chômeur
    Inscrit en
    Janvier 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chômeur

    Informations forums :
    Inscription : Janvier 2021
    Messages : 5
    Par défaut
    Super merci ARTURO83

    Cordialement

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Perso, j'éviterais le EXIT SUB qui n'est jamais utile nulle part, mais encore moins ici, si je puis dire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        If Sheets("Feuil1").Range("G12") <> "" Then
        Worksheets(2).Name = Sheets("Feuil1").Range("G12").Value
    Attention à ce que la cellule ne contienne pas un des caractères suivants : / \ ? * [ ] et qu'elle ne contienne pas plus de 31 caractères. Attention aussi que le nom ne soit pas déjà attribué à une feuille.


    Si on veut éviter le bug, on peut utiliser une fonction générique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Sub Test()
      Select Case RenameSheet(Worksheets("Pierre"), Feuil1.Range("g12"))
        Case 0
          MsgBox "Feuille renommée"
        Case 1
          MsgBox "Nom trop long"
        Case 2
          MsgBox "Caractères interdits"
        Case 2
          MsgBox "Non déjà attribué"
      End Select
    End Sub
     
    '''
    'Result   0 si ok, 1 si trop long, 2 si caractère interdit, 2 si déjà attribué
    '''
    Function RenameSheet(sh As Object, NewName As String) As Long
      Dim t
      Dim i As Long
      Dim Found As Boolean
     
      If sh.Name <> NewName Then
        If Len(NewName) < 32 Then
          t = VBA.Array("/", "\", "*", "?", "[", "]")
          Do While i < 6 And Not Found
            Found = InStr(1, NewName, t(i)) > 0
            i = i + 1
          Loop
          If Not Found Then
            Found = False
            i = 1
            Do While i <= sh.Parent.Sheets.Count And Not Found
              Found = StrComp(sh.Parent.Sheets(i).Name, NewName, vbTextCompare) = 0
              i = i + 1
            Loop
            If Not Found Then
              sh.Name = NewName
            Else
              RenameSheet = 3
            End If
          Else
            RenameSheet = 2
          End If
        Else
          RenameSheet = 1
        End If
      End If
    End Function

    Plutôt qu'utiliser G12, je passerais par des plages nommées ou des tableaux structurés, de manière à mettre le moins possible de valeurs "métier" dans le code en dur (hard coding).
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 13/03/2014, 20h01
  2. Réponses: 2
    Dernier message: 06/09/2013, 09h39
  3. calcul depuis une requete
    Par berti dans le forum Langage
    Réponses: 5
    Dernier message: 16/05/2008, 10h10
  4. Réponses: 2
    Dernier message: 25/12/2007, 17h19
  5. [Calcul] Bug lors d'un calcul depuis une saisie TextBox.
    Par telodo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/09/2007, 01h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo