Nommage de feuille N (31 caractères)

Résolu
dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention   -  
dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention   -
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.

2 réponses

  1. tyranausor Messages postés 3501 Date d'inscription   Statut Membre Dernière intervention   2 060
     
    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
  2. dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention  
     
    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