Saisi d'un chemin d'un fichier via un userform pour traitement par un script

Miguel973

XLDnaute Nouveau
Bonjour à tous,

je souhaiterai sur une feuille excel via un userform qu'un utilisateur rentre le chemin d'un fichier qui par la suite subira certains changements.
En fait, vu que cette feuille excel sera envoyé à plusieurs personnes différentes, je ne peux me permettre d'inscrire directement dans le script le chemin du fichier. Je voudrais donc que l'utilisateur saisisse le nom de son fichier que le script va modifier via un userform.
Pour l'instant j'arrive à tout faire tourner en inscrivant un chemin en dur dans le script... Mais lorsque je créé mon userform, je n'arrive pas à faire en sorte que le script prenne en compte le fichier saisi dans le champ texte de l'userform.

Je vous mets ci-dessous mes bouts de codes :

Voici mon script :


Code:
'Extraction et Mapping fichier Project
Sub ExtractProj(nomfich As String)
      
   'Ouverture du fichier Project pour Extraction vers Excel (ça marche si c'est écrit en dur dans le fichier)
   'Dim fich
   'fich = "d:\Documents and Settings\T0124240\Bureau\MacroPlanning Migration TCF 300311test.mpp" 'à adapter
   'ShellExecute 0, "open", fich, "", "", 0
 
'Test avec l'userform (et là çà ne fonctionne pas)
Dim fich
fich = nomfich
ShellExecute 0, "open", fich, "", "", 0
 
 
   'Mapping données Project
   MacroShowVba
        MapEdit Name:="Mappage 1", Create:=True, OverwriteExisting:=True, DataCategory:=0, CategoryEnabled:=True, TableName:="test", FieldName:="Nom", ExternalFieldName:="Nom", ExportFilter:="Toutes les tâches", ImportMethod:=0, HeaderRow:=True, AssignmentData:=False, TextDelimiter:=Chr$(9), TextFileOrigin:=0, UseHtmlTemplate:=False, IncludeImage:=False
        MapEdit Name:="Mappage 1", DataCategory:=0, FieldName:="Durée", ExternalFieldName:="Durée"
   
'Enregistre le fichier sous format Excel
FileSaveAs Name:="d:\Documents and Settings\T0124240\Bureau\ExtractProject-Excel.xls", FormatID:="MSProject.XLS5", Map:="Mappage 1"
 
'Fermer fichier Project après extraction
On Error Resume Next
Set fich = GetObject(, "MSProject.Application")
If fich Is Nothing Then
MsgBox "Project est fermé"
Else
'MsgBox "Project est ouvert"
fich.Quit 'Fermeture application Project
End If
 
End Sub

Voici mon userform :

Code:
Private Sub ChargementON_Click()
ExtractProj SaisiNomFichier.Value
End Sub
 
Private Sub Label1_Click()
 
End Sub
 
 
Private Sub SaisiNomFichier_Change()
 
End Sub
 
Private Sub UserForm_Click()
 
End Sub

Merci par avance pour votre aide et vos conseils

Cordialement,

Miguel
 

youky(BJ)

XLDnaute Barbatruc
Re : Saisi d'un chemin d'un fichier via un userform pour traitement par un script

Bonjour Miguel,
Voici déja pour ouvrir la boite de dialogue "Ouvrir"

fichier = Application.GetOpenFilename("Fichiers .XLS (*.xls),*.xls,Fichier .MPP(*.mpp),*.mpp")
If fichier = False Then Exit Sub

'et la suite
Bruno
 

Miguel973

XLDnaute Nouveau
Re : Saisi d'un chemin d'un fichier via un userform pour traitement par un script

Bonjour Miguel,
Voici déja pour ouvrir la boite de dialogue "Ouvrir"

fichier = Application.GetOpenFilename("Fichiers .XLS (*.xls),*.xls,Fichier .MPP(*.mpp),*.mpp")
If fichier = False Then Exit Sub

'et la suite
Bruno

Merci beaucoup Bruno pour ta réponse :)

Néanmoins, il me reste une petite question, lorsque j'applique ta méthode, ma ligne de code me permettant l'enregistrement de mon fichier Project (mpp) en fichier Excel me retourne une erreur :confused: : Erreur d'exécution '1100' : la méthode n'est disponible dans cette situation.

Ma ligne de code est la suivante :

'Enregistre le fichier sous format Excel
FileSaveAs Name:="d:\Documents and Settings\T0124240\Bureau\ExtractProject-Excel.xls", FormatID:="MSProject.XLS5", Map:="Mappage 1"

Si tu pouvais encore une fois m'apporter ton aide, je t'en serais reconnaissant.

Bien cordialement,

Miguel
 

youky(BJ)

XLDnaute Barbatruc
Re : Saisi d'un chemin d'un fichier via un userform pour traitement par un script

hello,
Avec bien du retard, voici de quoi récupérer le chemin souhaité
Bruno
Code:
Private Sub CommandButton1_Click()
Dim fd As FileDialog
Dim vrtSelectedItem As Variant
        Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    With fd
        If .Show = -1 Then
            MsgBox .SelectedItems(1) 'renvoie seulement le chemin
            'MsgBox .selectedItems(1) & "\toto.mpp"
        Else
        End If
    End With
Set fd = Nothing
End Sub
 

Miguel973

XLDnaute Nouveau
Re : Saisi d'un chemin d'un fichier via un userform pour traitement par un script

hello,
Avec bien du retard, voici de quoi récupérer le chemin souhaité
Bruno
Code:
Private Sub CommandButton1_Click()
Dim fd As FileDialog
Dim vrtSelectedItem As Variant
        Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    With fd
        If .Show = -1 Then
            MsgBox .SelectedItems(1) 'renvoie seulement le chemin
            'MsgBox .selectedItems(1) & "\toto.mpp"
        Else
        End If
    End With
Set fd = Nothing
End Sub

Merci encore une fois Bruno. J'allais justement poster un commentaire sur ma discussion. Finalement je suis passé par un autre chemin, en me basant sur la première info que tu m'avais donné.

Code:
Dim ProjObj As MSProject.Application
Set ProjObj = CreateObject("msproject.application")
 
'Ouvre une boîte de dialogue demandant à l'user de choisir son fichier Project
Dim Fichier
Fichier = Application.GetOpenFilename("Fichiers .MPP(*.mpp),*.mpp")
If Fichier = False Then Exit Sub
    
    'Ouverture du fichier Project pour Extraction vers Excel
    ProjObj.FileOpen Fichier, _
    ReadOnly:=True
    ProjObj.Visible = True

Bien cordialement,

Miguel
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16