[VB Excel] - Remplissage Classeur
Fermé
Ancelot
-
14 sept. 2009 à 20:11
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 15 sept. 2009 à 14:22
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 15 sept. 2009 à 14:22
A voir également:
- [VB Excel] - Remplissage Classeur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Excel remplissage conditionnel - Guide
3 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
15 sept. 2009 à 10:31
15 sept. 2009 à 10:31
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
15 sept. 2009 à 14:22
15 sept. 2009 à 14:22
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