Voilà je post ici parce que j'ai un problème dans mon code, l'objectif est de parcourir chaque fichier un par un et d'en récupérer des infos précises.
La récupération d'infos fonctionne parfaitement mais le parcoure de fichier non.
J'ai une méthode qui à l'air de fonctionné sur le papier mais je boucle tout le temps sur le premier fichier de la liste et je ne trouve pas d'où pourrais venir le problème.
La partie qui ne fonctionne pas se trouve au tout début je suppose mais je ne trouve pas comment la corriger..
Quelqu'un aurait-il la solution SVP :)
Sub importDonnees()
Dim principal As ThisWorkbook
Dim repertoire As String, fichier As String
Application.ScreenUpdating = False
Set principal = ThisWorkbook
repertoire = "C:\Users\Asus\Desktop\TEST MACRO\EXERCICE\calcul"
ChDir repertoire
fichier = Dir("*.xls")
'Variables de récuprérations'
Dim Gspot As String
Dim EffortApPose As String
Dim NomEtude As String
'variable d'incrémentation'
Dim i As Integer
i = 2
'Coordonnées de la celulle Gspot'
Dim GspotCell As String
'Coordonnées de la céllule EffortApTrav'
Dim EffortApPoseCell As String
'Coordonnées de la céllule NomEtude'
Dim NomEtudeCell As String
'Coordonnées céllule ident'
Dim IdentCell As String
IdentCell = "a2"
'Valeur de la RefFt'
Dim RefFt As String
'Coordonnées de la refFt'
Dim RefFtCell As String
RefFtCell = "B2"
'Coordonées de Calcul'
Dim Calcul As String
Calcul = "H2"
Do While fichier <> ""
Workbooks.Open fichier
'Récupère les valeurs et les assigne aux variables'
With ActiveSheet
Gspot = ActiveSheet.Range("J2").Value
EffortApPose = ActiveSheet.Range("w21").Value
RefFt = ActiveSheet.Range("D2").Value
NomEtude = fichier
End With
'Booleen de test pour les valeur de la refFt'
Dim ok As Boolean
While ok = False
'Coordonnées de la ref FT dans le tableau à remplir'
RefFtCell = "b" & i
'Coordodnées du Gspot dans le tableau à remplir'
GspotCell = "D" & i
'Coordonnées de l'effort dans le tableau à remplir '
EffortApPoseCell = "I" & i
'Coordonnées du nom de l'étude dans le tableau à remplir'
NomEtudeCell = "G" & i
'Coordonnées de calcul dans le tableau à remplir'
Calcul = "H" & i
i = i + 1
If Range(RefFtCell).Value = RefFt Then
ok = True
'Assigne les valeurs dans le tableau à remplir'
Range(GspotCell) = Gspot
Range(EffortApPoseCell) = EffortApPose
Range(NomEtudeCell) = NomEtude
'suprime le .xls dans le nom des études'
Range(NomEtudeCell) = Left(Range(NomEtudeCell), Len(Range(NomEtudeCell)) - 4)
If ActiveSheet.Range("w21").Interior.ColorIndex = 46 Or ActiveSheet.Range("w21").Interior.ColorIndex = 3 Then
Range(Calcul) = "nok"
Range(Calcul).Interior.ColorIndex = 22
Range(Calcul).Font.ColorIndex = 9
Else
If ActiveSheet.Range("w21").Interior.ColorIndex = 43 Then
Range(Calcul) = "ok"
Range(Calcul).Interior.Color = RGB(169, 253, 180)
Range(Calcul).Font.ColorIndex = 10
End If
End If
End If
Wend
ok = False
i = 2
ActiveWorkbook.Close
Loop
End Sub
Je dirais tout simplement que dans ta boucle, tu ne changes jamais la valeur de fichier. Ce qui explique pourquoi tu boucles inlassablement sur le premier fichier (et de manière infinie j'imagine). Il faut repréciser au programme par « fichier = Dir() » que tu prends l'entrée suivante.
La solution serait de faire une boucle dans le style :
[...]
Do While fichier <> ""
[...]
fichier = Dir()
Loop
[...]
J'espère que cela résoudra ton problème. Pour ma part j'ai essayé de mon côté et ça fonctionne assez bien.
A bientôt,
- Edité par Matheop 22 août 2017 à 17:58:13
Le Kansas City Shuffle.. c’est quand tout le monde regarde à gauche et que tu vas à droite.
Le Kansas City Shuffle.. c’est quand tout le monde regarde à gauche et que tu vas à droite.