XL 2019 Lire propriété (vidéo) à partir d'une boite de dialogue ?

re4

XLDnaute Occasionnel
Bonjour,
Il est encore temps de vous souhaiter une bonne et heureuse année.

J'ai adapté le code ci-dessous pour mes besoins, pouvez-vous m'aider pour aller chercher le fichier avec une boite de dialogue à la place de ce code :
Set objFolder = objShell.Namespace("D:\temp test\video")
Set objFolderItem = objFolder.ParseName("test.mp4")
Mon expérience VBA étant limitée, je n'ai peut -être pas utilisé les bons termes... :-(

Merci par avance
Bonne journée


VB:
Sub ProprieteVideo()

'Extraction de tous les codes sur le pc qui utilise ce fichier dans une feuille ""Code""
Call M2_code_champs1.code_champs1
    
'\
    Dim strHauteurVideo As String
    Dim strLargeurVideo As String
    Dim strHauteur As String
    Dim strLargeur As String
    Dim strTaille As String
    Dim strDebite As String
    
    Largeur = Worksheets("Code").Range("C2").Value  'Win 10 sur mon poste en 2022 => Code 316
    Hauteur = Worksheets("Code").Range("D2").Value 'win 10 sur mon poste en 2022 => Code 314
    Taille = Worksheets("Code").Range("E2").Value        'win 10 sur mon poste en 2022 => code 1
    Debit = Worksheets("Code").Range("F2").Value        'win 10 sur mon poste en 2022 => code 320
    
    Worksheets("Datas").Select
    Set objShell = CreateObject("shell.application")
    
    '***
    Set objFolder = objShell.Namespace("D:\temp test\video")
    Set objFolderItem = objFolder.ParseName("test.mp4")
    '***
    
    strLargeurVideo = objFolder.GetDetailsOf(objFolderItem, Largeur)
    strHauteurVideo = objFolder.GetDetailsOf(objFolderItem, Hauteur)
    Range("A1") = strLargeurVideo & "x" & strHauteurVideo
    strTaille = objFolder.GetDetailsOf(objFolderItem, Taille)
    Range("B1") = strTaille
      strDebit = objFolder.GetDetailsOf(objFolderItem, Debit)
    Range("C1") = strDebit
    
    Set objFolderItem = Nothing
    Set objFolder = Nothing
    Set objShell = Nothing

End Sub
 

re4

XLDnaute Occasionnel
Bonjour,
Petite précision, ce n'est pas une boite de dialogue mais le terme est plutôt ''ouvrir via l’explorer)
Encore mieux si l'on pointe sur le fichier vidéo pour en extraire les propriétés sans le lancer.
J'espère que c'est plus clair ;)

Bonne journée
 

TooFatBoy

XLDnaute Barbatruc
Je croyais que ça permettait d'ouvrir le "sélecteur de fichier".

[edit]
Normalement ça ouvre bien la fenêtre de sélection de fichier : https://docs.microsoft.com/fr-fr/office/vba/api/excel.application.getopenfilename
Donc ça te permet de sélectionner facilement un fichier.
Mais tu n'es pas obligé d'ouvrir le fichier ainsi sélectionné. Tu peux simplement récupérer son nom et son chemin d'accès.
[/edit]
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
mais comme je suis très peu performant en VBA ;-) comment remplacer ce code ?
Ben moi pareil mon pauvre... ;(

Perso, pour sélectionner un fichier dans le dossier où se trouve mon classeur, j'utilise ça (même si on m'a déjà dit que c'était pas terrible comme code et qu'il ne fallait pas faire comme ça ) :
Code:
Function Choix_fichier() As String

    ' Passer (virtuellement) sur la partition désirée
    ChDrive "D:"
    ' Passer (virtuellement) dans le dossier désiré
    ChDir "\temp test\video"

    ' Ouvrir la fenêtre de dialogue de Windows pour sélectionner un fichier à ouvrir
    Choix_fichier = Application.GetOpenFilename("Fichiers .mp4 (*.mp4), *.mp4")

End Function

Dans Choix_fichier tu as :
- soit rien (une chaîne vide) si tu n'as rien sélectionné,
- le nom du fichier sélectionné sous la forme "c:\Dossier1\Dossier2\etc.\NomDuFichier.ext".
 
Dernière édition:

re4

XLDnaute Occasionnel
Je précisais en VBA :) :D
Plus sérieusement, je me suis peut-être mal fait comprendre, La macro de ton post 5 permet bien de sélectionner un fichier (D:\temp test\video\test.mp4) mais comment faire pour l'insérer dans la macro du post un il faudrait que cela remplace ces 2 lignes :
Set objFolder = objShell.Namespace("D:\temp test\video")
Set objFolderItem = objFolder.ParseName("test.mp4")

Merci
 

TooFatBoy

XLDnaute Barbatruc
Peut-être ça :

VB:
Sub ProprieteVideo()

'Extraction de tous les codes sur le pc qui utilise ce fichier dans une feuille ""Code""
Call M2_code_champs1.code_champs1
  
'\
    Dim strHauteurVideo As String,    strLargeurVideo As String
    Dim strHauteur As String, strLargeur As String
    Dim strTaille As String, strDebite As String

    Dim CheminEtNom As String, MonChemin As String, MonFichier As String
    Dim PosBackslash As Integer
  
    Largeur = Worksheets("Code").Range("C2").Value  'Win 10 sur mon poste en 2022 => Code 316
    Hauteur = Worksheets("Code").Range("D2").Value 'win 10 sur mon poste en 2022 => Code 314
    Taille = Worksheets("Code").Range("E2").Value        'win 10 sur mon poste en 2022 => code 1
    Debit = Worksheets("Code").Range("F2").Value        'win 10 sur mon poste en 2022 => code 320
  
    Worksheets("Datas").Select
    Set objShell = CreateObject("shell.application")
  
    '***
    ChDrive "D:"
    ChDir "\temp test\video"
    CheminEtNom = Application.GetOpenFilename("Fichiers .mp4 (*.mp4), *.mp4")
    If CheminEtNom = "Faux" Then Exit Sub
    PosBackslash = InStr(StrReverse(CheminEtNom), "\")
    MonChemin = Left(CheminEtNom, Len(CheminEtNom) - PosBackslash)
    MonFichier = Right(CheminEtNom, PosBackslash - 1)

    Set objFolder = objShell.Namespace(MonChemin)
    Set objFolderItem = objFolder.ParseName(MonFichier)
    '***
  
    strLargeurVideo = objFolder.GetDetailsOf(objFolderItem, Largeur)
    strHauteurVideo = objFolder.GetDetailsOf(objFolderItem, Hauteur)
    Range("A1") = strLargeurVideo & "x" & strHauteurVideo
    strTaille = objFolder.GetDetailsOf(objFolderItem, Taille)
    Range("B1") = strTaille
      strDebit = objFolder.GetDetailsOf(objFolderItem, Debit)
    Range("C1") = strDebit
  
    Set objFolderItem = Nothing
    Set objFolder = Nothing
    Set objShell = Nothing

End Sub
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
@Marcel32
VB:
MonChemin = Left(CheminEtNom, Len(CheminEtNom) - PosBackslash)
    MonFichier = Right(NomFichier, PosBackslash - 1)
c'est qui celui là "Nonfichier" dans les parenthèses

bien que chez moi la ligne "..parsename plante je l'aurais codé comme ceci

VB:
ChDrive "i:"
    ChDir "I:\FILM TV"
    CheminEtNom = Application.GetOpenFilename("Fichiers video (*.mp4;*.ts;*.vob;*.mkv;*.avi), *.mp4;*.ts;*.vob;*.mkv;*.avi", 1, "choisir un fichier video", False)
    If CheminEtNom = "Faux" Then Exit Sub
    
MonChemin = Mid(CheminEtNom, 1, InStrRev(CheminEtNom, "\"))
    MonFichier = Replace(CheminEtNom, MonChemin, "")
    
Set objFolder = objShell.Namespace(MonChemin)
    Set objFolderItem = objFolder.ParseName(MonFichier)
 

re4

XLDnaute Occasionnel
Non, je vais chercher simplement le fichier test.mp4 dont le chemin complet est :
D:\temp test\video\test.mp4
Une question pourquoi ces 2 lignes alors que l'on va chercher le fichier avec la boite ?
ChDrive "D:"
ChDir "\temp test\video
Pardon de le préciser, le répertoire et le nom du fichier sont à titre d'exemple et ne seront pas toujours les mêmes mais tu l'avais bien sûr compris.

edit :
J'ai modifié le rep temp test par temptest, il y a le même phénomène...
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 901
Messages
2 093 408
Membres
105 723
dernier inscrit
jopi