Programmation vba Dir probleme
Résolu
colbubu
-
17 mai 2010 à 13:12
colbubu -
colbubu -
bonjour a tous,
en regroupant les infos du net j ai réussi a obtenir un code qui marche.... mais a moitié
voila mon petit probleme j ai un dossier avec pluieurs fichiers asc et plusieurs classeurs xlsx je souhaite prendre les asc dans excel puis les découper en tableau les copier et les coller dans le classeur excel correspondant
cependant dans le code que j ai il saute parfois un classeur et apres le dernier classeur le code FichS=Dir ne marche pas
je vous envoie une partie de mopn code pour que vous puissiez en juger
merci pour votre aide
en fait le probleme vient du double dir en bas mais je sais pas ocmment régler ça
en regroupant les infos du net j ai réussi a obtenir un code qui marche.... mais a moitié
voila mon petit probleme j ai un dossier avec pluieurs fichiers asc et plusieurs classeurs xlsx je souhaite prendre les asc dans excel puis les découper en tableau les copier et les coller dans le classeur excel correspondant
cependant dans le code que j ai il saute parfois un classeur et apres le dernier classeur le code FichS=Dir ne marche pas
je vous envoie une partie de mopn code pour que vous puissiez en juger
Code : Sub format() ' ' format Macro ' 'dimensionner les variables Dim objworkbooksource As Workbook Dim objworkbookcible As Workbook Dim Repertoire As String Dim FichS As String Dim FichD As String Repertoire = "C:\Users\Homer II\Documents\" FichS = Dir(Repertoire & "*.asc") FichD = Dir(Repertoire & "*.xlsx") Do While FichS <> "" Workbooks.Open Repertoire & FichS 'mettre les données .csv en tableau xl Set objworkbooksource = ActiveWorkbook Columns("A:A").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=False, Comma:=True, Space:=False, Other:=False Columns("A:B").Select Selection.Delete Shift:=xlToLeft Range("1:2,4:4,6:8").Select Range("A6").Activate Selection.Delete Shift:=xlUp 'copier les données dans le tableau correspondant Set objworkbookcible = Application.Workbooks.Open(Repertoire & FichD) objworkbooksource.Activate Range("A3", Cells(3, 1).End(xlDown).End(xlToRight)).Copy objworkbookcible.Activate Sheets("Values").Activate Range("D3").PasteSpecial Application.CutCopyMode = False objworkbooksource.Close savechanges:=False 'sauvergarder les données sous un nouvel emplacement objworkbookcible.SaveAs Replace(FichD, "xlsx", "xls"), FileFormat:=xlExcel8 objworkbookcible.Close FichS = Dir FichD = Dir Loop End Sub
merci pour votre aide
en fait le probleme vient du double dir en bas mais je sais pas ocmment régler ça
A voir également:
- Fonction dir vba
- Fonction si et - Guide
- Win dir stat - Télécharger - Gestion de fichiers
- Fonction find vba - Astuces et Solutions
- Fonction miroir - Guide
- Dir/s - Forum Autoit / batch
1 réponse
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
646
17 mai 2010 à 14:34
17 mai 2010 à 14:34
Bonjour,
Je n'ai pas regardé en détail mais néanmoins un point me choque.
La fonction Dir sans argument signifie trouver le fichier suivant correspondant au dernier Dir avec argument (chemin et type de fichier)
Donc mon diagnostic rapide est le suivant :
1/ FichS = Dir donne le fichier suivant .xlsx et non pas le suivant .asc
2/ FichD = Dir donne aussi encore le suivant .xlsx et donc c'est cette instruction qui la première donne un fichier vide (quand il n'y en a plus) donc l'instruction FichS = Dir dans la boucle suivante provoque une erreur.
Il faut donc imbriquer différemment la boucle pour les deux types de fichiers mais la j'ai pas fais l'exercice...
A+
Je n'ai pas regardé en détail mais néanmoins un point me choque.
La fonction Dir sans argument signifie trouver le fichier suivant correspondant au dernier Dir avec argument (chemin et type de fichier)
Donc mon diagnostic rapide est le suivant :
1/ FichS = Dir donne le fichier suivant .xlsx et non pas le suivant .asc
2/ FichD = Dir donne aussi encore le suivant .xlsx et donc c'est cette instruction qui la première donne un fichier vide (quand il n'y en a plus) donc l'instruction FichS = Dir dans la boucle suivante provoque une erreur.
Il faut donc imbriquer différemment la boucle pour les deux types de fichiers mais la j'ai pas fais l'exercice...
A+
17 mai 2010 à 14:49
merci pour ton aide
17 mai 2010 à 15:13
Par contre je ne comprends pas comment se fait la correspondance entre les noms de fichiers asc et xlsx. Ont-il tout simplement le même nom avec une extension différente ?
17 mai 2010 à 15:21
je considere ce probleme comme résolu
merci pour ton aide