Browser répertoire

Résolu
DamienGB Messages postés 30 Date d'inscription mercredi 23 mai 2012 Statut Membre Dernière intervention 13 août 2012 - 25 mai 2012 à 11:18
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 25 mai 2012 à 15:04
Bonjour tout le monde

Je fais un peu de dvp sur Excel
Et là je bute sur un problème (qui à l'air simple pourtant)

Ma macro excel me crée une un fichier excel à chaue traitement qu'elle met dans un dossier dédié

Je voudrais maintenant ouvrir le tous les fichier du dossier et coller les feuilles dans ma macro une feuille par dossier (je souhaite conserver ce format un fichier une feuille pour des raisons de praticité lors de l'utilisation)

Mais je n'arrive pas à récupérer le chemin complet d'un dossier (il me manque un niveau d'arborescence

Voici le code de la fenêtre Bowser

Dim fileName As Variant
Dim Fichier As String

''bouton browse
Private Sub bcBrowse1_Click()
Application.FileDialog(msoFileDialogFolderPicker).Show
''cest ici que ça pose problème ,faut il utiliser autre chose que .InitialFileName
selItems1 = Application.FileDialog(msoFileDialogFolderPicker).InitialFileName
        On Error GoTo resumeSel1
        UserForm6.enterFile1.Text = selItems1
resumeSel1:
        Exit Sub
        Resume Next
End Sub
''bouton Annuler
Private Sub selDataCancel_Click()
    UserForm6.Hide
End Sub

Private Sub selDataOK_Click()
''protocole d'importation
If enterFile1.Text = "" Then
   MsgBox "Pas de chemin spécifié  ", vbOKOnly & vbExclamation
Else
''il va faloir ouvrir tous les fichiers contenu dans le dossier
  Fichier = Dir(selItems1 & "*.xlsx")
'Utilisez la syntaxe suivante pour boucler sur tous les types de fichiers:
'Fichier = Dir(Chemin & "*.*")
    
Do While Fichier <> ""
 Workbooks.Open chemin & Fichier
 ''
 Sheets(1).Copy before:=ThisWorkbook.Sheets(1)
 Workbooks(Fichier).Close False 'ou true si tu enregistres
 Fichier = Dir
Loop
UserForm6.Hide
End If

End Sub


Merci d'avance
J'espère que le code clair (je respecte pas trop les indentations)

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 mai 2012 à 13:22
Ouais...
Et moi, je ne comprends :
- ni l'utilité de la textbox (pour en faire quoi ? des frites ?)
- ni l'utilisation ici abusive de On Error Resume Next (bouh ...)
- ni l'utilité de procédures séparées (pourquoi diable ?)

Je ne vais pas écrire la totalité de ton code.
Je vais te demander simplement d'analyser et comprendre ce qui suit :
 Dim ma_boite As FileDialog, filtre As String, fichiers As String, chemin_choisi As String
    Set ma_boite = Application.FileDialog(msoFileDialogFolderPicker)
    With ma_boite
      .InitialFileName = "C:" '<<==== ton répertoire d'ouverture par défaut ici
      If .Show = -1 Then
         chemin_choisi = Trim(.SelectedItems(1))
        If Right(chemin_choisi, 1) <> "" Then chemin_choisi = chemin_choisi & ""
      End If
    End With
    filtre = "*.xls" ' <<<==== ton filtre à toi ici
    fichiers = Dir(chemin_choisi & filtre)
    Do While fichiers <> ""
      MsgBox chemin_choisi & fichiers '<<=== remplace ce msgbox par tes ouvertures de classeur
      fichiers = Dir
    Loop
   Close #1

Si tu ne sais pas suivre cela, je t'abandonne à ton sort, pour sûr !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 mai 2012 à 11:29
Bonjour,
1) ta sub selDataOK_Click utilise :
- chemin
- selItems1
qu'elle ne semble pas connaître (puisque sub indépendante). Où et comment ont été déclarées et initialisées ces variables ?
je vois bien que selItems1 a été initialisée dans une autre procédure, mais ne vois pas où et comment elle a été déclarée !

2) que contient exactement (le texte complet) la textbox UserForm6.enterFile1.Text ?
(car si non présence du caractère "" à la fin ===>> ce n'est pas un chemin de dossier)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
DamienGB Messages postés 30 Date d'inscription mercredi 23 mai 2012 Statut Membre Dernière intervention 13 août 2012
25 mai 2012 à 11:47
En fait je ne les déclarent pas
chemin c'est une erreur c'est selItems1 (j'ai récupérer le browser pour les fichiers que j'essaye d'adapter au dossiers)
C'est pas très propre ,Mais a priori le problème ne viens pas de là

Ma textBox avec le "path" contient ça
F:\Panel Perf\Suivi du Panel\

Et moi je veux avoir ça c'est le dossier Suivi PLF que j'ai sélectionner dans ma boite de dialogue
F:\Panel Perf\Suivi du Panel\Suivi PLF\

ça marche très bien quand je le leurre en créant un dossier dans le dossier que je veux sélectionner et en sélectionnant ce sous dossier
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
25 mai 2012 à 12:26
Si le problème vient de là car ta variable selItems1 dans selDataOK_Click est vide !
(à vérifier dans l'environnement VBA ...)

Il manquerait alors une ligne du genre selItems1 (ou chemin) = enterFile1.Text ...
___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DamienGB Messages postés 30 Date d'inscription mercredi 23 mai 2012 Statut Membre Dernière intervention 13 août 2012
25 mai 2012 à 14:42
Merci tout fonctionne bien
En fait le problème venait du fait que je n'avais rien compris à la fonction de .InitialFileName
Que j'utilisais en lieu et place de Trim(.SelectedItems(1))

C'est un code que je traîne depuis le début (quelques mois) que l'on nous avez donnez en cours (on a UserForm avec le chemin d'accés qui s'affiche (ça ce fait dans pas de logiciel stat ça doit venir de là cette habitude,et ça permet d'ajouter des options à l'importation et des indications dans cette UserForm))

Au final c'est bien plus propre de cette façon (Je pensais pas qu'il était possible de le faire sans se traîner une UserForm

Voici le code

Sub Importationsuivipanel()


 Dim ma_boite As FileDialog, filtre As String, fichiers As String, chemin_choisi As String
    Set ma_boite = Application.FileDialog(msoFileDialogFolderPicker)
    With ma_boite
      ''.InitialFileName = "F:" '<<==== ton répertoire d'ouverture par défaut ici je ne l'utilise pas pour l'instant à cause des serveurs

      If .Show = -1 Then
         chemin_choisi = Trim(.SelectedItems(1))
        If Right(chemin_choisi, 1) <> "" Then chemin_choisi = chemin_choisi & ""

      End If
    End With
    filtre = "*.xlsx" ' <<<==== le filtre
    fichiers = Dir(chemin_choisi & filtre)
    Do While fichiers <> ""
      ''
      Workbooks.Open chemin_choisi & fichiers
      Sheets(1).Copy before:=ThisWorkbook.Sheets(1)
      Workbooks(fichiers).Close False 'ou true si tu enregistres
      fichiers = Dir
    Loop
   Close #1
   
End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 mai 2012 à 15:04
Bon.
Libère alors ce sujet, s'il te plait (clique sur le tag "réponse acceptée").


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Rejoignez-nous