Selection Fichiers + boucle + avancement

fileofish

XLDnaute Occasionnel
Bonjour le forum

Je suis bloqué sur le suivi du traitement en effet je souhaiterais que l’utilisateur puisse
- Selectionner plusieurs fichiers Excel
- Liste de traitement en boucle sur ces fichiers
- Suivi du traitement (Box ouverte et dès que le fichier est traité il y est un ok sur le fichier traité + % d’avancement)

Le point 1 & 2 sont Ok mais je n'ai aucune idée comment traiter le suivi du traitement. :(
Quelqu'un aurait-il une idée ?

Sub Utilisation_FileDialog_Ouvrir()
Dim objOuvrir As FileDialog
Dim objFichiers As FileDialogSelectedItems
Dim x As Long
Dim Wb As Workbook

With application.FileDialog(msoFileDialogOpen)
.InitialFileName = ""
.Filters.Clear
.Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
.InitialView = msoFileDialogViewDetails
.Show
End With

Set objFichiers = application.FileDialog(msoFileDialogOpen).SelectedItems

If objFichiers.Count = 0 Then Exit Sub


application.ScreenUpdating = False


For x = 1 To objFichiers.Count
Set Wb = Workbooks.Open(objFichiers(x))
Wb.Activate
Range("A1").Select

Wb.Close False
Next

application.ScreenUpdating = True

End Sub

D'avance merci
Philippe
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@fileofish
Un exemple issu de mes archives
VB:
Sub OpenSeveralFiles()
'archives: janvier 2012
Dim fd As FileDialog
Dim FileChosen%, FileName$, i%, wb As Workbook
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'fd.InitialFileName = ThisWorkbook.Path & "\"
With fd.Filters
    .Clear
    .Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
End With
fd.InitialView = msoFileDialogViewList
'allow multiple file selection
fd.AllowMultiSelect = True
FileChosen = fd.Show
If FileChosen = -1 Then
'open each of the files chosen
For i = 1 To fd.SelectedItems.Count
Set wb = Workbooks.Open(fd.SelectedItems(i))
'ici code VBA du traitement à appliquer
'ci-dessous petit exemple
MsgBox wb.Name
wb.Close False
'///fin petit exemple///
Next i
End If
End Sub
PS: Il faudrait qu'on sache ce que fait la macro Traitement.
 

fileofish

XLDnaute Occasionnel
Bonjour Stapple, Le Forum

Tout d'abord merci pour ton message !!
Pour être complètement transparent avec toi la macro est censée envoyer des données provenant des matrices budgétaires dans le logiciel de consolidation. Il y a donc toutes les données de connexion voilà pourquoi j'ai supprimé cette partie.
=> La macro permet donc d'ouvrir une par une chaque matrice allez sur un onglet et envoyer les données dans le logiciel

La macro que tu m'as communiquée ressemble à celle que j'ai trouvé.
Là où je bloque c'est sur la partie Suivi du traitement
Comme il y a beaucoup de matrices à importer je voulais savoir si on ne pouvait pas avoir un suivi en temps réel du traitement
Ex : Box ouverte et dès que le fichier est traité il y est un ok sur le fichier traité + % d’avancement

Aurais tu cela en stock :))
Merci encore
Philippe
 

Staple1600

XLDnaute Barbatruc
Re

Comme dit dans mon précédent message, sans savoir ce que fait la macro "Traitement", pas sur que le code ci-dessous te suffise
VB:
Sub OpenSeveralFiles_Bis()
'archives: janvier 2012
Dim fd As FileDialog
Dim FileChosen%, FileName$, i%, wb As Workbook, X
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'fd.InitialFileName = ThisWorkbook.Path & "\"
With fd.Filters
    .Clear
    .Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
End With
fd.InitialView = msoFileDialogViewList
'allow multiple file selection
fd.AllowMultiSelect = True
FileChosen = fd.Show
If FileChosen = -1 Then
'open each of the files chosen
X = fd.SelectedItems.Count
For i = 1 To X
Set wb = Workbooks.Open(fd.SelectedItems(i))
'ici code VBA du traitement à appliquer
'ci-dessous petit exemple
MsgBox wb.Name
MsgBox "Classeur(s) " & " traités sur : " & X
wb.Close False
'///fin petit exemple///
Next i
End If
End Sub
 

fileofish

XLDnaute Occasionnel
Stapple,

merci pour ta réponse

je pense que je me suis mal exprimé. Je vais reformuler.
Chaque personne pourra injecter ses matrices budgétaires Excel dans le logiciel.
La 1ère étape consistera à sélectionner les matrices (Ca c'est OK)
La 2ème étape consistera à envoyer certains onglets des matrices dans le logiciel (Ca c'est OK)
La 3ème étape est liée à la seconde ça serait une box récap qui contiendrait le nom de toutes les matrices dès qu'il y en a une qui est traitée mettre un petit message qui dit que "l'import de données est ok" + "% d'avancement"
Dans la macro que tu m'as communiquée il faut cliquer sur OK après chaque traitement ce qui n'est pas pratique

Je ne sais pas si j'ai été beaucoup plus clair?
 

Staple1600

XLDnaute Barbatruc
Re

Testes ma macro*, et tu verras qu'un petit message s'affiche
(* sur un dossier qui contient une dizaine de classeurs)

A partir de ce test, adaptes ce petit message et/ou fais des recherches sur: barre de progession , application.statusbar
Puis inspires-toi des exemples trouvés pour les adapter à ta problématique.
 

fileofish

XLDnaute Occasionnel
Bonjour Stapple, Le Forum

Désolé de te répondre que maintenant. Je viens de faire le test.
En fait ça ne correspond pas vraiment à ce que je souhaiterais. (dans la mesure où cela oblige l'utilisateur à cliquer sur ok à chaque traitement) mais dis moi si je me trompe
En fait je voudrais une box qui ne nécessiterait aucune validation de la part de l'utilisateur (sauf à la fin).
Durant le traitement il y aurait une box dans laquelle on pourrait voir ce qu'il se passe :
Ex : si il y a 10 classeurs à traiter et que l'on est au 4 ème la box afficherait !
- Classeur 1 : Traité à "heure"
- Classeur 2 : Traité à "heure"
- Classeur 3 : Traité à "heure"

J'ai déjà vu ce genre de box mais je ne trouve pas grand chose sur le net
 

Discussions similaires