Macro de copie de cellules

Bonjour,

malgrès mes recherches je n'aboutie pas....

j'ai besoins de coller 52 cellules (de C2 à C53) de la feuille1, dans la cellule C3 des 52 feuilles suivantes.

dans mon cas, des données de la feuille1 correspondantes chacunes à une des 52 semaines de l'année pour lesquelles j'ai créer une feuille sommées SEMAINE24 par exemple.

voilà j'éspère avoir été clair.

merci de votre aide

Laurent

Bonjour,

Comment sont organisées tes feuilles ? Tu as la première avec les infos à copier et les 52 autres derrières ? il n'y pas d'autres feuilles avant/au milieu / après ?

Un petit fichier exemple anonimisé serait le bienvenue.

sinon une première proposition, il suffit de remplacer "Feuil1" par le vrai nom de ton 1er onglet si tu n'as que ton onglet d'infos et tes 52 onglets de semaine dans ton fichier.

Option Explicit

Sub Semaine()

Dim i As Integer

For i = 2 To 53

    Worksheets(i).Range("C3") = Worksheets("Feuil1").Range("C" & i)

Next i

End Sub

Cordialement,

Vraimant super, merci beaucoup,

de plus, le code étant simple, ça me permet de me faire la main et de le modifier petit à petit.

sur le même principe, un second problème si vous êtes partant,

sachant que j'ai 1 feuille par semaine nommées semaine1, semaine2,... jusqu'à 52

sachant que semaine1 en A1 j'ai saisi l'année (ici 2012)

sachant qu'en C3 j'ai la formule =(K2-1)*7+DATE(A$1;1;5)-JOURSEM(DATE(A$1;1;4);2) qui me donne la date du lundi de la semaine en fonction du n° de semaine en K2

le but étant ici d'utiliser et de répliquer cette formule sur chaque feuilles en C3, en conservant l'année de la feuille1

ainsi, sur chaque feuille par semaine, je disposerai de la date du lundi de cette semaine.

il y a peut être plus simple, je ne sais

merci de votre aide

Re,

Je comprends pas trop ton fichier, tu demande une première macro qui boucle sur 52 valeur de la feuille 1 pour remplir la cellule C3 des autres feuilles, et maintenant en C3 de chaque feuille, tu as une formule qui te donne la date du lundi. Mais au final, ta formule en C3 est toujours la même donc pourquoi avoir fait boucler sur 52 valeurs de la colonne C de la feuille 1 ?

Cela serait plus simple à la fois :

  • en fournissant un fichier exemple de ton fichier réél
  • en exprimant dès le départ tous tes besoins pour éviter de faire/refaire les mêmes macros

Cordialement,

Le but pour moi est d'essayé d'être autonome et non pas de copier coller une macro sans la comprendre, donc j'avance pas à pas,

au depart je voulais qu'une celllue de chaque feuille porte le n° de la semaine, ce qui est fait par ton aide, à présent j'en suis à l'étape 2

voici donc mon fichier (obliger de supprimer des onglets => trop lourd > 300 Ko)

21planning.zip (14.55 Ko)

Non mais c'est très bien de vouloir être autonome, là n'est pas le soucis ^^

Seulement pour quelqu'un qui ne connait pas ton fichier, ni ce que tu veux obtenir, si dans ta 1ère explication tu parles de la cellule C3, puis dans la 2ème demande, tu réutilises la même cellule pour un autre traitement, c'est difficile pour nous de vraiment cerner le besoin et de te fournir quelque chose qui y correspond et qui fonctionne

Par exemple pour mettre le numéro de semaine sur toutes les feuilles, si on avait su que c'était cela ton 1er besoin, on aurait pu te proposer une maccro encore plus simple que la 1ère:

Option Explicit

Sub Semaine()

Dim i As Integer

For i = 2 To 53
    Worksheets(i).Range("K2") = i-1
Next i

End Sub

Une explication claire et détaillée est la partie la plus importante de tout développement, peu importe le langage utilisé ^^

Enfin bref, je regarde ton fichier et je vois ce que je peux te proposer

Cordialement,

edit:

Essais ceci :

Sub LundSem()

Dim i As Integer

For i = 3 To 53
    Worksheets("Semaine1").Range("C3").Copy

    Worksheets(i).Activate
    Range("C3").Activate
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

    Application.CutCopyMode = False

Next i

End Sub

excellent !!

autant pour moi, en effet, c'est beaucoup plus simple et plus rapide ainsi !

une précision, pourquoi ajouter en tête de code : "Option Explicit" ?

merci

Le "option explicit" t'oblige à declarer tes variables comme il faut, ce n'est pas obligatoire de le mettre, mais quand tu executes le code, cela te signal directement si une variable n'est pas déclarer dans le bon type, ou pas déclarée du tout.

J'ai édité mon message précédent pour ta 2ème demande.

Cordialement,

encore merci du coup de main,

cette fois çi, je n'y ciomprend rien, je vois bien que je n'ai pas le niveau, mais je decortiquerai ça plus tard,

pour l'instant ton code replique la formule, mais utilise la cellule A1 de sa propre feuille au lieu d'utiliser celle de la feuille "semaine1"

dans la même idée, sur chaque feuille, la cellule N3 devra être égale à la cellule N3 de la feuille précédente-1 (afin d'avoir le dernier jour de la semaine)

merci

Non non, il utilise bien la cellule A1 de la semaine1, vérifie

Et pour ta cellule N3, c'est n'est pas la cellule N3 de la feuille précedente mais la cellule C3 de la feuille suivante qu'il faut prendre :

Si tu prends N3 de la feuille précédente :

En semaine1 cellule N3 = 06/01/2013

Donc en feuille Semaine2, si en N3 tu as

=Semaine1!N3-1

, tu vas avoir 05/01/2013 et donc une semaine qui se finit avant d'avoir commencé ^^

Le plus simple étant même, vu que maintenant en C3 de chaque feuille, tu as le lundi de chaque semaine, de mettre en N3

=C3+7

Pour le code, il n'est pas beaucoup plus compliqué que le 1er, je fais une boucle sur toutes les feuilles, et je copie la formule en C3 de la semaine1 et je fais un collage spécial pour ne coller que la formule, et ensuite je passe à la feuille suivante.

Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

C'est le code obtenu avec l'enregistreur de macro, donc rien de bien compliqué

Cordialement,

merci pour tes explication,

je faisais la remarque de la cellule A1 car après avoir lancé la macro, sur chaque onglets, en cellule C3, j'ai une date sur l'année 1900 (ex 23/01/1900), comme s'il utilisait une valeur de cellule=0 en A1, d'ailleur, en C3 feuille semaine 4 par exemple, j'ai bien =(K2-1)*7+DATE(A$1;1;5)-JOURSEM(DATE(A$1;1;4);2)

une autre question, ce fichier sera utilisé par des gens qui ne connaissent pas du tout excel, l'année prochaine, ils devront uniquement saisir l'année en A1 de la première feuille, puis imprimer le classeur,

ta macro devra t'elle être relancée chaque année ? car ils n'en seront pas capable....

merci

Laurent

Bonjour,

Oui j'ai compris d'où vient le soucis, c'est que moi j'ai mis la bonne formule en C3 de la semaine 1 avant de faire les copies :

=(K2-1)*7+DATE(Semaine1!A$1;1;5)-JOURSEM(DATE(Semaine1!A$1;1;4);2)

Remplace ta formule en C3 semaine1 par celle là, et elle sera bien copiée en C3 des autres feuilles.

Que les gens n'y connaissent rien, ce n'est pas un problème, il suffit de lier la macro à un bouton (ils seront quand même capable de faire un click )

Ou sinon, mets cette formule en A1 de l'onglet Semaine1 :

=ANNEE(AUJOURDHUI())

(pour l'année en cours, et tu rajoutes +1 à la fin si tu veux l'année qui suit (vu que j'ai vu que ton fichier listait déjà les semaines pour 2013)).

Cordialement,

et bien merci pour tout,

d'une part c'est fonctionnel, et d'autre part j'ai beaucoup appris

merci pour ta disponnibilité

Laurent

Y'a pas de quoi.

Si d'autres questions, n'hésites pas, il y a beaucoup de bonnes âmes sur ce forum (dont beaucoup plus compétente que moi )

Bonne fin de journée.

Cordialement,

Rechercher des sujets similaires à "macro copie"