Macro recopie de formule vers la droite.

Masck

XLDnaute Nouveau
Bonjour à tous,

Pour commencer je tiens à préciser que je travaille sur Office 2003 SP2 sous Windows XP.

Je viens vers vous pour une tâche que je dois répeter tous les matins et que j'aimerais automatiser un peu.

En effet, dans un tableau où chaque colonne représente un jour, je dois recopier des formules sur 8 lignes. Ces lignes ne changent jamais. J'utilise donc la poignée de recopie tous les matins pour copier mes formules vers la colonne suivante, sachant que je ne peux pas recopier les formules sur toute la ligne parce que ce fichier doit parvenir à un client et que ce n'est pas très esthétique.

Naïvement, j'ai cru utiliser "l'enregistreur" de macros et faire ma manip mais il reste sur les mêmes cellules à chaque fois.

J'ai obtenu le code suivant :

Code:
Sub RecopieFormule()
'
' RecopieFormule Macro
' Macro enregistrée le 24/01/2008 par aamle297
'

'
    Selection.AutoFill Destination:=Range("S5:T5"), Type:=xlFillDefault
    Range("S5:T5").Select
    Range("S13").Select
    Selection.AutoFill Destination:=Range("S13:T13"), Type:=xlFillDefault
    Range("S13:T13").Select
    Range("S14").Select
    Selection.AutoFill Destination:=Range("S14:T14"), Type:=xlFillDefault
    Range("S14:T14").Select
    Range("S16").Select
    Selection.AutoFill Destination:=Range("S16:T16"), Type:=xlFillDefault
    Range("S16:T16").Select
    Range("S17").Select
    Selection.AutoFill Destination:=Range("S17:T17"), Type:=xlFillDefault
    Range("S17:T17").Select
    Range("S21").Select
    Selection.AutoFill Destination:=Range("S21:T21"), Type:=xlFillDefault
    Range("S21:T21").Select
    Range("S23").Select
    Selection.AutoFill Destination:=Range("S23:T23"), Type:=xlFillDefault
    Range("S23:T23").Select
    Range("S24").Select
    Selection.AutoFill Destination:=Range("S24:T24"), Type:=xlFillDefault
    Range("S24:T24").Select
End Sub

J'aimarais savoir comment modifier ce code et ainsi pouvoir définir "recopie la formule sur la colonne de droite pour les lignes 5, 13, 141 16, 17, 21, 23 et 24 et ainsi que chaque jour en lançant la macro il se recopie les formules automatiquement.

En éspérant avoir été assez clair dans ma demande...je vous remercie d'avance .
 

pierrejean

XLDnaute Barbatruc
Re : Macro recopie de formule vers la droite.

bonjour Masck

A tester:

Code:
Sub recopie()
tablo = Array(5, 13, 141, 16, 17, 21, 23, 24)
For n = 1 To UBound(tablo)
  Cells(tablo(n), 256).End(xlToLeft).AutoFill Destination:=Range(Cells(tablo(n), 256).End(xlToLeft), Cells(tablo(n), 256).End(xlToLeft).Offset(0, 1))
Next n
End Sub
 

Bebere

XLDnaute Barbatruc
Re : Macro recopie de formule vers la droite.

bonjour Masck,Pierre-Jean
à tester
Sub RecopieFormule()
'
' RecopieFormule Macro
' Macro enregistrée le 24/01/2008 par aamle297
Dim Dercol As Byte 'dernière colonne

Dercol = Cells(5, 256).End(xlToLeft).Column
Cells(5, Dercol).Copy
Cells(5, Dercol + 1).PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Cells(13, Dercol).Copy
Cells(13, Dercol + 1).PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Cells(14, Dercol).Copy
Cells(14, Dercol + 1).PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Cells(16, Dercol).Copy
Cells(16, Dercol + 1).PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Cells(17, Dercol).Copy
Cells(17, Dercol + 1).PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Cells(18, Dercol).Copy
Cells(18, Dercol + 1).PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Cells(21, Dercol).Copy
Cells(21, Dercol + 1).PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Cells(23, Dercol).Copy
Cells(23, Dercol + 1).PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Cells(24, Dercol).Copy
Cells(24, Dercol + 1).PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

End Sub
 

Masck

XLDnaute Nouveau
Re : Macro recopie de formule vers la droite.

Bonjour bebere, bonjour pierrejean,

Tout d'abord, je vous remercie de votre réactivité.

mon classeur est structuré de la manière suivante :

A B C D .... Y Z AB
1 intitulé l1 01-janv 02-janv 03-janv .... 31-janv CUMUL
2 intitulé l2 xxx xxx xxx xxx
3 ...

quand j'éxecute votre macro, la formule se recopie en AB
Par exemple aujourd'hui nous sommes le 24-janv je me mets en colonne S (23-janv),je lance la macro (vos deux macros me donnent pour le moment le même résultats, à savoir la formule se copie en AB. Je souhaiterais qu'elle se copie en T (24-janv) afin que je n'ai plus qu'à sasir mes valeurs, les formules se copiant aux lignes citées précedemment grâce à la macro.

Merci d'avance.
 

pierrejean

XLDnaute Barbatruc
Re : Macro recopie de formule vers la droite.

Re

Salut bebere :) (tu as compris comme moi apparement !!!!)

S'il s'agit de toujours recopier de S en T

Code:
Sub recopie2()
tablo = Array(5, 13, 141, 16, 17, 21, 23, 24)
For n = 1 To UBound(tablo)
  Range("S" & tablo(n)).AutoFill Destination:=Range(Range("S" & tablo(n)), Range("T" & tablo(n)))
Next n
End Sub

mais, comme de coutume, je rappelle qu'un fichier exemple nous parle bien mieux que n'importe quel texte !!!
 

Bebere

XLDnaute Barbatruc
Re : Macro recopie de formule vers la droite.

rebonjour
ben oui,Pierre-Jean,il parait que les grands esprits se rencontrent toujours(lol)
si j'ai bien compris les explications de notre ami Masck
sélection colonne avec date du jour-1 ->copier,coller formule dans colonne date du jour
Masck tu confirmes,ou mets un exemple
à bientôt
 

Masck

XLDnaute Nouveau
Re : Macro recopie de formule vers la droite.

En fait, il s'agit de copier la formule mais pas toujours de S en T, tout dépends du jour...


Je vous joins un classeur pour que vous puissiez mieux vous représenter mon problème. car il est vrai que
un fichier exemple nous parle bien mieux que n'importe quel texte

LIEN

Dasn ce lien, il faut qu'après execution de la macro, les formules apparaissent en
T5, T13, T14, T16, T17, T21, T23 et T24 masi demain, ce sera U5, U13, etc...

J'éspère que je me fais bien comprendre...c'est pô facile ! :D

Merci d'avance à vous bebere et pierrejean
 

pierrejean

XLDnaute Barbatruc
Re : Macro recopie de formule vers la droite.

Re

En supposant ta colonne cumul mensuel toujours en colonne Z

Code:
Sub recopie()
tablo = Array(5, 13, 14, 16, 17, 21, 23, 24)
x = Range("Y2").End(xlToLeft).Column
For n = 0 To UBound(tablo)
  Cells(tablo(n), x).AutoFill Destination:=Range(Cells(tablo(n), x), Cells(tablo(n), x + 1))
Next n
End Sub

la macro fonctionnera a nouveau a partir de l'instant ou tu auras rempli a nouveau la colonne (au moins la ligne 2 !!!)
 
Dernière édition:

Masck

XLDnaute Nouveau
Re : Macro recopie de formule vers la droite.

Un grand merci pierrejean, ça marche nickel ;)

Nous pouvons considèrer ceci comme résolu

Mais comme tu le fais remarquer, le Cumul n'est pas toujours en colonne Z.

ça ne me dérange pas de modifier la macro tous les mois...Dans ce cas là, quel paramètre est à modifier dans la macro (cela me permettra de meiux comprendre également le déroulement de la macro) ?

Si cela n'est pas possible, ce n'est aps grave vous m'avez déjà apporté un grand support.

Merci encore.
 

nouv

XLDnaute Occasionnel
Re : Macro recopie de formule vers la droite.

bonjour,

puisqu'il s'agit d'une question de pure esthétique, une petite condition sur les formules me paraîtrait quand même plus simple.
du genre =si(estvide(cellule);"";calcul)
comme ça le calcul est en place, il n'y a qu'à entrer les données et pas besoin de copie

voir pj - j'ai mis en jaune les cellules modifiées avec les calculs

><>
 

Pièces jointes

  • avecdessi.zip
    9 KB · Affichages: 58

pierrejean

XLDnaute Barbatruc
Re : Macro recopie de formule vers la droite.

Re

Cette version recherche la colonne ou est inscrit CUMUL MENSUEL dans la ligne 1 et se debrouille ensuite pour reperer la colonne ou il faut copier les formules
Bien veiller a conserver CUMUL MENSUEL (orthographe et casse)

Code:
Sub recopie()
tablo = Array(5, 13, 14, 16, 17, 21, 23, 24)
Set c = Rows(1).Find("CUMUL MENSUEL", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
x = c.Offset(1, -1).End(xlToLeft).Column
For n = 0 To UBound(tablo)
  Cells(tablo(n), x).AutoFill Destination:=Range(Cells(tablo(n), x), Cells(tablo(n), x + 1))
Next n
End If
End Sub

Salut nouv

Avec le fichier ce serait mieux !!!
mais tu n'as pas tort : avec les formules on peut faire enormement de choses
notre ami Masck aura le choix
 
Dernière édition:

Masck

XLDnaute Nouveau
Re : Macro recopie de formule vers la droite.

Pierrejean,

J'allais te répondre que j'allais changer la valeur Y de la ligne

x = Range("Y2").End(xlToLeft).Column

Mais tu me donne en réponse la macro I-dé-ale.

Merci infiniment pierrejean, cela va me faire gagner un temps certain.

Je vais pouvoir travailler moins et peut être gagner plus qui sait !

:D:D:D
 

Masck

XLDnaute Nouveau
Re : Macro recopie de formule vers la droite.

ta solution aussi est excellente nouv, je viens de tester c'est parfait...effectivement c'est purement esthétique et c'est parce que ce fichier doit parvenir à plusieurs personnes chaque jour.

De plus, ta solution permet d'éviter la vaildation de la fenêtre d'autorisation des macros, ce qui peutr être rebutant pour certaines personnes.

C'était si simple, mais bravo pour cette astuce.

un grand MERCI à vous TOUS
 

Discussions similaires

Statistiques des forums

Discussions
312 504
Messages
2 089 082
Membres
104 023
dernier inscrit
zerarka mohamed