Set wb1 = ThisWorkbook
chemin = ThisWorkbook.Path & "\" 'Indique que l'on se trouve dans le dossier où ce fichier excel est.
nom=Excel2.xls
Set wb2 = Workbooks.Open(chemin & nom)
Set ws1 = wb1.Sheets("Tableau1")
Workbooks(nom).Activate
Set ws2 = Workbooks(nom).Sheets("Tableau1")
wb1.Activate
ws1.Select
Set Plage1 = ActiveSheet.Range("A1:AA99")
wb2.Activate
ws2.Select
Set Plage2 = ActiveSheet.Range("A1:AA99")
Plage2 = Plage1.Value
wb1.Activate
ws1.Select
wb2.Close
23 oct. 2013 à 11:37
Quelle est donc la nécessité de ces select, constitutions de plages, etc ... ?
Alourdissements inutiles.===>>
ta 2ème partie n'est rien d'autre que ceci :
23 oct. 2013 à 15:17
Modifié par ucfoutu le 23/10/2013 à 15:38
PS : Ce que faisait faire ton code à VBA, c'étaient des gestes Excel, pas du VBA ... Comprends cette différence fondamentale.
Modifié par jordane45 le 23/10/2013 à 19:01
je ne suis pas totalement d'accord avec toi concernant cette remarque:
Ton code ( le COPY) est un "geste" Excel. Le fait de passer par la propriété VALUE par contre c'est du VBA....
... A moins que je n'ai pas bien compris le sens de ta phrase...
Mais bon, l'essentiel c'est que ça fonctionne et surtout qu'avec le COPY ça fait moins de lignes à écrire ^^
Modifié par ucfoutu le 23/10/2013 à 19:42
le Range.Copy que j'ai utilisé est une méthode VBA à ne pas confondre avec la méthode Copy (simple, qui alimente le presse-papier et qu'utilise Excel)
Activer un classeur, y sélectionner une plage sont des gestes Excel
J'ai choisi la méthode Range.Copy, mais aurais également pu choisir l'utilisation d'un tableau, sans ces gestes vba que je critique.
Il aurait alors suffi de 2 lignes (une avec la méthode Copy)
voilà