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

  • Initiateur de la discussion Initiateur de la discussion Iwana
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

I

Iwana

Guest
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
 
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.
 
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)
 
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 !
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
221
Réponses
5
Affichages
609
Réponses
1
Affichages
772
L
Réponses
1
Affichages
1 K
L
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…