Probleme avec le code vba importation des fichiers
h_adil
Messages postés231Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention10 juin 2009
-
2 juil. 2007 à 11:26
h_adil
Messages postés231Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention10 juin 2009
-
2 juil. 2007 à 15:22
bonjour,
ya quelque jours une personne ( que je remercie ) ma envoyer le code ci dessous. pour faciliter l'importation des fichiers(importer tous les fichiers dans un repertoire) dans ma base de données.
et là enfait je suis entrain de tester ce code et j'ai eu quelque probleme de compilation.
le premiere est :losque je compile pas à pas le code narrive pas a rentrer dans la contion If UBound(strTabName) 1 And UCase(Right(strFile.Name, 4)) ".TXT" Then<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>
If Len(strTabName(1)) = 18 Then
imax = imax + 1
ReDim Preserve Tableau(2, imax)
Tableau(1, imax) = strTabName(0)
Tableau(2, imax) = strTabName(1)
End If
je sais pas pourquoi. et donc il donne aucune valeur a mon imax
le seconde : lorsque j'ai donnée directement une valeur a mon imax =11 (le nombre de fichier que j'ai reçus aujourdhui par exemple), il me donne une erreur incompatibilité de type
dans la condition If CStr(Tableau(2, i)) > CStr(Tableau(2, i + 1)) Then.
pouvez vous me dire il est où le problème.
la totalité du code est ci dessous :
Sub TriRepertoire()
Dim objFso, objShell
Dim strDesktop, strPath, strFile, strTabName
Dim i, imax, z, valeur, Cible, liste
Dim Tableau As Variant
Set objFso = CreateObject("Scripting.FileSystemObject")
h_adil
Messages postés231Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention10 juin 2009 2 juil. 2007 à 11:45
su sa peux vous aider voila le format de mon fichier CDE20070702090603189.txt
et je suis certain que le probeleme est dans cette partieFor Each strFile In objFso.GetFolder(strPath).Files<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
strTabName = Split(strFile.Name, "_")
'le nom du fichier sous la forme: nom de fichier_20070614115213.txt
For Each strFile In objFso.GetFolder(strPath).Files
strTabName = Split (strFile.Name, "_")
'le nom du fichier sous la forme: nom de fichier_20070614115213.txt If UBound(strTabName) 1 And <gras>UCase(Right(strFile.Name, 4))</gras> ".TXT" Then
If Len(strTabName(1)) = 18 Then
imax = imax + 1
ReDim Preserve Tableau(2, imax)
Tableau(1, imax) = strTabName(0)
Tableau(2, imax) = strTabName(1)
End If
End If
Next
ça certe a quoi les fonction : SPLIT, UBOUND, UCASE.
programation .....
h_adil
Messages postés231Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention10 juin 2009 2 juil. 2007 à 11:59
j'arrive pas a comprendre pourquoi j'ai un message d'erreur incompatibilité de type lorsque j'enleve la fonction slipt car apparament je n'ai pas besoin pour le moment
For Each strFile In objFso.GetFolder(strPath).Files
strTabName = strFile.Name
'le nom du fichier sous la forme: nom de fichier_20070614115213.txt If UBound(strTabName) 1 And UCase(Right(strFile.Name, 4)) ".TXT" Then
If Len(strTabName(1)) = 18 Then
imax = imax + 1
ReDim Preserve Tableau(2, imax)
Tableau(1, imax) = strTabName(0)
Tableau(2, imax) = strTabName(1)
End If
End If
Next
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201826 2 juil. 2007 à 12:47
Bonjour à tous
Bonjour h_adil,
Normal que cela ne répond plus à ta demande
Dans le topic http://www.vbfrance.com/infomsg_LECTURE-FICHIER-TXT-DYNAMIQUE-PARTIR-VBA_970108.aspx#4 tu dis que tes fichiers se nomment comme
"C:\Documents and Settings\Bureau\dossier\fichier_20070614115213.TXT" (date sur 18 caractères)
et maintenant c'est "CDE20070702090603189.txt" (date sur 17 caractères)
donc le split avec "_" ne renvoie rien, ni le test len(....Name)
h_adil
Messages postés231Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention10 juin 2009 2 juil. 2007 à 12:52
oui vous avez raison, et j'ai modifié les parametres pourqu'il le prend en compte, car le nombre de caractères dans le nom de fichier que je reçois n'est pas normalisé du coup j'ai opté pour la synthaxe suivante :
For Each strFile In objFso.GetFolder(strPath).Files
strTabName = Split(strFile.Name, ".txt")
'le nom du fichier sous la forme: nom de fichier_20070614115213.txt If UBound(strTabName) 1 And UCase(Right(strFile.Name, 4)) ".TXT" Then
If Len(strTabName(0)) >= 2 Then
imax = imax + 1
ReDim Preserve Tableau(2, imax)
Tableau(1, imax) = strTabName(0)
Tableau(2, imax) = strTabName(1)
End If
End If
Next
lorsque je compile pas à pas j'arrive jusqu'a ReDim Preserve Tableau(2, imax) et il me donne un message d'erreur "incomptibilité de type". alors qu emoi j'ai declaré mon table dim tableau.
et franchement comment resoudre ce probleme
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 2 juil. 2007 à 14:07
Les noms de tes fichiers ne contiennent plus de caractère souligné, donc l'utilisation d'un tableau et de Split sur ce caractère "_" n'a plus sa place. Ton tableau n'aura jamais d'Index 1 et causera une erreur.
Il te faudra changer ta méthode de travail pour reconnaître les fichiers valides.
Comme on ne connaît le format des noms de fichiers, on ne peut pas t'aider plus que ça...