[VB Excel] - Remplissage Classeur
Ancelot
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je vous écris en stress, j'ai un petit problème dans ma macro et je ne comprends vraiment pas pourquoi ca bugge:
Alors le problème: On a des fichiers toto.xls dans plusieurs dossiers W1, W2, W3, etc.
On doit remplir le tableau sur lequel s'execute la macro avec pour chaque ligne:
A, B, C
W1, (quelques infos de toto.xls)
W2, (les mêmes infos, mais de celui sous le dossier W2)
etc..
Pour le collage des infos, je suis passé par un enregistrement de macro. ensuite, je lui ai fait ouvrir puis fermer les dossiers jusqu'a ce qu'il n ait plus de dossier a ouvrir (arrivée a une cellule dans la colonne A vide)
Je pensais avoir tt bien fait, ET NON, le programme bugge, sans que je comprenne vraiment pourquoi
Pouvez vous m'aider??
Sub toto_Fill()
' toto_Fill Macro
' Macro enregistrée le 14/09/2009 par moi
'
Dim i As Integer
Dim Chemin As String
Dim Filename As String
i = 3
Do
Chemin = "C:\Documents and Settings\st30945\Desktop\A350 STATS\" & Range("A" & i)
Workbooks.Open Filename:=Chemin & "\toto.XLS"
Windows("toto.XLS").Activate
ActiveWindow.Close
Range("G28").Select
Selection.Copy
Windows("ClasseurAremplir.xls").Activate
Range("B3").Select
ActiveSheet.Paste
Windows("toto.XLS").Activate
i = i + 1
Loop While Range("A" & i) <> ""
Workbooks(Filename).Close
End Sub
Je vous écris en stress, j'ai un petit problème dans ma macro et je ne comprends vraiment pas pourquoi ca bugge:
Alors le problème: On a des fichiers toto.xls dans plusieurs dossiers W1, W2, W3, etc.
On doit remplir le tableau sur lequel s'execute la macro avec pour chaque ligne:
A, B, C
W1, (quelques infos de toto.xls)
W2, (les mêmes infos, mais de celui sous le dossier W2)
etc..
Pour le collage des infos, je suis passé par un enregistrement de macro. ensuite, je lui ai fait ouvrir puis fermer les dossiers jusqu'a ce qu'il n ait plus de dossier a ouvrir (arrivée a une cellule dans la colonne A vide)
Je pensais avoir tt bien fait, ET NON, le programme bugge, sans que je comprenne vraiment pourquoi
Pouvez vous m'aider??
Sub toto_Fill()
' toto_Fill Macro
' Macro enregistrée le 14/09/2009 par moi
'
Dim i As Integer
Dim Chemin As String
Dim Filename As String
i = 3
Do
Chemin = "C:\Documents and Settings\st30945\Desktop\A350 STATS\" & Range("A" & i)
Workbooks.Open Filename:=Chemin & "\toto.XLS"
Windows("toto.XLS").Activate
ActiveWindow.Close
Range("G28").Select
Selection.Copy
Windows("ClasseurAremplir.xls").Activate
Range("B3").Select
ActiveSheet.Paste
Windows("toto.XLS").Activate
i = i + 1
Loop While Range("A" & i) <> ""
Workbooks(Filename).Close
End Sub
A voir également:
- [VB Excel] - Remplissage Classeur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
3 réponses
Bonjour,
1/ Filename est un nom réservé VBA: tu n'as pas à le déclarer (dim filename... à supprimer) ni à l'utiliser dans
Workbooks(Filename).Close
crées plutôt une variable fichier
fichier=Chemin & "\toto.XLS"
Workbooks.Open Filename:= fichier
....
Workbooks(fichier).Close
2/ D'autre part, ta macro envoie toujours dans B3
au lieu de Range("B3")
utilises cells(i,2) ou range("B" & i)
3/ tu gagneras un temps fou en supprimant les copy_paste et select-selection
4/ pour éviter le scintillement de l'écran et ganer encore du temps, en début de macro tu écris
5/ Workbooks(fichier).Close en dernière est à supprimer (de toutes façons il aurait du être dans la boucle) car il est remplacé par: activeworkbook.close
1/ Filename est un nom réservé VBA: tu n'as pas à le déclarer (dim filename... à supprimer) ni à l'utiliser dans
Workbooks(Filename).Close
crées plutôt une variable fichier
fichier=Chemin & "\toto.XLS"
Workbooks.Open Filename:= fichier
....
Workbooks(fichier).Close
2/ D'autre part, ta macro envoie toujours dans B3
au lieu de Range("B3")
utilises cells(i,2) ou range("B" & i)
3/ tu gagneras un temps fou en supprimant les copy_paste et select-selection
Workbooks.Open Filename:= fichier donnee=range("G28") activeworkbook.close cells(i,2)=donnee
4/ pour éviter le scintillement de l'écran et ganer encore du temps, en début de macro tu écris
Application.ScreenUpdating = False
5/ Workbooks(fichier).Close en dernière est à supprimer (de toutes façons il aurait du être dans la boucle) car il est remplacé par: activeworkbook.close
Super!! Merci beaucoup pour ces conseils!!
Un dernier point. quand j'exécute, Excel veut me sauver le fichier. Donc je suis obligé de cliquer non t c'est fastidieux.
Y a-t-il une commande qui permet de cliquer non (comme ca je l inclue dans la boucle) ?
Merci encore pour ton aide
Un dernier point. quand j'exécute, Excel veut me sauver le fichier. Donc je suis obligé de cliquer non t c'est fastidieux.
Y a-t-il une commande qui permet de cliquer non (comme ca je l inclue dans la boucle) ?
Merci encore pour ton aide
re,
essaies
pour le fun, ci dessous macro très rapide sans ouvrir les fichiers; valable surtout si beaucoup de "toto" et peu de cellules à collecter
essaies
with activeworkbook .saved .close end with
pour le fun, ci dessous macro très rapide sans ouvrir les fichiers; valable surtout si beaucoup de "toto" et peu de cellules à collecter
Sub recuperer_G28() Dim chemin As String Dim derlig As Long, cptr As Long 'initialisation cptr = 3 derlig = Range("A65536").End(xlUp).Row Application.ScreenUpdating False 'collecte For cptr = 3 To derlig chemin = "D:\documents" & "\" & Cells(cptr, 1) ' à adapter 'macro dite de "Walkenbach" (auteur présumé) non testée sur XL2007 Cells(cptr, 2) = ExecuteExcel4Macro("'" & chemin & "\[toto.xls]feuil1'!R28C7") 'R28C7 <==> G28 Next End Sub