Pouvoir ouvrir des fichiers excel avec vba sans le faire planter

Résolu
perpitou Messages postés 41 Date d'inscription jeudi 17 novembre 2011 Statut Membre Dernière intervention 8 décembre 2011 - 1 déc. 2011 à 14:43
perpitou Messages postés 41 Date d'inscription jeudi 17 novembre 2011 Statut Membre Dernière intervention 8 décembre 2011 - 8 déc. 2011 à 08:04
Bonjour à tous,

J'ai des userforms sur lesquels se trouvent des boutons accès à un répertoire par exemple :
Private Sub CommandButton1_Click()
Shell "C:\WINDOWS\EXPLORER.EXE /n,/e,C:", vbNormalFocus
    End Sub


Dans ce répertoire j'ai des fichiers excels et je souhaite les ouvrir en cliquant simplement dessus.
Et là le problème c'est que je ne peux pas travailler sur mon fichier excel ouvert car j'ai monfichier vba qui fonctionne.

Donc à l'ouverture de l'userform, j'ai mis :
Code :
UserForm1.Show vb Modeless


Là je peux réduire mon userform mais il se bloque ou se ferme et je ne comprend.

Il faut savoir:
- Il ya plusieurs fichiers excels avec des noms qui peuvent changer dans le répertoire.
- Mes userform sont en plein écran.

Avez vous une solution à cela?

Cordialement,
Perpitou

37 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 235
2 déc. 2011 à 17:39
Exact ! T'as tout compris
Alors comment traiter ?
on va commencer par le plus simple : un classeur Excel. Pourquoi ? ===>>
Parce que ce coquin de Microsoft/Excel s'est "réservé" une priorité assez bienvenue : l'ouverture d'un classeur utilisera spontanément l'application Excel si l'on utilise la méthode execute de l'objet dialop ===>>
Regarde et vois ce qui se passe en choisissant un classeur (donc index 1) :
Dim dialop As FileDialog
    Set dialop = Application.FileDialog(msoFileDialogOpen)
    dialop.InitialFileName = "C:"
    dialop.Filters.Clear
    dialop.Filters.Add "classeurs Excel", "*.xlsm; *.xls", 1
    dialop.Filters.Add "documents Word ", "*.doc; *.doc", 2
    dialop.Show
    If dialop.SelectedItems.Count > 0 Then
      MsgBox "tu as choisi " & dialop.SelectedItems(1) & vbCrLf & _
      " et ton fichier en cours est " & Application.Path & "" & ThisWorkbook.FullName & vbCrLf & _
      "et tu as sélectionné sur le filtre d'index " & dialop.FilterIndex 
    End If
    Select Case dialop.FilterIndex
      Case 1: dialop.Execute
      Case Else: MsgBox "pas encore traité. On y viendra ensuite"
    End Select
    Set dialop = Nothing


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3