IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Nom de feuille à partir d'une variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 4
    Par défaut Nom de feuille à partir d'une variable
    Bonjour.

    J'importe un grand nombre de fichiers textes dans les différentes feuilles d'un classeur (je les crée au fur et à mesure).
    Le nom du fichier texte "courant" se trouve dans la variable ".FoundFiles(i)".

    J'aurai voulu que le nom de la feuille courante soit le contenu de cette variable, sans le ".txt" si possible.
    Par exemple si mon fichier texte se nomme "581_1_11.txt", je voudrai que la feuille se nomme 581_1_11.

    J'ai fais pas mal de recherches infructueuses avant de poster

    Merci d'avance pour vos réponses.

  2. #2
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonjour,

    s'il s'agit juste d'éxtraire le nom tu peu utilise les fonctions Left et InStr par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim stYa As String
    stYa = "581_1_11.txt"
    ActiveSheet.Name = Left(stYa, InStr(1, stYa, ".") - 1)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 4
    Par défaut
    En fait voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Sub Import()
        Set oShell = CreateObject("Shell.Application")
        Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
        On Error Resume Next
        Set oFolderItem = oFolder.Items.Item
        With Application.FileSearch
            .NewSearch
            .LookIn = oFolderItem.Path
            .Filename = "*.txt"
            .SearchSubFolders = False
            .Execute
            For i = 1 To .FoundFiles.Count
                ActiveWorkbook.Worksheets.Add
                With ActiveSheet.QueryTables.Add(Connection:= _
                        "TEXT;" & .FoundFiles(i) _
                        , Destination:=Range("A1"))
     
                    ' À partir d'ici (début)
                    Dim stYa As String
                    stYa = "581_1_11.txt"
                    ActiveSheet.Name = Left(stYa, InStr(1, stYa, ".") - 1)
                    ' jusqu'ici (fin)
     
                    .FieldNames = True
                    .RowNumbers = False
                    .FillAdjacentFormulas = False
                    .PreserveFormatting = True
                    .RefreshOnFileOpen = False
                    .RefreshStyle = xlInsertDeleteCells
                    .SavePassword = False
                    .SaveData = True
                    .AdjustColumnWidth = True
                    .RefreshPeriod = 0
                    .TextFilePromptOnRefresh = False
                    .TextFilePlatform = 437
                    .TextFileStartRow = 4
                    .TextFileParseType = xlDelimited
                    .TextFileTextQualifier = xlTextQualifierDoubleQuote
                    .TextFileConsecutiveDelimiter = True
                    .TextFileTabDelimiter = False
                    .TextFileSemicolonDelimiter = False
                    .TextFileCommaDelimiter = False
                    .TextFileSpaceDelimiter = True
                    .TextFileColumnDataTypes = Array(9, 1, 1)
                    .TextFileDecimalSeparator = "."
                    .TextFileTrailingMinusNumbers = True
                    .Refresh BackgroundQuery:=False
                End With
            Next i
        End With
    End Sub
    J'ai inséré ton code (partie en gras) pour tester, mais ça ne fonctionne pas.

    En outre, comment faire pour que "stTa" prenne la valeur de ".FoundFiles(i)" ?

    Merci.

  4. #4
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Citation Envoyé par Iokanaan Voir le message
    ...
    En outre, comment faire pour que "stTa" prenne la valeur de ".FoundFiles(i)" ?

    Merci.
    ?


  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par JackOuYA Voir le message
    Si stYa = .FoundFiles(i), ça te donne le nom du fichier avec le chemin. Donc ton left est à changer. Mais comme tu ouvres les fichierS, Activesheet.name te donne son nom.txt.
    Tu peux tester ça qui te donne le nom du fichier texte sans extension
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                NomCourt = StrReverse(Split(StrReverse(.FoundFiles(i)), "\")(0))
                NomCourt = Left(NomCourt, Len(NomCourt) - 4)
    Si tu ouvres ton fichier, il y a plus simple une fois ouvert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activesheet.name = Left(ActiveWorkbook.name, len(ActiveWorkbook.name) - 4)

  6. #6
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    IoKanann avait oublié de me rappeler cela on peu aussi écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stYa = dir(.FoundFiles(i))

Discussions similaires

  1. Creer un nom de variable a partir d'une variable
    Par fuyo2004 dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/06/2009, 16h14
  2. Réponses: 3
    Dernier message: 23/04/2008, 14h00
  3. Réponses: 1
    Dernier message: 02/06/2006, 21h18
  4. Exécuter une requête à partir d'une variable
    Par Poussy-Puce dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/03/2006, 14h15
  5. Réponses: 3
    Dernier message: 03/11/2005, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo