Importer le nom d'un fichier dans une colonne

Résolu
dhaze Messages postés 113 Statut Membre -  
dhaze Messages postés 113 Statut Membre -
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 18903 Statut Contributeur 3 317
 
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 113 Statut Membre
 
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 113 Statut Membre
 
Ç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 18903 Statut Contributeur 3 317
 
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 113 Statut Membre > michel_m Messages postés 18903 Statut Contributeur
 
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 2012 Statut Membre 859
 
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 113 Statut Membre
 
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 2012 Statut Membre 859
 
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 113 Statut Membre > JvDo Messages postés 2012 Statut Membre
 
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