Ajout de ligne avec copie de style

Paulo

XLDnaute Nouveau
Bonjour,

J'ai besoin de souvent modifier des fichiers excel en ajoutant des lignes et créant des formules de moyenne et totaux et je ne sais pas comment m'y prendre pour automatiser ça. Je joint un fichier car ca me parait plus clair avec ce support.

Sur l'onglet "Origine", un exemple (très allégé) d'un tableau de base
Sur l'onglet "Resultat", ce qu'il me faudrait au final, c’est à dire :

  • Lorsque je sélectionne une ligne (dans mon exemple la ligne 2 ou 4), à l'aide d'un bouton macro il faudrait que ça me rajoute sous cette ligne sélectionnée 7 autres lignes
  • Ces 7 lignes doivent avoir le même style que celle du dessus (même encadrement et même fusion de cellules)
  • Sur la ligne du bas il faudrait qu'il y ait un calcul de moyenne des chiffres que j’entrerai sur ces nouvelles lignes
  • Dans la colonne "AC" la somme de la ligne des moyennes

Ceci est totalement en dehors de mes compétences, je ne sais pas par où commencer, c'est pour cette raison que je me tourne vers vous.

Merci d'avance si vous pouvez m'aider.
 

Pièces jointes

  • exemple.xls
    49 KB · Affichages: 44
  • exemple.xls
    49 KB · Affichages: 47
  • exemple.xls
    49 KB · Affichages: 48

Staple1600

XLDnaute Barbatruc
Re : Ajout de ligne avec copie de style

Bonsoir

Personnellement quand je lis fusion de cellules , je me cache sous mon lit.

Sinon nous sommes en week-end et donc il y a moins de monde sur XLD.

Néanmoins je vais voir ton fichier mais tout à l'heure.
 

Staple1600

XLDnaute Barbatruc
Re : Ajout de ligne avec copie de style

Re


Comme j'y suis retourné voir comme promis, je poste quand même
Code:
Sub MacrOhMonDieuQuelBean()
Dim i As Long
Dim adr, j As Byte
Application.ScreenUpdating = False
Rows("3:9").Insert Shift:=xlDown
Range("A2:AA2").Copy
For i = 3 To 9
Range("A3:AA" & i).PasteSpecial Paste:=xlPasteFormats
Next i
adr = Split("A C E G O X Z")
For j = 0 To UBound(adr)
Cells(9, adr(j)).FormulaR1C1 = "=AVERAGE(R[-6]C:R[-1]C[1])"
Next j
Cells(9, "I").FormulaR1C1 = "=AVERAGE(R[-7]C:R[-1]C[5])"
Cells(9, "Q").FormulaR1C1 = "=AVERAGE(R[-7]C:R[-1]C[3])"
Cells(9, "U").FormulaR1C1 = "=AVERAGE(R[-7]C:R[-1]C[2])"
Application.ScreenUpdating = True
End Sub
Mais comme faut pas s'attarder, j'irai pas plus loin ;)

Paulo: Merci d'avoir publié ta réponse pour les autres membres du forum que cela aurait pu intéressé :p:rolleyes:

Tu remercieras aussi ton jumeau Paulox sur l'autre forum et Yvouille pour sa réponse.
 
Dernière édition:

Paulo

XLDnaute Nouveau
Re : Ajout de ligne avec copie de style

Re,

Merci pour ta réponse et voici donc la macro de Yvouille sur l'autre forum (merci une nouvelle fois à lui si il traine par ici) :

Code:
Sub aa()
Dim i As Integer, j As Integer, k As Integer

Application.ScreenUpdating = False

j = Selection.Row
    For i = 1 To 7
        Range("A" & j & ":AA" & j).Copy
        Rows(j + i & ":" & j + i).Insert Shift:=xlDown
        Application.CutCopyMode = False
    Next i
Range("A" & j + 1 & ":AA" & j + 7).ClearContents

For k = 1 To 27
    Cells(j + 7, k).FormulaR1C1 = "=AVERAGE(R[-6]C:R[-1]C)"
Next k

Range("AC" & j + 7).FormulaR1C1 = "=SUM(RC[-28]:RC[-2])"

End Sub

Cordialement
 

Staple1600

XLDnaute Barbatruc
Re : Ajout de ligne avec copie de style

Re


Effectivement, merci à Yvouille
La lecture de mon code m'aura permis de simplifier le mien ;)
Code:
Sub bb()
Dim i As Long
Application.ScreenUpdating = False
Rows("3:9").Insert Shift:=xlDown
Range("A2:AA2").Copy
For i = 3 To 9
Range("A3:AA" & i).PasteSpecial Paste:=xlPasteFormats
Next i
Range("A9:Z9").FormulaR1C1 = "=AVERAGE(R[-6]C:R[-1]C)"
Application.ScreenUpdating = True
End Sub
PS: Paulo: A prochaine fois, indiques le quand tu poses ta question sur plusieurs forums.
 

Staple1600

XLDnaute Barbatruc
Re : Ajout de ligne avec copie de style

Re


La variante avec Selection
(ici testé comme la cellule active est en ligne 3 -> test ok sur mon pc)
Code:
Sub cc()
Dim ar&, i&
Application.ScreenUpdating = False
ar = ActiveCell.Row
Rows(ar).Resize(7).Insert Shift:=xlDown
Range("A" & ar - 1 & ":AA" & ar - 1).Copy
For i = 3 To 9
Range("A" & ar + 1 & ":AA" & i).PasteSpecial Paste:=xlPasteFormats
Next i
Range("A" & ar + 6).Resize(, 26).FormulaR1C1 = "=AVERAGE(R[-6]C:R[-1]C)"
Application.ScreenUpdating = True
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Ajout de ligne avec copie de style

Re

J'avais pas osé, quelques fois les concurrences entre forums ne sont pas bien vues ;)
Mais promis je le dirais la prochaine fois.

Ce qui n'est pas bien vu c'est le multipostage ;)
Voir ici pour les détails
Multipostage - Wikipédia

PS1: Tu as testé le dernier code que je t'ai soumis ?

PS2: Plus on est de fous à s'amuser avec Excel, plus on s'enrichit (Microsoft le premier ;))
Donc plus nombreux sont les forums dédiés à Excel, mieux c'est.
Et je parlerai plutôt de complémentarité que de concurrence.
(Manquerait plus que la concurrence s'instaure entre forums peuplés de gens bénévoles ;))
 
Dernière édition:

Paulo

XLDnaute Nouveau
Re : Ajout de ligne avec copie de style

Bonsoir,

Désolé j'étais absent toute la journée. Le dernier code fonctionne super également, merci beaucoup pour ton aide ;) Au moins ca me permet de voir plusieurs méthodes et d'essayer d'en tirer des enseignements.

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 091
Membres
103 465
dernier inscrit
Ehoarn_src