Macro excel

Fermé
serbai Messages postés 5 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 8 août 2012 - 29 janv. 2009 à 11:54
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 29 janv. 2009 à 17:14
Bonjour,
Est-il possible de créer une macro sur excel qui permette de modifier automatiquement les références des cellules d'une autre macro, sachant que la modification des références sera toujours constante.
Un exemple : J'ai une macro de ce type qui agit sur plusieurs feuilles de mon classeur (ici j'ai mis 2 feuilles : semaine1 et semaine2)

Sheets("Recap").Select
Rows("10:10").Select
Selection.Copy
Sheets("semaine1").Select
Range("a3").Select
ActiveSheet.Paste Link:=True
Sheets("Recap").Select
Rows("11:11").Select
Selection.Copy
Sheets("semaine2").Select
Range("a3").Select
ActiveSheet.Paste Link:=True

Je voudrais créer une macro qui me transforma automatiquement le "a3" en "a4" puis en "a5", "a6",.... et ("10:10") en ("25:25") puis en ("40:40").
Les références en ("ax") augmentant de 1 à chaque fois et celles en ("x:x") augmentant de 15 à chaque fois.
Etant donné que cette macro comporte beaucoup de ces références, il est fastidieux de transformer tout manuellement.
J'espère que je me suis bien fait comprendre.
Meci d'avance pour vos réponses
A voir également:

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
29 janv. 2009 à 17:14
bonjour

Ce que tu envisages est possible mais c'est une vrai usine à gaz pour la mettre en oeuvre.

Je pense que tu devrais plutôt chercher sur d'autres pistes comme par exemple fonctionner avec des plages nommées ou mettre tes références dans des cellules dédiées.

par exemple :

Sheets("Recap").Rows([ligne1].value).Copy _
   destination:=Sheets("semaine1").Range([semaine].value + s)

Tu as une cellule nommée "ligne1" dans laquelle tu mets 10 dans ton cas 1
et une cellule nommée "semaine" dans laquelle tu mets A3

Tu peux aussi faire une boucle :

For s =1 to maxisemaine
     Sheets("Recap").Rows([ligne1].value + s).Copy _
   destination:=Sheets("semaine" & s).Range([semaine].value)
next s
0