Extraire les données d'un fichier Excel pour les transférer

ShinSoccer - 23 oct. 2013 à 10:37
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 29 oct. 2013 à 13:09
Bonjour,
J'ai actuellement quelques problèmes, j'aimerais transférer les chiffres d'une colonne bien particulier sur mon fichier Excel 1 afin de les concaténer avec les autres colonnes de mon fichier Excel 2

Est ce que vous avez un exemple de programme qui me permettrait de faire ça ?
Le but étant de garder la macro afin de pouvoir l'utiliser chaque mois et de pouvoir faire ça avec tous les fichiers Excel qui vont être tirés.

1 réponse

tyros25 Messages postés 127 Date d'inscription vendredi 2 janvier 2009 Statut Membre Dernière intervention 5 novembre 2017
Modifié par tyros25 le 23/10/2013 à 11:22
Salut,

Voici un exemple dont tu peut t'inspirer :

\\Definition des fichiers
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)


\\Definition des feuilles
Set ws1 = wb1.Sheets("Tableau1")
Workbooks(nom).Activate
Set ws2 = Workbooks(nom).Sheets("Tableau1")


\\Copie depuis le fichier Excel1 à Excel2
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


Ca devrait marcher comme cela :)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 oct. 2013 à 11:37
Bonjour, tyros25,
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 :
ws1.range("A1:AA99").copy destination;= ws2.range("A1")
0
tyros25 Messages postés 127 Date d'inscription vendredi 2 janvier 2009 Statut Membre Dernière intervention 5 novembre 2017
23 oct. 2013 à 15:17
Effectivement, vu comme ça ... ^^'
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 23/10/2013 à 15:38
Pa "vu comme çà", tyros25, mais "vu comme l'entend VBA" ...

PS : Ce que faisait faire ton code à VBA, c'étaient des gestes Excel, pas du VBA ... Comprends cette différence fondamentale.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié par jordane45 le 23/10/2013 à 19:01
Ucfoutu,
je ne suis pas totalement d'accord avec toi concernant cette remarque:
Ce que faisait faire ton code à VBA, c'étaient des gestes Excel, pas du VBA ... Comprends cette différence fondamentale.
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 ^^
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 23/10/2013 à 19:42
Je vais t'expliquer ce que je veux dire.
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)
toto = ws1.Range("A1:AA99")
ws2.Range("A1:AA99") = toto

voilà
0
Rejoignez-nous