perpitou
Messages postés41Date d'inscriptionjeudi 17 novembre 2011StatutMembreDernière intervention 8 décembre 2011
-
1 déc. 2011 à 14:43
perpitou
Messages postés41Date d'inscriptionjeudi 17 novembre 2011StatutMembreDerniè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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 1 déc. 2011 à 16:59
Bonjour,
Pourquoi te compliquer ainsi la vie, à passer par l'explorateur, alors que VBA/Excel t'offre l'objet FileDialog (à voir dans ton aide VBA), bien plus souple et élégant et que tu peux de surcroît assortir d'une expression conditionnelle pour refuser ton propre fichier en cours ?
Même l'intruction DIR et une listbox, moins élégants , seraient mieux que l'utilisation de Explorer.exe !
____________________
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 1 déc. 2011 à 17:01
Sans compter que tu pourrais utiliser un filtre pour ne proposer que des classeurs Excel et non TOUS les fichiers présents !
____________________
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
perpitou
Messages postés41Date d'inscriptionjeudi 17 novembre 2011StatutMembreDernière intervention 8 décembre 2011 1 déc. 2011 à 17:32
Bonjour ucfoutu,
tout d'abord merci de t'interesser à mon travail. Je ne veux pas de filtre car je souhaite pouvoir récupérer et ouvrir tous types de fichiers mais mon problème je le rencontre en ouvrant des fichiers excels.
Après j'utilise l'explorateur pour aller chercher des dossiers sur son ordinateur.
Pour "VBA/Excel t'offre l'objet FileDialog" et "Même l'intruction DIR et une listbox, moins élégants , seraient mieux que l'utilisation de Explorer.exe" : ce n'est pas que je ne veux pas mais je ne connais pas donc j'ai fait avec ce que j'ai pu trouver sur le net.
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 1 déc. 2011 à 17:52
mais je ne connais pas donc j'ai fait avec ce que j'ai pu trouver sur le net
Pourquoi chercher plus loin ce que tu as tout près (ton aide VBA) et assorti d'un exemple, en plus ?
Tu ne veux pas de filtre ? C'est encore plus simple, alors (ça en moins)
Vas-y (lis ce qu'est FileDialog) et essaye. Reviens si tu t'y perds malgré cette lecture.
____________________
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 1 déc. 2011 à 18:13
et je t'ai dit plus haut :
tu peux de surcroît assortir d'une expression conditionnelle pour refuser ton propre fichier en cours
l'as-tu fait ?
____________________
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 2 déc. 2011 à 10:24
Hé bé !
Tu attends du tout cuit ? As-tu ouvert ton aide VBA, comme je te le demandais, au moins ?
Je veux bien commencer un peu, mais pas à pas, juste pour voir ...
Premier pas :
un bouton de commande et :
Private Sub CommandButton4_Click()
Dim dialop As FileDialog
Set dialop = Application.FileDialog(msoFileDialogOpen)
dialop.InitialFileName = "C:"
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.Name
End If
Set dialop = Nothing
End Sub
tu cliques sur ce bouton ===>> et tu vois ===>> tu choisis un fichier ===>> ouvrir ===>> et tu vois ...
Je t'ai là non seulement mis sur la voie, mais t'ai pratiquement tout fait
Te reste juste une expression conditionnelle (super-évidente) pour ne traiter qu'un fichier qui ne serait pas le tien.
A toi,maintenant (quand-même) !
____________________
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 2 déc. 2011 à 10:54
Il n'y a à ce stade rien à modifier à ce code ! Il est à compléter (les actions à conduire sur le fichier choisi ).
Qu'entends-tu par "modifier" ?
____________________
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
perpitou
Messages postés41Date d'inscriptionjeudi 17 novembre 2011StatutMembreDernière intervention 8 décembre 2011 2 déc. 2011 à 11:00
Oui en le testant je me suis bien rendu compte qu'il fonctionnait mais je souhaite sélectionner et ouvrir. Pour cela j'ai modifier : (msoFileDialogOpen)par (msoFileDialogFilePicker). J'ai pas réussit après, j'ai fait ce code qui ne fonctionne pas :
Private Sub CommandButton1_Click()
Dim Wbk As Workbook
Dim dialop As FileDialog
Set dialop = Application.FileDialog(msoFileDialogOpen)
dialop.InitialFileName = "C:"
dialop.Show
If dialop.SelectedItems.Count > 0 Then
Set Wbk = Workbooks.Open(dialop)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 2 déc. 2011 à 11:19
Tu as pourtant vu ce qui s'affichait dans la msgbox (mon code).
Quel y est selon toi le chemin du fichier que tu as choisi ?
dialop seul n'est pas un fichier, mais (regarde bien) : la boîte de dialogue elle-même !
Je vais te laisser là et te laisser travailler avec sérieux. Ne reviens pas avant cet effort (je ne reviendrai sur cette discussion avant d'avoir laissé passer un temps raisonnable ... deux heures ... pas avant, de sorte à ce que tu en profites pour exercer tes neurones ).
____________________
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
perpitou
Messages postés41Date d'inscriptionjeudi 17 novembre 2011StatutMembreDernière intervention 8 décembre 2011 2 déc. 2011 à 12:11
Je vais y arriver.. Mais je vais manger là je reviens plsu tard.
Private Sub CommandButton4_Click()
Dim dialop As FileDialog
Set dialop = Application.FileDialog(msoFileDialogOpen)
dialop.InitialFileName = "C:"
dialop.Show
If dialop.SelectedItems.Count > 0 Then
Workbooks.Open Filename: = dialop.SelectedItems(1)
End If
Set dialop = Nothing
End Sub
perpitou
Messages postés41Date d'inscriptionjeudi 17 novembre 2011StatutMembreDernière intervention 8 décembre 2011 2 déc. 2011 à 14:11
Je peux l'ouvrir donc pas de problème .
Le showmodal de chaque userform est false.
Maintenant j'ai toujours le problème de pouvoir ouvrir et travailler sur d'autres fichiers.
J'ai essayé d'ouvrir une nouvelle application de Excel afin d'ouvrir le fichier mais mon code ne fonctionne pas:
Private Sub CommandButton3_Click()
Dim x As Excel.Application
Dim dialop As FileDialog
Set dialop = Application.FileDialog(msoFileDialogOpen)
dialop.InitialFileName = "C:"
dialop.Show
Set x = CreateObject("Excel.Application")
If dialop.SelectedItems.Count > 0 Then
x.Visible = True
Workbooks.Open Filename:=dialop.SelectedItems(1)
End If
Set dialop = Nothing
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 2 déc. 2011 à 14:18
Bon !
2ème étape, maintenant (avant d'aller plus loin, mais après, hein ...)
1) Que veux-tu maintenant exactement faire avec le fichier choisi ?
2) tu as dit plus haut que tu voulais ouvrir "tous fichiers", mais voilà que tu ne t'intéresses apparemment qu'aux classeurs Excel (ton "Workbooks.Open Filename:=dialop.SelectedItems(1)")
Qu'en est-il exactement, donc ?
____________________
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 2 déc. 2011 à 14:30
Oui je veux ouvrir tous les fichiers et oui je m'aperçois donc que je me suis planté...
Tu commences à mesurer la nécessité d'être terès précis.
Mais dis-nous : vraiment TOUS les fichiers ? (car, y compris depuis Explorer, tous ne s'ouvriront pas ainsi). Précise ce point également.
____________________
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