Renommer une Feuille à nom variable

Bonjour,

je dois modifier le fichier pour faire le relevé d'eau de ma copropriété (56 CP)

il comprote 1 feuille de résumé qui contien les infos des CP

suivi de 56 feuilles à envoyer au CP concerné

depuis la feuille 1, je renome les 56 feuilles suivantes

la feuille persso de Mr TOTO se nome TOTO

et doit se renomé TATA le jour ou Mr TOTO vent son appart à Mme TATA ...

(le but final etant de vérouiller le fichier une fois tout automatisé

afin que des doigts inexpérimentés ne puissent faire d'érreurs)

Private Sub Worksheet_Change(ByVal Target As Range)
For i = 10 To 65 'i = nom de feuille commences à la 10ème ligne et fini a la 65éme
    a = i - 8  ' la 1ere feuille est la feuille 2 (10-8=2)
    nom = Cells(i, 5) 'le nom de feuille est à la ligne i, 4ème colonne
            If Not Intersect(Target, Cells(i, 5)) Is Nothing Then
              Sheets(a).Name = nom
            End If
Next
End Sub

tout vas bien tant que je ne change pas l'ordre des feuille

j'ai tester :

Sheets(a).Name = nom

et

Worksheets(a).Name = nom

qui fonctionent tout les deux de la même manière

une seconde solution est pourtant possible

    Private Sub Worksheet_Change(ByVal Target As Range)

Colone = 5

    If Not Intersect(Target, Range("e10")) Is Nothing Then
    Feuil1.Name = Target
    End If

    If Not Intersect(Target, Range("e11")) Is Nothing Then
    Feuil2.Name = Target
    End If

    If Not Intersect(Target, Range("e12")) Is Nothing Then
    Feuil3.Name = Target
    End If

    If Not Intersect(Target, Range("E13")) Is Nothing Then
    Feuil4.Name = Target
    End If

mais je ne parvien pas a la mettre dans une boucle For/Next

(une boucle pour 2 raisons)

(1 c plus rapide)

(2 c plus simple a modifier)

mon souci est que je ne sais pas écrir qqc dans le style :

Feuil(a).Name = Target

Feuil"a".Name = Target

Feuil[a].Name = Target

Feuil{a}.Name = Target

Merci de votre aide ...

49eau1.zip (32.58 Ko)

Bonjour

Pourquoi joindre un fichier :

Sur la charte du Forum

https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html

Point 6 : • Pensez à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de vous faire aider (taille limite : 300ko, n'hésitez pas à compresser vos fichiers).

Cordialement

oui au détaille prés que le fichier dépasse la taille autorisé

et surtout, qu'il contien des données sensible sur les CP concerné

Bonjour,

une proposition.

Pour un déménagement tous les 3 ans ça vaut vraiment le coup ?

eric

100eau1.zip (31.42 Ko)

Bonjour Eric,

Merci pour ta solution

elle fonctione sur mon fichier final

ce n'est pas mais pas du tout ce à quoi je m'attendais

je penssais trouvé une ligne de renomage toute simple avec ma variable

mon idée première étant d'appelé les feuilles avec leurs nom dit "" interne "" (Feuiln avec n = 1 à 56)

la seule chose qui me gene est que je ne comprend pas ton code :-/

mais bon ....

reste maintenant à protégé les onglets car si on modifi le nom à la main la macro ne fonctione plus

en revanche, chapeau pour les gardes fous en cas d'erreur

encore merci @toi

Le principe :

si tu modifies un nom sur la feuille j'enregistre ce nom dans tmp et j'annule ta modification pour récupérer le nom actuel.

Après les contrôles que tu as vu la feuille est renommée si c'est faisable et ta modif rerstaurée.

Bien sûr si tu renommes directement la feuille on ne le voit pas. C'est sans doute ce que tu devrait garder comme fonctionnement vu le peu de fois où cette action va arriver.

eric

effectivement, je viens de relir le code à la lumière de ce que tu m'a dis

on vas dir que j'en entrevois les grandes lignes

mais que ca dépasse de pas mal mes compétances

il y a en effect de fortes chances pour que cela reste tel quel

mais ... ne sait on jamais ...

si quelqu'un me trouvais la solution a la quelle je pence

je vais donc pacienter un peut avant de mettre ce sujet résolu

en attendan je vais chercher commen protégé les onglets cotre le renomage direct

je crois avoir déja vu ca quelque part sur le net

encore merci pour ta participarion

le schmilblik avance ...

Toi même tu as dit

tout vas bien tant que je ne change pas l'ordre des feuille

C'est pourquoi j'ai fait autrement. Sinon tu le fais directement en te basant sur l'index de la feuille.

sauf si t utilise le nom interne des feuilles

If Not Intersect(Target, Range("D10")) Is Nothing Then

Feuil1.Name = Target

End If

j'ai essayer ca fonctione

sauf que c'est tres long à écrire

et dificilement modifiable en séri

(en cas de modif de la feuille source )

d'ou mon idée d'utiliser une variable

Private Sub Worksheet_Change(ByVal Target As Range)

For i = 10 To 65 'i = nom de feuille commences à la 10ème ligne et fini a la 65éme

a = i - 8 ' la 1ere feuille est la feuille 2 (10-8=2)

nom = Cells(i, 5) 'le nom de feuille est à la ligne i, 4ème colonne

If Not Intersect(Target, Cells(i, 5)) Is Nothing Then

Sheets(a).Name = nom

Feuil(a).Name = nom

End If

Next

End Sub


je me répond a moi même

en voyant les 2 codes l'un audessu de l'autre,

il m'est apparu une simplification évidente :

Private Sub Worksheet_Change(ByVal Target As Range)

For i = 10 To 65 'i = nom de feuille commences à la 10ème ligne et fini a la 65éme

a = i - 8 ' la 1ere feuille est la feuille 2 (10-8=2)

nom = Cells(i, 5) 'le nom de feuille est à la ligne i, 4ème colonne

If Not Intersect(Target, Cells(i, 5)) Is Nothing Then

Feuil(a).Name = nom Target

End If

Next

Rechercher des sujets similaires à "renommer feuille nom variable"