Bonjour à tous,

J'ai créé un petit programme qui me permet depuis une boite de dialogue de selectionner un fichier, de réaliser des calculs et de les copier dans mon fichier d'origine.

Ma boite de dialogue contient 3 boutons :
  • explorer (pour selectionner un fichier comme dans windows)
  • valider (qui permet d'exécuter les macros)
  • fermer (sui femre simplement la boite de dialogue)

Et 2 afficheurs :
  • textNameMOAP (permet d'afficher le nom du fichier avant de le charger)
  • textboxMOAP (permet d'afficher le chemin du fichier)


Mon progamme est le suivant :

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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Private Sub cmdValider_Click()
 
    Dim Chemin_Fichier_Modele As String, Chemin_MOAP As String, Chemin_Complet_MOAP As String, Feuille As String
    Dim PlageAT As String
 
 
    ' Chemin du Fichier
 
    Feuille = "MED-FML-2010-000129"
    Chemin_Complet_MOAP = TextBoxMOAP.Text
    Chemin_MOAP = TextNameMOAP.Text
    Chemin_Fichier_Modele = ThisWorkbook.Name
    PlageAT = "AT5:AT1500"
 
    ' Vérifie si un fichier a été choisie
    If TextBoxMOAP.Text = "" Then
        MsgBox "Choisissez un fichier Excel (xlsx ou xlsm)"
        TextBoxMOAP.SetFocus
 
    Else
        ' Désactive le mise à jour de l'écran
        Application.ScreenUpdating = False
 
        Application.DisplayStatusBar = True
 
        Application.StatusBar = "En cours..."
        DoEvents
 
 
 
        ' Montant décidés de l'année en cours
 
        If Month(Now()) = 12 Then
        Range("M23").Formula = "=SUM('" & Chemin_Complet_MOAP & "[" & Chemin_MOAP & "]" & Feuille & "'!" & PlageAT & ")/1000"
        Range("M23").Interior.ColorIndex = 34
        Else
           Range("M23").Interior.ColorIndex = 2
        End If
 
                Range("M23").Value = Range("M23").Value
 
    Unload Me
    End If
End Sub
Et ma macro permettant d'ouvrir l'explorateur de fichier est :

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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Private Sub cmdExplorerMOAP_Click()
    Dim Fd As FileDialog
    Dim Fdfs As FileDialogFilters
    Dim Plage As Range
    Dim cell As Range
    Dim Name_Fichier As String, i As Integer
 
    ' choix du fichier Excel par l'explorateur
    Set Fd = Application.FileDialog(msoFileDialogOpen)
    Set Fdfs = Application.FileDialog(msoFileDialogOpen).Filters
 
    Fdfs.Clear
    ' ajout de la seule extension Excel
    Set Fdf = Fdfs.Add("All files", "*.xlsm; *.xlsx", 1)
 
    ' récupération du nom et du chemin du fichier sélectionné
    With Fd
        .AllowMultiSelect = False
        If .Show = -1 Then
            Path = .SelectedItems(1)
 
            Name_Fichier = Mid(Path, InStrRev(Path, "\") + 1)
 
            ' MsgBox name_fichier
            TextBoxMOAP.Text = Path
            TextNameMOAP.Text = Name_Fichier
            menu.TextBoxFichierMOAP.Text = Path
 
        Else
        'The user pressed Cancel.
            Exit Sub
        End If
    End With
 
    ' Set Fd = Nothing
 
End Sub

1 - Mon premier problème est que l'explorateur me demande à chaque fois de selectionner 2 fois le fichier.

2 - Mon deuxième souci est que je souhaiterais utiliser la première feuille du classeur que je selectionne et non pas forcer le nom du fichier (ici c'est MED-FML-2010-000129).

Est ce que quelqu'un pourrait m'éclairer sur ces deux problèmes ?

Merci et bonne fêtes