Nom onglet trop long

bonjour,

j'importe des onglets grace a cette macro le probleme est que je les nommes comme le fichier dont ils prviennent.

parfois le nom est trop long et cela plante

j'ai essayer un début de piste If WbkB(Len(Fichier.Value) > 32) Then

mais cela dépasse mes compétences , une idée

cordialement

Dim chemin As String, Fichier As String

Dim WbkA As String ' Nom de ce fichier

Dim WbkB As String ' Nom du fichier ouvert

Application.ScreenUpdating = False

WbkA = ThisWorkbook.Name

chemin = Sheets("a").Range("A1").Value"

Fichier = Dir(chemin & "*.xls") ' 1er fichier 'Fichier = Dir(chemin & "*.xl*")

Do While (Len(Fichier) > 0)

If Mid(Fichier, InStrRev(Fichier, ".")) = ".xls" Then

If Fichier <> ThisWorkbook.Name Then

Workbooks.Open chemin & Fichier

WbkB = ActiveWorkbook.Name

Workbooks(WbkB).Sheets(1).Copy before:=Workbooks(WbkA).Sheets(1)

' On Error Resume Next

If Err.Number = 0 Then

ActiveSheet.Name = WbkB

Else

ActiveSheet.Name = WbkB

End If

Workbooks(WbkB).Close savechanges:=False

'ActiveWorkbook.Close

End If

End If

Fichier = Dir() ' fichier suivant

Loop

Bonjour,

Il me semble que c'est 31 caractères max.

Un exemple qui prend les 10 premiers caractères + "_" + les 17 derniers + "_" + un nombre aléatoire de 1 à 99 (pour limiter les risque de doublons de nom).

Tu peux broder à partir de ça, si tu ne veux que le début ou la fin selon comment sont tes noms.

nomF = ActiveWorkbook.Name
If Len(nomF) > 31 Then nomF = Left(nomF, 10) & "_" & Right(nomF, 17) & "_" & Int(Rnd() * 100 + 1)
ActiveSheet.Name = nomF

eric

je peine a l'adapter,

un petit coup de main serait bienvenu

merci

oui ?

et bien pose une question.

eric

je suis un peu perdu sur l'endroit ou placer cette partie de code

la démarche sur le nb de caractere me parait celle qu'il faut mais je rame ...

merci


a priori si je le place ici c'est a la fin du code que cela plante

il ne referme pas le classeur d'où cette feuille est importé

If Len(WbkB) > 31 Then WbkB = Left(WbkB, 10) '& "_" & Right(nomF, 17) & "_" & Int(Rnd() * 100 + 1)

ActiveSheet.Name = WbkB

If Err.Number = 0 Then

ActiveSheet.Name = WbkB

Else

ActiveSheet.Name = WbkB

End If

Workbooks(WbkB).Close savechanges:=False

End If

Bonjour,

a priori si je le place ici c'est a la fin du code que cela plante

Ca plante ne veut rien dire.

Quelle ligne ? Quel message ?

il ne referme pas le classeur d'où cette feuille est importé

Ce n'était pas la question.

Tes feuilles sont-elles renommées correctement ?

Si oui, tu peux mettre en résolu et démarrer une autre question.

eric

oui les onglets sont bien nommé , je remet un autre sujet pour la fermeture classeur

merci

Rechercher des sujets similaires à "nom onglet trop long"