Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

(VBA) Nommer feuille automatiquement d'après nom de fichier

Iwana

XLDnaute Nouveau
Bonjour à tous,

J'ai parcouru le forum à la recherche d'une solution, sans succès.

Ma macro permet d'importer un fichier texte et d'afficher les données dans un nouvel onglet.
Quel code dois-je insérer pour qu'à chaque import de fichier la nouvelle feuille créée prenne le nom du fichier importé ?

Exemple : nom de fichier "pifpafpouf.txt"
Je souhaite que l'onglet prenne ce nom.

Merci d'avance !

Iwana
 

Iwana

XLDnaute Nouveau
Re : (VBA) Nommer feuille automatiquement d'après nom de fichier

Bonjour Pierrot,

Malheureusement, les besoins relatifs à cette macro évoluent quasi quotidiennement, et effectivement ça me complique la tâche.

Voici le bout de code en question :
Code:
If Fichier <> "Faux" Then
        Set wk = Workbooks.Open(Fichier)
        With wk
            With .ActiveSheet.UsedRange
                pc = .Cells(1, 1).Address
                .Copy
            End With
            
            Set wk = ThisWorkbook
            Set ws = wk.Worksheets.Add(after:=wk.Worksheets(wk.Worksheets.Count))
            ws.Name = Mid(Fichier, InStrRev(Fichier, "\") + 1, Len(Mid(Fichier, InStrRev(Fichier, "\") + 1)) - 4)
            
            Set wk = ThisWorkbook
            wk.ActiveSheet.Range(pc).PasteSpecial xlValues
            Application.CutCopyMode = False
            .Close False
        End With
    End If

J'ai tenté d'insérer mon mot récurrent ("tableau" donc) au niveau du ws.Name, sans succès.
 

Pierrot93

XLDnaute Barbatruc
Re : (VBA) Nommer feuille automatiquement d'après nom de fichier

Re,

essaye comme ceci :
Code:
ws.Name =  "tableau " & Mid(Fichier, InStrRev(Fichier, "\") + 1, Len(Mid(Fichier, InStrRev(Fichier, "\") + 1)) - 4)
 

Iwana

XLDnaute Nouveau
Re : (VBA) Nommer feuille automatiquement d'après nom de fichier

Bien entendu, ça fonctionne impeccable, et bien entendu, j'ai tout essayé (les guillemets, tout ça tout ça) mais pas le "&".

Encore mille merci Pierrot !
 

Iwana

XLDnaute Nouveau
Re : (VBA) Nommer feuille automatiquement d'après nom de fichier

Bonjour tout le monde !

Toujours dans la même macro :
J'ai deux sub, une qui permet d'importer des données d'un fichier texte, une deuxième qui met en page.
Ma première sub, afin de limiter les erreurs j'ai mis des "sécurités",
notamment au niveau du type de fichier (txt en l'occurrence) qui est imposé à l'utilisateur.
Seulement, dans mon type de fichier j'ai encore deux "sous-types" que l'on ne peut différencier que si l'on ouvre le fichier.
Est-il possible de demander "si le fichier contient le mot "plouf", alors supprime la feuille et retourne à la page d'accueil avec la boîte de dialogue pour le user choisisse un autre fichier." ?
Si oui, où cela doit-il être placé dans mon code ?

Voici mon bout de code, et en gras ma tentative :
Code:
 ' Import des données dans une nouvelle feuille
    If Fichier <> "Faux" Then
        Set wk = Workbooks.Open(Fichier)
        With wk
            With .ActiveSheet.UsedRange
                pc = .Cells(1, 1).Address
                .Copy
            End With
            
            Set wk = ThisWorkbook
            Set ws = wk.Worksheets.Add(after:=wk.Worksheets("Accueil"))
            ws.Name = "Worklist_" & Mid(Fichier, InStrRev(Fichier, "\") + 1, Len(Mid(Fichier, InStrRev(Fichier, "\") + 1)) - 4)
            
            Set wk = ThisWorkbook
            wk.ActiveSheet.Range(pc).PasteSpecial xlValues
            Application.CutCopyMode = False
            .Close False
        End With
    End If
    wk.ActiveSheet.Range("A1").Select
    Application.ScreenUpdating = True

   ' ci-dessous ce que j'ai ajouté
    Columns("A:A").Select
    For i = Range("A65536").End(xlUp).Row To 1 Step -1
            If UCase(Cells(i, 2).Value) Like UCase("*MRV*") Then ActiveSheet.Delete: GoTo choix
    Next i

fin:

End Sub

Merci d'avance !

Iwana
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…