Problème, nom de fichiers trop long

Bonjour je suis en train de travailler sur une macro.

Elle me permet de transformer chacun des dossiers que je sélectionne en onglets dans ma page active.

Chaque onglet porte le nom de chaque fichier excel, Dossier avec feuille 1, feuille 2, feuille 3 devient, onglet nommée "feuille 1", onglets "feuille 2"...

Tout fonctionne bien sauf que le nom des feuilles dépassent 31 caractères.

Je vous mets mon travail en pièce jointe.

J'ai lu sur un forum que l'on pouvait aller jusqu'à 255 caractères

Si quelqu'un pouvait m'aider par des conseils ou en adaptant directement le fichier, ça m'aiderait beaucoup.

6ajoutfeuille.xlsm (67.09 Ko)

Bonjour,

il y a beaucoup de chose qui font qu'un nom d'onglet n'est pas valide...

Voici une petite fonction qui teste la validité d'un nom :

Function vérif_validitée_nom(le_nom As String) As Boolean
    vérif_validitée_nom = True
    Dim NbCar As Long
    NbCar = Len(le_nom)
    If NbCar > 28 Then
        vérif_validitée_nom = False
        Exit Function
    End If
    Dim CPT As Long
    Dim Carac As String
    For CPT = 1 To NbCar
        Carac = Mid(le_nom, CPT, 1)
        If InStr("[]/?*:", Carac) <> 0 Then
            vérif_validitée_nom = False
            Exit For
        End If
    Next CPT
End Function

Comme vous pouvez le voir c'est 28 caractères maximum, et une série de caractères interdis...

Cette fonction renvoie VRAI si le nom est compatible avec Excel et FAUX dans le cas contraire...

@ bientôt

LouReeD

Bonjour,

Ton fichier revisité avec une fonction personnalisée pour vérifier et modifier le nom de feuille.

Pour info, 31 est bien le nombre max de caractères pour le nom d'une feuille.

Cdlt.

9ajoutfeuille.xlsm (91.50 Ko)
Sub ouvreFichiers()
Dim NomFichier As Variant, Filtre As String, cmpt As Long, fich() As String
Dim wb As Workbook, nom As String
    Filtre = "Tous les fichiers(*.xl*),*.xl*"
    NomFichier = Application.GetOpenFilename(Filtre, 1, "Ouvrir", , True)
    If IsArray(NomFichier) Then
        Application.ScreenUpdating = False
        For cmpt = LBound(NomFichier) To UBound(NomFichier)
            Set wb = Workbooks.Open(NomFichier(cmpt))
            nom = Mid(wb.Name, 1, InStrRev(wb.Name, ".") - 1)
            nom = RenameWorksheet(nom)
            With ThisWorkbook
                .Activate
                wb.Sheets(1).Copy After:=.Sheets(.Sheets.Count)
                .Sheets(.Sheets.Count).Name = nom
            End With
            wb.Close
        Next cmpt
        ThisWorkbook.Sheets(1).Activate
    End If
End Sub
Public Function RenameWorksheet(sText As String) As String
Dim x As String, newText As String
Dim I As Long
    newText = ""
    For I = 1 To Len(sText)
        'x = Replace(sText, " ", "_")
        x = Mid(sText, I, 1)
        If InStr("/?,;*&:[]", x) > 0 Then
            newText = newText & "_"
        Else
            newText = newText & x
        End If
    Next I
    RenameWorksheet = Left(newText, 31)
End Function

Bonsoir,

en effet... Oups... c'est une fonction que j'ai mis en place sur une de mes applications où j'ajoute un "terme" générique, du coup elle prend en compte que 28 caractères...

Et en effet il est judicieux de modifier par un caractère générique les caractères non acceptés !

@ bientôt

LouReeD

Rechercher des sujets similaires à "probleme nom fichiers trop long"