Importer le nom d'un fichier dans une colonne

Résolu/Fermé
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020 - 10 juin 2015 à 19:11
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020 - 18 juin 2015 à 10:15
Bonjour,

J'utilise ce code pour importer des infos sur des fichiers présents dans un répertoire choisi.

Je voudrais réduire la sélection à un seul fichier, et ne récupérer que son nom dans la cellule sélectionnées Cells(2, f_Name), puis l'étendre sa valeur à toute la colonne.

Je vous avoue que cela me dépasse, j'ai fait des essais en remplaçant quelques instructions, mais sans succès...

'**********************************************************************************
'   Boite de dialogue chemin d'accès au répertoire sources
'**********************************************************************************

    Dim Repertoire As FileDialog

        Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)

    Repertoire.Show
    chemin = CStr(Repertoire.SelectedItems(1))

'**********************************************************************************
'   Récupère les propriétés défies des fichiers du répertoire
'**********************************************************************************

    Dim f_Name As Integer, f_Size As Integer, f_DateCreated As Integer

        f_Name = Rows(1).Find("Nom importation", , , , xlByRows, xlPrevious).Column
        f_Size = Rows(1).Find("Taille image (Octet)", , , , xlByRows, xlPrevious).Column
        f_DateCreated = Rows(1).Find("Date de prise de vue (jj/mm/aaaa)", , , , xlByRows, xlPrevious).Column
    
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set Dossier = fs.GetFolder(chemin)
    Ligne = 2

    For Each F In Dossier.Files
        Cells(Ligne, f_Name) = F.NAME
        Cells(Ligne, f_Size) = F.Size
        Cells(Ligne, f_DateCreated) = F.DateCreated
        Ligne = Ligne + 1
    Next


Lo.
A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
11 juin 2015 à 08:47
Bonjour
un petit truc au passage
pour la date de création----> type long et non integer
par ex: aujourd'hui donne 42166
idem pour la taille en octet si Integer dépassement de capacité pour un classeur de maxi 32,767 Ko

Désolé pour le reste: pas compris ce que tu désirais; je te laisse donc dans les mains de notre ami Le Pingou que je salue
:o)

0
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020
11 juin 2015 à 09:24
Bonjour,

Merci pour cette correction.

Pour préciser. Je souhaite, dans une boite de dialogue, sélectionner un fichier.
La macro récupère son nom et colle dans toutes les cellules d'une colonne définie.
0
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020
11 juin 2015 à 11:37
Ça avance un peu...
J'ai déjà récupéré le nom du fichier :

Sub Nom_Fichier_TIF()

    Dim Boîte_de_Dialogue As String
    Dim Chemin_Fichier 'As ?
    Dim Nom_Fichier_TIF 'As ?

        Boîte_de_Dialogue = Application.GetOpenFilename(FileFilter:="Fichier TIF(*.tif),*.tif", _
        Title:="Sélectionner le fichier TIFF")

        If Boîte_de_Dialogue = "False" Or Boîte_de_Dialogue = "Faux" Then Exit Sub ' !!! Bilingue :< Bug en anglais !!!
        
        Chemin_Fichier = Split(Boîte_de_Dialogue, "\")
        Nom_Fichier_TIF = Chemin_Fichier(UBound(Chemin_Fichier))

MsgBox Nom_Fichier_TIF

End Sub
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 11/06/2015 à 12:00
Dim Chemin_Fichier 'As ?
Dim Nom_Fichier_TIF 'As ?
ce sont des strings

astuce bien pratique (si tu ne connais pas):
tu sélectionnes une variable
débogage
ajouter un espion
en parcourant la macro par F8 l'espion te donnera le type et la valeur
0
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
Modifié par dhaze le 11/06/2015 à 12:53
Merci pour l'astuce.

Mais je n'ai pas les types que tu m'as donné...

Watch :   : Boîte_de_Dialogue : "" : String : Module6.Nom_Fichier_TIF
Watch : : Chemin_Fichier : Vide : Variant/Empty : Module6.Nom_Fichier_TIF
Watch : : Nom_Fichier_TIF : Vide : Variant/Empty : Module6.Nom_Fichier_TIF
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
11 juin 2015 à 14:00
Bonjour,

il ne faut pas déclarer Boîte_de_Dialogue en chaîne de caractère. C'est un variant.
Du coup, tu n'as pas besoin de tester sa valeur selon la langue.

Si tu veux déclarer Chemin_Fichier as string, il faut ajouter des () car c'est un tableau :
Chemin_Fichier() as string


Sinon, tu peux réduire le code :
Sub Nom_Fichier_TIF()
Dim Boîte_de_Dialogue 'pas "As String". c'est un variant
Boîte_de_Dialogue = Application.GetOpenFilename(FileFilter:="Fichier TIF(*.tif),*.tif", _
Title:="Sélectionner le fichier TIFF")
If Boîte_de_Dialogue = False Then
MsgBox "pas de fichier sélectionné"
Else
MsgBox Split(Boîte_de_Dialogue, "\")(UBound(Split(Boîte_de_Dialogue, "\")))
End If
End Sub


cordialement
0
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020
17 juin 2015 à 16:19
Merci JvDo pour ces conseils.

Voici la macro complète :

Sub Importation_Nom_Mire()

'**********************************************************************************
'   Sélectionne et récupère le nom du fichier TIFF
'**********************************************************************************

    Dim Boîte_de_Dialogue As Variant
    Dim Chemin_Fichier As String
    
    Boîte_de_Dialogue = Application.GetOpenFilename(FileFilter:="Fichier TIFF(*.tif),*.tif", _
    Title:="Sélectionner le fichier TIFF")
    
    If Boîte_de_Dialogue = False Then
        Exit Sub
    Else
        Nom_Fichier_TIFF = Split(Boîte_de_Dialogue, "\")(UBound(Split(Boîte_de_Dialogue, "\")))
    End If

'**********************************************************************************
'   Copier le nom dans toute la colonne "Référence de calibration"
'**********************************************************************************

    Dim Colonne_Mire, Numération, Dernière_Ligne As Long
    
        Colonne_Mire = Rows(1).Find("Référence de calibration", , , , xlByRows, xlPrevious).Column
        Dernière_Ligne = Columns(Colonne_Mire).Offset(, -1).Find("*", , , , xlByColumns, xlPrevious).Row
    
    For Numération = Dernière_Ligne To 2 Step -1
    Cells(Numération, Colonne_Mire).Select
        With ActiveCell
            ActiveCell.Value = Nom_Fichier_TIFF
        End With
    Next Numération

End Sub


Lo.
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
17 juin 2015 à 18:47
Bonjour,

C'est bien de faire profiter le forum du résultat auquel tu es parvenu.
Beaucoup ne le font pas.

Dernière remarque : tu peux supprimer
Dim Chemin_Fichier As String
dont tu ne te sers plus.

Cordialement
0
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020 > JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020
18 juin 2015 à 10:15
Bonjour,

Ce forum et ces contributeurs m'ont rendu de grands services.
Cela me semble la moindre de chose...

Et comme je ne suis pas assez compétente pour résoudre les problèmes des autres, c'est ma façon d'y contribuer tout de même...

Merci encore.
Lo.
0