Salut tout le monde
Voila g un code mais il ne fonctionne pas comme je le voudrai !
Pourquoi ?
Il a l’air si bien !!
le truc ki plante c que les dates ne changent pas…
d et m ne tourne pas…
Pourquoi ?
Voici le code
Sub essai()
Sheets("Feuil1").Activate
n = 2
For m = 1 To 12
For d = 1 To 31
fichier = "C:\Divers\Bilanj\ & d & _ & m & _06.bil"
If FichierExiste(fichier) Then
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Divers\Bilanj\ & d & _ & m & _06.bil", Destination:=Cells(4, n))
.Name = "d_m_06"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 44
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = "|"
.TextFileColumnDataTypes = Array(9, 9, 1, 9)
.TextFileDecimalSeparator = "."
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Else
End If
n = n + 1
Next d
Next m
Si tu exécutes ton code pas à pas, tu devrais voir les valeurs de d et de m tourner.
En revanche, tu devrais aussi voir que ton code est certainement faux au niveau des noms de fichiers.
J’ ai peut oublier de vous dire ce qu’etait ma fonction fichierexiste.
voila le code enntier:
Code
Function FichierExiste(filespec)
’ --------------------------------
’ Vérifie l’existence d’un fichier
’ Renvoie True si le fichier existe
’ --------------------------------
Dim fso, msg
Set fso = CreateObject(“Scripting.FileSystemObject”)
FichierExiste = IIf(fso.FileExists(filespec), True, False)
End Function
Sub essai()
Sheets("Feuil1").Activate
n = 2
For m = 1 To 12
For d = 1 To 31
fichier = "C:\Divers\Bilanj\" & d & "_" & m & "_06.bil"
If FichierExiste(fichier) Then
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Divers\Bilanj\" & d & "_" & m & "_06.bil", Destination:=Cells(4, n))
.Name = d & "_" & m & "_06"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 44
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = "|"
.TextFileColumnDataTypes = Array(9, 9, 1, 9)
.TextFileDecimalSeparator = "."
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Else
End If
n = n + 1
Next d
Next m
Comment vois tu que d et m prenne telle ou telle valeur ?
G essayer plusieur petite chose pour voir ce qui ne marchait pas.
et j’ai observe que les problemes viennentde:
fichier = "C:\Divers\Bilanj\" & d &"_" & m & "_06.bil"
If FichierExiste(fichier) Then
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;"C:\Divers\Bilanj\ "& d &" _ "& m & "_06.bil"", Destination:=Cells(4, n))
Pour suivre les valeurs, j’utilise une méthode très arcaïque, mais qui fonctionne.
Commence par mettre un point d’arrêt par exemple sur la ligne “Next m”.
Pour cela tu mets ton curseur sur cette ligne et tu appuies sur la touche <F9>.
En suite tu lances la macro et quand elle passera sur le point d’arrêt, elle s’arrêtera.
déplace alors le pointeur de la souris sur la variable dont tu veux connaitre la valeur à cet instant (pas besoin de cliquer).
Donc si tu mets ton pointeur de souris sur la variable d, tu verras qu’elle vaut bien 32.
Les noms de fichiers tournent, c’est certain, nous l’avons vérifié plus haut.
Désolé, je ne peux t’aider car je ne sais pas à quoi sert la ligne
ActiveSheet.QueryTables.Add(Connection:= "TEXT;C:\Divers\Bilanj\" & d & "_" & m & "_06.bil", Destination:=Cells(4, n))
Je sais bien à quoi sert le “with” par rapport aux lignes suivantes jusqu’à “EndWith”, mais je ne sais pas ce que fait le “QueryTables.Add(…)”.
[edit]
Une petite idée tout de même :
Tes fichiers existent-ils réellement et sont-ils bien “détectés” par ta fonction “FichierExiste” ?
Pour le savoir, met un point d’arrêt sur la ligne “If FichierExiste(fichier) Then”, puis lance ta macro et exécute-là pas à pas (touche <F8>).
Les noms de fichiers recherchés ne comportent pas de zéro (ex : C:\Divers\Bilanj\5_7_06.bil pour le fichier du 5 juillet 2006).
Tes fichiers réels en comportent-ils (ex : C:\Divers\Bilanj\05_07_06.bil pour le fichier du 5 juillet 2006) ?
[/edit]