(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

Je l'avais fait, et ça m'avait généré une erreur aussi :
Erreur d'execution '13' : Icompatibilité de type
C'est la ligne If Fichier <> False Then qui est surlignée.

Je me demande si ce n'est pas dû au fait que f (enfin, Fichier maintenant) est déclarée comme String, qu'en dis-tu ?
 

Iwana

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

Je l'avais fait mais ça génère l'erreur suivante :
Erreur d'execution '13' : Icompatibilité de type
C'est la ligne If Fichier <> False Then qui est surlignée.

Je me demande si ce n'est pas dû au fait que Fichier est déclarée en String, qu'en penses-tu ?
 

Iwana

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

Re Pierrot93 (ou toute autre personne rejoignant la discussion),
Lors de mes tests, j'ai constaté que si, dans un même classeur, j'importe deux fois de suite le même fichier, mes données sont importées dans un nouveau classeur !
Cela signifie que ma macro ne parvient pas à gérer les onglets portant le même nom (sachant, comme tu le sais, que les feuilles sont nommées automatiquement).
Y a-t-il un moyen, soit de créer la feuille en mettant quelque chose comme (2) à la fin de son nom ET d'ouvrir une msg box qui dit "Attention, ce fichier a déjà été importé dans ce classeur", soit de bloquer l'import et d'afficher une msg box disant "Ce fichier a déjà été importé dans ce classeur. Merci de vérifier les feuilles existantes" ?

Merci d'avance.
 

Pierrot93

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

Re,

ca va devenir difficile à suivre... préférable de rester sur le même fil pour un même sujet....

Code:
Option Explicit
Sub test()
Dim Fichier As Variant, f As String
choix:
Fichier = Application.GetOpenFilename("Text file (*.txt), *.txt")
If VarType(Fichier) = vbBoolean Then
    MsgBox "action annulée": Exit Sub
Else
    f = Mid(Fichier, InStrRev(Fichier, "\") + 1, Len(Mid(Fichier, InStrRev(Fichier, "\") + 1)) - 4)
    If Not f Like "Test_*" Then MsgBox "fichier invalide...": GoTo choix
    If Not FeuilleExiste(f) Is Nothing Then MsgBox "Feuille existe déjà...": Exit Sub
    'tes actions
End If
End Sub
Function FeuilleExiste(f As String) As Worksheet
On Error Resume Next
Set FeuilleExiste = Worksheets(f)
End Function
 

Pierrot93

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

Re,

tu disais :
J'ai compris qu'au Else, tu dis que si le nom du fichier n'est pas de type gnagna, ça affiche tel message et ça renvoie au début de la procédure pour choisir un fichier compatible.
Mais de "If VarType(Fichier)..." au "Else", je n'ai pas compris le process...

on teste le type de donnée renvoyé, si booléen, valeur renvoyée "FALSE", veut dire que l'opération a été annulé par l'utilisateur... on sort de la procédure...
 

Iwana

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

(Désolée, comme c'était une question différente, j'ai pensé qu'il valait mieux créer un nouveau sujet. Je saurai pour la prochaine fois.)

Ca fonctionne à merveille et merci pour les explications, je ne me voyais pas recopier bêtement sans comprendre.
 

Pierrot93

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

Re,

Désolée, comme c'était une question différente, j'ai pensé qu'il valait mieux créer un nouveau sujet.

pas de problème, questions différentes, ok, mais tout de même intimement liées... et tu aurais risqué de "galéré" un peu par la suite sur l'enchainement des codes... en fait c'est surtout dans ton intérêt.

bonne soirée
@+
 

Iwana

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

Merci alors !

Aurais-tu une idée pour ceci (posté à peu près en même temps) ?
Re Pierrot93 (ou toute autre personne rejoignant la discussion),
Lors de mes tests, j'ai constaté que si, dans un même classeur, j'importe deux fois de suite le même fichier, mes données sont importées dans un nouveau classeur !
Cela signifie que ma macro ne parvient pas à gérer les onglets portant le même nom (sachant, comme tu le sais, que les feuilles sont nommées automatiquement).
Y a-t-il un moyen, soit de créer la feuille en mettant quelque chose comme (2) à la fin de son nom ET d'ouvrir une msg box qui dit "Attention, ce fichier a déjà été importé dans ce classeur", soit de bloquer l'import et d'afficher une msg box disant "Ce fichier a déjà été importé dans ce classeur. Merci de vérifier les feuilles existantes" ?

Merci d'avance.
 

Iwana

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

Bonjour à tous !

Pierrot m'a indiqué comment nommer ma feuille d'après mon fichier importé, quelqu'un saurait'il s'il est possible d'intégrer au nom de la feuille un mot récurrent ?
Je m'explique : je souhaite que chaque feuille est un nom du type "Tableau_nomdufichierimporté". J'ai tenté de la bidouille pour incruster le mot "Tableau" dans le code mais échec cuisant !

Merci d'avance everybody.

Iwana
 

Pierrot93

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

Bonjour,

mets peut être le code en question, parce que là, dans tous les code donnés.... et les changements faits... En vba, préférable de savoir dès le départ ce que l'on veut, parce qu'après, toujours plus dur de modifier...

bon après midi
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 469
Messages
2 088 696
Membres
103 924
dernier inscrit
Patrick c