Bonjour à tous et bravo pour ce super forum, qui m'a dépanné plus d'une fois !
Je suis confronté à un problème dont je ne trouve aucune solution:
Des fichiers Excel sont enregistrés dans des dossiers portant le Numéro de la semaine (exemple S14 pour pour cette semaine).
J'ai donc des dossiers allant de la S1 à la S14.
Le programme ci-dessous est censé ouvrir les dossiers des semaines S1 à S14 pour aller piocher des infos dans les fichiers Excel qui y sont enregistrés.
Ces infos sont ensuite envoyées dans un fichier de synthèse, d'où est tiré le programme ci dessous.
Le problème est que le programme VB ouvre depuis peu les dossiers de façon aléatoire.
Il ouvre le dossier "S1" puis "S10" , "S11", "S2", etc...
Et ça fausse les données dans mon fichier de synthèse.
Je souhaite qu'il ouvre les dossiers dans l'ordre, c'est à dire S1, S2, S3, etc.
Pouvez vous m'aider à trouver une solution SVP ?
Je suis confronté à un problème dont je ne trouve aucune solution:
Des fichiers Excel sont enregistrés dans des dossiers portant le Numéro de la semaine (exemple S14 pour pour cette semaine).
J'ai donc des dossiers allant de la S1 à la S14.
Le programme ci-dessous est censé ouvrir les dossiers des semaines S1 à S14 pour aller piocher des infos dans les fichiers Excel qui y sont enregistrés.
Ces infos sont ensuite envoyées dans un fichier de synthèse, d'où est tiré le programme ci dessous.
Le problème est que le programme VB ouvre depuis peu les dossiers de façon aléatoire.
Il ouvre le dossier "S1" puis "S10" , "S11", "S2", etc...
Et ça fausse les données dans mon fichier de synthèse.
Je souhaite qu'il ouvre les dossiers dans l'ordre, c'est à dire S1, S2, S3, etc.
Pouvez vous m'aider à trouver une solution SVP ?
Sub transfert2_DWQ_vers_indicateur()
Dim wb As Workbook
Dim fSuiviTLSE, fSuivi, fChoix As Worksheet
Dim ligFin, ligAjoutIndic, ligIndicateur As Long
Dim pathIndicateurs, pathSuivi, nomFichier, NomFicActuel, plage As String
Set fChoix = ActiveWorkbook.Sheets("Choix")
Set fSuiviTLSE = ActiveWorkbook.Sheets("SuiviTLSE2")
ligFin = fSuiviTLSE.Cells(65536, 2).End(xlUp).Row
plage = "N12:N" & ligFin
fSuiviTLSE.Range(plage).ClearContents ' Efface le contenu des cellules
fSuiviTLSE.Activate
fSuiviTLSE.Range("B12").Select
Application.ScreenUpdating = False
pathIndicateur = ActiveWorkbook.Path & "\"
pathSuivi = pathIndicateur
' Ouvrir les suivis
nomRep = Dir(pathSuivi, vbDirectory) ' Extrait la première entrée.
NomFicActuel = ActiveWorkbook.Name
ligAjoutIndic = 12
Do While nomRep <> "" ' Commence la boucle
If nomRep <> "." And nomRep <> ".." And nomRep <> NomFicActuel Then ' Ignore le répertoire courant et le répertoire contenant le répertoire courant.
' Utilise une comparaison au niveau du bit pour vérifier que nomFichier est un fichier ou un repertoire
If (GetAttr(pathSuivi & nomRep) _
And vbDirectory) = vbDirectory Then
ligIndicateur = 12
Set fso = CreateObject("Scripting.FileSystemObject")
For Each f In fso.GetFolder(pathSuivi & nomRep & "/Version/").Files
If Right(f.Name, 4) = ".xls" Then
Set wb = Workbooks.Open(pathSuivi & nomRep & "/Version/" & f.Name)
Set fSuivi = wb.Sheets("Data")
If f.Name = "Drawing release.xls" Then
Else
ligAjoutIndic = transfert2DWQ(fSuiviTLSE, fSuivi, fChoix) ' Transfere les donnees PVA vers Suivi
End If
wb.Close False
End If
Next f
End If
End If
nomRep = Dir ' Extrait l'entrée suivante.
Loop
'plage = "12:" & ligAjoutIndic - 1
'fSuiviTLSE.Rows(plage).Select
'Selection.Sort Key1:=Range("B12"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Worksheets("SuiviTLSE2").Select
Application.ScreenUpdating = False
fSuiviTLSE.Cells(9, "D").Select
fSuiviTLSE.Cells(9, "D") = Now
Application.ScreenUpdating = True
MsgBox "Traitement terminé", vbOKOnly + vbInformation, "Message d'information"
End Sub
Dernière édition: