FUSIONNER LES DONNÉES DES FEUILLES DE PLUSIEURS CLASSEURS EXCEL EN UN SEUL CLASS
jjDai
Messages postés291Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention13 mars 2015
-
23 mars 2010 à 21:40
deuxmains
Messages postés7Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention 7 avril 2010
-
29 mars 2010 à 10:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
deuxmains
Messages postés7Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention 7 avril 2010 29 mars 2010 à 10:37
Bonjour,
dans le même ordre d'idée tu devrais forcer la déclaration des variables (option explicit)ta variable lastrow1 est devenue mastrow1
Je ne comprends pas non plus l'utilité des faire 3 variables lastrow alors qu'elle calcul la même chose
bonne prog
deuxmains
jjDai
Messages postés291Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention13 mars 2015 23 mars 2010 à 21:40
Bonjour
-------------------------------------
Il est délicat de travailler sur les objets courants.
Il suffit que l'utilisateur est la gâchette facile sur la souris, et le classeur que l'on croyait actif n'est plus le même et tout part en vrille.
Ceci est particulièrement vrai sur les traitement un peu long.
Plutôt que d'utiliser ActiveSheet ou cells directement,
Iil vaudrait mieux travailler sur des instances d'objet:
exemple:
dim wb as workbook
set wb = Workbooks.Open fichier 'ouverture d'un fichier
'et ensuite utiliser wb pour travailler sur ce classeur
'par exemple pour mettre une valeur dans une feuille:
wb.worksheets("nomDeLaFeuille").cells(1,1)= laValeur
ou
dim ws as worksheet
set ws=wb.worksheets("nomDeLaFeuille")
ws.cells(1,1)= laValeur
Attention si depuis Excel 2000 il y a bien 65536 lignes dans un classeurs, dans les versions antérieure il n'y en a que la moitié (Beaucoup d'applis Excel tournent encore sur des versions 97).
Toute les feuilles du classeur source sont traitées, quid des feuilles masquées par exemple ?
de plus c'est la collection Sheets qui est parcourue, mais dans sheets il peut y avoir d'autre type de feuilles: graphique, ancienne macro excel 4 (he oui y en a encore!!!) ...
Il est préférable de parcourir la collection worksheets, ou alors il faut tester le type de la feuille.
J'espère que ces remarques t'aideront à fiabiliser ce code.
JJDAI
29 mars 2010 à 10:37
dans le même ordre d'idée tu devrais forcer la déclaration des variables (option explicit)ta variable lastrow1 est devenue mastrow1
Je ne comprends pas non plus l'utilité des faire 3 variables lastrow alors qu'elle calcul la même chose
bonne prog
deuxmains
23 mars 2010 à 21:40
-------------------------------------
Il est délicat de travailler sur les objets courants.
Il suffit que l'utilisateur est la gâchette facile sur la souris, et le classeur que l'on croyait actif n'est plus le même et tout part en vrille.
Ceci est particulièrement vrai sur les traitement un peu long.
Plutôt que d'utiliser ActiveSheet ou cells directement,
Iil vaudrait mieux travailler sur des instances d'objet:
exemple:
dim wb as workbook
set wb = Workbooks.Open fichier 'ouverture d'un fichier
'et ensuite utiliser wb pour travailler sur ce classeur
'par exemple pour mettre une valeur dans une feuille:
wb.worksheets("nomDeLaFeuille").cells(1,1)= laValeur
ou
dim ws as worksheet
set ws=wb.worksheets("nomDeLaFeuille")
ws.cells(1,1)= laValeur
Attention si depuis Excel 2000 il y a bien 65536 lignes dans un classeurs, dans les versions antérieure il n'y en a que la moitié (Beaucoup d'applis Excel tournent encore sur des versions 97).
Toute les feuilles du classeur source sont traitées, quid des feuilles masquées par exemple ?
de plus c'est la collection Sheets qui est parcourue, mais dans sheets il peut y avoir d'autre type de feuilles: graphique, ancienne macro excel 4 (he oui y en a encore!!!) ...
Il est préférable de parcourir la collection worksheets, ou alors il faut tester le type de la feuille.
J'espère que ces remarques t'aideront à fiabiliser ce code.
JJDAI