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 :

Comment séparer un nom de fichier en plusieurs cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Par défaut Comment séparer un nom de fichier en plusieurs cellules
    Bonjour,

    Je suis nouveau sur ce groupe et novice en la matière.

    J'aimerais pouvoir séparer ce genre de nom de ficher fichier en plusieurs cellule (20181127_bat_site_salle.xls)

    J'ai réussi à récupérer cette liste depuis un lecteur réseau mais là je sèche. Je voudrais séparer chaque _ pour les mettre dans des cellules différentes.

    pouvez-vous m'aider ?

    Merci.

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bienvenue au forum
    code à tester sur une copie de ton travail ; aussi débutant et autodidacte
    hypothèse : donnée figure en colonne A de la feuil1

    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
    Sub test()
     
        Dim Tableau
        Dim i As Integer
        Dim j As Long
        With Sheets("feuil1")
        j = .Range("A" & Rows.Count).End(xlUp).Row
        For j = 2 To j
        Tableau = Split(.Cells(j, 1), "_")
        For i = 0 To UBound(Tableau)
            Debug.Print Tableau(i)
            Cells(j, i + 2) = Tableau(i)
        Next i
        Next j
        End With
     
    End Sub

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Fred et bienvenu sur ce Forum, Bonjour Bennasr,

    Bennasr,

    ?

    Si l'on souhaite la décomposition du nom de classeur à partir de A1 puis dans les colonnes suivantes;, j'écrirais

    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
    Option Explicit
     
    Sub test()
     
        Dim Tableau
        Dim i As Byte
     
        Dim lachaine As String
     
        With Sheets("feuil1")
                'Adapter xls ou xlsm
                lachaine = Replace(ThisWorkbook.Name, ".xlsm", "")
                Tableau = Split(lachaine, "_")
                For i = LBound(Tableau) To UBound(Tableau)
                    .Cells(1, i + 1) = Tableau(i)
                Next i
        End With
     
        Erase Tableau
     
    End Sub

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir MarcelG
    la demande de fred
    J'aimerais pouvoir séparer ce genre de nom de ficher fichier en plusieurs cellule (20181127_bat_site_salle.xls)
    J'ai réussi à récupérer cette liste depuis un lecteur réseau mais là je sèche. Je voudrais séparer chaque _ pour les mettre dans des cellules différentes.
    je crois que la liste des nom de fichier sont déjà dans une colonne...peut être que cette partie du code que vous avez fournie nécessite une révision
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lachaine = Replace(ThisWorkbook.Name, ".xlsm", "")
    Alors si les noms sont déjà récupérés dans une colonne alors nous avons besoins de deux variable pour parcourir toutes les lignes et aussi toutes les parties de la chaine si n'ont pas la même taille.

    ça fonctionne sans aucun soucis
    BONNE SOIREE

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bennasr,

    OK pour les colonnes.
    Mon code était à adapter, comme souvent.

    Après la ligne
    S'il te plaît, pourrais-tu placer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Débug.Print "la valeur de j est " & j
    et retourner le résultat reporté dans la fenêtre Exécution.
    Merci
    Il y a quelque chose qui m'échappe.

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    si le demandeur veux se débarrasser du '.xls' ; comme recommandé par Marcel ; et pour enregistrer comme titre de colonne "Partie1, 2 ... ainsi de suite :
    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
    Sub test()
     
        Dim Tableau
        Dim i As Integer
        Dim j As Long
        With Sheets("feuil1")
        j = .Range("A" & Rows.Count).End(xlUp).Row
        For j = 2 To j
        .Cells(j, 1) = Replace(.Cells(j, 1), ".xls", "")
        Tableau = Split(.Cells(j, 1), "_")
        For i = 0 To UBound(Tableau)
            Debug.Print Tableau(i)
            .Cells(j, i + 2) = Tableau(i)
            .Cells(1, i + 2) = ("Partie  " & i + 1)
        Next i
        Next j
        End With
     
    End Sub

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Relire ma première réponse.
    Un split ne ferait qu'ajouter lenteur alors que l'outil convertir de Excel est très rapide et peut être appliqué d'un seul coup à toute la colonne.
    Et si l'on veut en plus se débarrasser de l'extension, rien n'empêche de la mettre en oeuvre après un replace

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Utiliser simplement l'outil de conversion de Excel (données -->> convertir)
    Et si l'on tient à en faire une macro : voir le code qu'écrit l'enregistreur de macros en faisant ces gestes.

Discussions similaires

  1. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  2. Réponses: 3
    Dernier message: 30/01/2006, 16h24
  3. ShellListView : comment récupérer les noms des fichiers?
    Par Lolo1988 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 11/12/2005, 23h19
  4. Comment récupérer le nom du fichier sans le chemin ?
    Par st0nky dans le forum Débuter
    Réponses: 3
    Dernier message: 08/12/2005, 11h01
  5. [Tableaux] Séparer un nom de fichier de son extension
    Par Empty_body dans le forum Langage
    Réponses: 5
    Dernier message: 24/03/2005, 14h18

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