bonjour au forum
chaque mois je reçois 20 fichiers comportant chacun environ 1000 cellules
les fichiers sont ous formatés de la meme façon, il y a des entetes avec du texte et des nombres dans les autres cellules
je souhaite réaliser un fichier identique aux 20 que je reçois mais qui fait la somme de leur contenu en evitant d'avoir à saisir pour chaque cellule comme je l'ai fait dans l'exemple joint (le chemin est evidemment à modifier)
Re : sommer le contenu de 1000 cellules dans 20 fichiers par macro
re bonjour Kiki29; le forum
Merci pour ta proposition mais ce n'est pas cela que je souhaite; je me suis mal exprimé
Les 20 fichiers sont tous formatés de la meme façon, je veux en créer un 21eme egalement formaté de la meme façon mais qui reprend dans ses resultats la somme de la cellule A1 des 20 fichiers, la somme de la cellule A2 des 20 fichiers.... Il y a des cellules contenant du texte et là je veux reprendre l'intitulé.
J'espere que c'est plus clair
Bonne fin de journée
Re : sommer le contenu de 1000 cellules dans 20 fichiers par macro
Re bonsoir
Pour preciser un peu plus et c'est le cas dans l'exemple que j'ai posté le resultat des cellules A2 jusqu'à A9 doit affichier 3, le resultat des cellules B2 jusqu'à B 9 doit etre 6 et la cellule A1 doit afficher val1...
c'est une replique des 20 fichiers concernant le texte mais chaque cellule doit afficher le cumul des memes cellules des 20 fichiers..
j'espere etre plus clair
merci pour vos suggestions
Re : sommer le contenu de 1000 cellules dans 20 fichiers par macro
Bpnjour kiki29; le forum
je prends conscience que mon exposé n'etait pas clair donc j'ai refait un exemple plus parlant
je redetaille ce que je souhaite faire faire à la macro dans le fichier
Re : sommer le contenu de 1000 cellules dans 20 fichiers par macro
Bonjour Boudu, kiki,
Ci joint proposition en laissant les fichiers sources fermés
les formules de somme (D2,D4,B10 à D10 ) sont écrites dans le classeur somme.xls ==> gain de temps, moins de transfert à écrire...
tu as quans m^me du boulot d'écriture avec les ref de cellules à extraire dans la macro "consolider"
Code:
For cptr = 1 To 12 'à adapter à ton nombre de cellules
Plage = Choose(cptr, "A2", "B2", "C2", "A4", "B4", "C4", "B8", "B9", "C8", "C9", "D8", "D9") 'bon courage!!!
Re : sommer le contenu de 1000 cellules dans 20 fichiers par macro
Bonsoir Michel le forum
merci beaucoup pour cette solution qui fonctionnne tres bien
effectivement un peu de boulot pour la saisie de toutes les cellules mai quand meme beaucoup moins que ce que j'avais avec ma solution
Re : sommer le contenu de 1000 cellules dans 20 fichiers par macro
Re bonsoir Michel le forum
Je pondere un peu mon optimisme car effectivement je rest à saisir un tres grand nombre de cellules
n'est_il pas possible de faire une variable plus globale qui additionnerait quand c'est un nombre et qui recopierait quand c'est du texte??
Je sais, je suis un peu exigeant mais vraiment ça serait plus simple pour mes vrais fichiers
Re : sommer le contenu de 1000 cellules dans 20 fichiers par macro
Salut, il serait intéressant que tu fournisses un fichier complet avec ses 1000 lignes, cela permettrait peut-être de trouver une formule VBA pour générer les cellules concernées dans un tableau , ici Plage = Array("A2", "B2", "C2","A4", "B4", "C4",......etc)
Re : sommer le contenu de 1000 cellules dans 20 fichiers par macro
Bonjour,
Kiki a raison, on attend ton fichier zippé... mais peut être faudra t il changer la disposition des cellules (plage Ax:By) si tu en est d'accord. en effet, pour utiliser ADO, il faut que les colonnes possèdent le m^me type de données (texte ou nombre)... et peut avoir des "pas" réguliers pour créer des boucles
dans l'attente
Bon fin de WE
Re : sommer le contenu de 1000 cellules dans 20 fichiers par macro
bonsoir Michel Kiki29 le forum
Je suis en weeke nd et c'est un fichier professionnel donc je ne l'ai evidemment pas avec moi..
Je tiens à preciser que les 21 fichiers sont rigoureusement identiques: les 20 sources et celui que je souhaite generer qui contient la macro (ce sont des statistiques qui sont générées par 20 sites et dont je souhaite faire la synthese)
cela veut dire qu'effectivement les lignes d'entete sont toutes au meme emplacememnt, les resultats au meme emplacememnt et les totaux au meme emplacememnt (je prefere d'ailleurs une recopie des totaux pour pouvoir verifier la coherence plutot que des formules ajoutées au 21eme fichier (synthese)
c'est pour eviter d'avoir à faire la saisie du type array(toutes les cellules) que j'ai posté
Je n'ai pas parlé de 1000 lignes mais de 1000 cellules à recopier au meme emplacement dans le 21eme fichier, pour l'instant ça donne:
Range("A2").Select
ActiveCell.FormulaR1C1 = _
"=[3.xls]Feuil1!R2C1+[2.xls]Feuil1!R2C1+[1.xls]Feuil1!R2C1"
Range("B2").Select
ActiveCell.FormulaR1C1 = _
"=[3.xls]Feuil1!R2C2+[2.xls]Feuil1!R2C2+[1.xls]Feuil1!R2C2"
Range("C2").Select
ActiveCell.FormulaR1C1 = _
"=[3.xls]Feuil1!R2C3+[2.xls]Feuil1!R2C3+[1.xls]Feuil1!R2C3"
... alors vous voyez ce que ça represente pour les 1000 cellules..
Il est impossible de changer l'emplacement des cellules car tous les fichiers sont formatés de la meme maniere donc ADO sera vraisemblablement impossible
Je serai mercredi au boulot et posterai l'un des 20 fichiers zippé à ce moment-là
Merci et bonne fin de week end
Re : sommer le contenu de 1000 cellules dans 20 fichiers par macro
bonjour Michel, kiki29, le forum
Voivi l'un des 20 fichiers qui doit etre additionné, ce fichier ne comprend que des valeurs
Le resultat (le 21eme) doit reprendre la disposition exacte des cadres, le texte et additionner le contenu des dellules dans lesquelles il y a des nombres
Re : sommer le contenu de 1000 cellules dans 20 fichiers par macro
Salut, en reprenant et adaptant la solution proposée par michel_m, il te restera à la vérifier et éventuellement à compléter le fichier texte ( CellulesALire.txt ) qui contient les cellules à balayer.
pour ce qui est du distinguo numérique/texte à priori placer à l'endroit idoine :
Code:
If IsNumeric(ShStats.Range(sPlage(i))) Then
ShStats.Range(sPlage(i)) = ShStats.Range(sPlage(i)) + ShStats.Range("F2")
Else
ShStats.Range(sPlage(i)) = ShStats.Range("F2")
End If