Nommage de feuille N (31 caractères)

Résolu/Fermé
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020 - 17 juin 2015 à 16:28
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020 - 9 juil. 2015 à 19:06
Bonjour,

J'ai un petit problème avec ce bout de maco.

J'importe une feuille d'un autre classeur puis la renomme avec le nom du classeur source. Et la numérote si le nom existe déjà.

Cela fonction, mais deux choses me dérange:

1/ Je voudrais que la numérotation commence à 2 et non à 1.
Logique, il existe déjà un premier, même s'il n'ai pas numéroté...

2/ La macro plante quand le nom d'origine dépasse les 31 caractères.
Ce n'est pas très beau, mais je voudrais ne garder que les 28 premiers caractères du nom d'origine pour laisser une marge pour l'espace et ne numéro (99 me semblant raisonnable).

Nom_Feuille = Left(Classeur_à_Copier, InStr(1, Classeur_à_Copier, ".") - 1)

For i = 1 To Sheets.Count
	If Left(Sheets(i).NAME, Len(Nom_Feuille)) = Nom_Feuille Then
		Numérotation = Numérotation + 1
	End If
Next

ActiveSheet.NAME = Nom_Feuille & " " & Numérotation

Lo.
A voir également:

2 réponses

tyranausor Messages postés 3545 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 1 avril 2022 2 031
3 juil. 2015 à 11:59
Bonjour, une question, numérotation c'est quoi? Pour VBA, ça ne veut rien dire!
Il faut que tu lui dises à quoi cela correspond! Pour nous, humain, on sait de quoi tu veux parler, mais la machine ne dispose pas de notre logique.

une aide : https://www.sfr.fr/fermeture-des-pages-perso.html
0
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020
9 juil. 2015 à 19:06
Bonjour,
Et merci, je vais regarder ça...

Pour ce qui est de la longueur du nom, même si c'est un peut "coupé à la sauvage", j'ai opté pour cela :

    Dim Nom_Onglet As String

        Nom_Feuille = Left(Classeur_à_Copier, InStr(1, Classeur_à_Copier, ".") - 1)
        Nom_Onglet = Left(Nom_Feuille, 28)

            For i = 1 To Sheets.Count
                If Left(Sheets(i).NAME, Len(Nom_Onglet)) = Nom_Onglet Then
                    compteur = compteur + 1
                End If
            Next

        ActiveSheet.NAME = Nom_Onglet & " " & compteur


Lo.
0