[VBA] Renommer une feuille créée ("texte" & variable)

Bonjour,

Je travaille sur un fichier dans lequel une nouvelle feuille doit être créer pour un "projet". On clique sur le bouton pour saisir des informations (ici simplifié). Je souhaite que la nouvelle feuille créée suit une structure du type : sh_XXX (sh pour sheet, XXX : nom de la feuille choisi). Or, lors de la création de la première feuille, un bug s'affiche. Lors de la 2ème création, la modification du .CodeName est effectuée. J'ai pas de connaissance en vba ce qui limite ma compréhension sur les limites de certaines fonctions.

Voici à quoi ressemble le code actuellement :

Private Sub CommandButton1_Click()

    'Masquer les opérations de la macro'
    Application.ScreenUpdating = False

    'On sélectionne la trame originale pour la copier
    sh_originale.Select
    sh_originale.copy after:=sh_originale

    'On renomme avec le texte écrit sur la feuille de saisie
    Set Target = v_feuille
    Application.Worksheets(4).Name = VBA.Left(Target, 10)

    'On renomme la feuille dans ses propriétés
    sh_originale1.[_CodeName] = "sh_" & v_feuille

    Application.ScreenUpdating = True

End Sub

En revoyant le résultat, j'ai l'impression que la nouvelle feuille créée ne se fait pas tout de suite car c'est au bout de la 2ème création que la modification s'effectue mais elle agit sur la première feuille créée.

Si vous avez une solution à mon problème ou bien une meilleure façon de programmer, je suis preneur.

Amicalement,

Bonjour,

issu de l'aide .CodeName:

Vous ne pouvez pas modifier cette propriété par programme lors de l’runtime.

Worksheet.CodeName

Pourquoi vouloir renommer le codename ?

Je souhaite renommer le codename pour une meilleure flexibilité de la gestion des feuilles si jamais une personne modifie le nom ou la position de la feuille par mégarde. Je pense qu'à l'avenir, on aura besoin de retraiter certaines de ces feuilles et en passant par le codename, je pense que ça sera plus simple.

D'accord, en passant par un autre programme en utilisant Call, ça risque de coincer aussi ?

EDIT :

Private Sub CommandButton1_Click()

'
' Feuille Macro
'

    'Masquer les opérations de la macro'
    Application.ScreenUpdating = False

    'On sélectionne la trame originale pour la copier
    sh_originale.Select
    sh_originale.copy after:=sh_originale

    'On renomme avec le texte écrit sur la feuille de saisie
    Static target As String
    target = v_feuille
    Application.Worksheets(4).Name = VBA.Left(target, 10)

    Call Test

    Application.ScreenUpdating = True

End Sub
Sub Test()

    'On renomme la feuille dans ses propriétés
    sh_originale1.[_CodeName] = "sh_" & target

End Sub

J'ai essayé avec la fonction Call et Static. Static n'a pas l'air de marcher. En utilisant Call, j'ai pas de problème d'erreur de code lors de la création de la feuille, le codename est modifiée mais la valeur target est nulle et du coup affiche seulement sh_

Effectivement je n'y avait pas pensé.

Tu n'était pas loin :

Sub Test()

    'On renomme la feuille dans ses propriétés
    sh_originale1.[_CodeName] = "sh_" & sh_originale1.Name

End Sub

Merci

Rechercher des sujets similaires à "vba renommer feuille creee texte variable"