Macro sous excel 2007

potvinalex Messages postés 3 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 27 novembre 2009 - 20 nov. 2009 à 20:23
potvinalex Messages postés 3 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 27 novembre 2009 - 27 nov. 2009 à 16:58
Bonjour a tous,
J'ai un problème sur lequel je travail depuis plusieurs jours et je n'y arrive toujours pas. J'aimerais si c'est possible que l'un de vous m'aide ou me dise si ce que je demande est possible ou non.

J'ai une fichier excel qui contient 300 feuilles environ. Dans la même zone de chacune des ces feuilles (A5;C14) certaines information à être cumulés s'y trouve.

J'aimerai que dans une nouvelle feuille nommé Rapport, je puisses cliquer sur un bouton et toutes les données inscrites dans les zones ci haut mentionné soit copié sur cette page. J'aimerais aussi évidemment que les espaces vides ne soit pas copier et que le rapport s'actualise de nouveau quand j'appuie sur le bouton une seconde fois.

Si possible j'aimerais qu'a la fin de chaque ligne de texte copié y soit ajouté le noms de la feuilles sources d'oû ces données proviennent.

Merci beaucoup de votre aide.

Alex

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 nov. 2009 à 01:11
Salut
Beaucoup de choses ...

-1- D'abord, sais-tu faire un copier/coller d'un groupe de cellules ?
Non : Il faut apprendre, grace à l'enregistreur de macro pendant que tu le fais à la main.
Oui : On continue

-2- Sais-tu faire le copier d'un groupe de cellules sur une feuille puis le coller dans une autre feuille ?
Non : Il faut apprendre, grace à l'enregistreur de macro pendant que tu le fais à la main.
Oui : On continue

-3- Maintenant que tu as la syntaxe d'un copier/coller avec le nom des feuilles dans lesquelles tu viens de te déplacer, il te suffit de faire une boucle pour énumérer toutes les feuilles en ta présence.
Sais-tu faire une boucle de base ?
Non : Regarde dans l'aide les "For-Next"
Oui : On continue

-4- Ta boucle devra rechercher chacune des feuilles.
Les feuilles, Sheets, peuvent être appelée par leur nom ou par leur numéro d'ordre dans la collection, exemple :
Sheets("Feuil1") ou Sheets(1)
Comme dans chaque Collection, Sheets a une méthode .Count permet d'en connaitre le nombre.

-5- Tu veux insérer les données dans ta feuille Rapport, les données les unes en dessous des autres. Il va donc te falloir compter/incrémenter le numéro de ligne au fur et à mesure que tu avances dans l'énumération des feuilles sources.
Déclare simplement une variable de type Integer ou Long et incrémente là à chaque tour de boucle.
Sais-tu désigner une cellule par sa ligne et sa colonne ?
Non : Apprends à utiliser Cells
Oui : On continue

-Conclusion-
En combinant Sheets.Count avec ta boucle For-Next, puis en faisant un Copier/Coller d'un groupe de cellules d'une feuille (dont l'index est représenté par la variable du For-Next) vers ta feuille Rapport (dont la ligne sera représentée par ta variable de compttage), tu as tout ce qu'il te faut pour avancer.

Reviens nous voir avec des questions plus précises.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
potvinalex Messages postés 3 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 27 novembre 2009
21 nov. 2009 à 21:37
Merci, je vais essayer tout ça et je te reviens avec mes questions?

Alex
0
potvinalex Messages postés 3 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 27 novembre 2009
27 nov. 2009 à 16:58
Alors voici,

Ça fait maintenant plusieurs jours que j'essaie. mais comme je n'ai absolument aucune base en programmetion VB je passe beaucoup de temps à chercher à comprendre. Je fais beaucoup d'essai erreur et je ne connait pas les type de variable as byte as long etc.. Je comprends un peu qu'est-ce que ça fait mais j'ai de la difficulté à l'intégrer a un système logique de prog.

Voici ce a quoi je suis arrivé.. Je crois que ne comprend vraiment pas le systèeme for next car cette macro ne prends que la premièere feuille (la 18) et ne copie pas les suivantes.

Sub Archivage()
Dim DerLigne As Long
For counter = 18 To 66
Sheets(counter).Range("A5:C8").Copy
Sheets("Rapport").Activate
DerLigne = Range("A65536").End(xlUp).Row + 1
Range("A" & DerLigne).Select
Selection.PasteSpecial Paste:=xlPasteValues

Next [counter]
'
End Sub

Je sais que mon erreur est probablement simple mais je suis en train de me décourager à la trouver. Mon orgueil a finalement abdiqué.

Merci et bonne journée

Alex
0
Rejoignez-nous