XL 2013 Macro pour création de lignes automatiquement

sr94

XLDnaute Occasionnel
Bonjour,

J'ai besoin d'un coup de main pour créer une macro. N'étant pas experte en VBA, je sèche complètement mais ce n'est sûrement pas difficile.

J'ai donc un fichier qui permet de créer un planning perpétuel de menu, j'ai besoin que 10 nouvelles lignes soient créées, identiques au 10 dernières lignes, avec le même format, la formule, que ces lignes soient la nouvelle zone d'impression, et de masquer les autres lignes, je vous joins le fichier test, tout est dedans.

Merci beaucoup !
 

Pièces jointes

  • test.xlsx
    150.4 KB · Affichages: 35
  • test.xlsx
    150.4 KB · Affichages: 41

vgendron

XLDnaute Barbatruc
Re : Macro pour création de lignes automatiquement

hello

voir PJ pour l'essai

pour voir le code: Alt+F11 pour ouvrir l'éditeur VBA et aller voir dans le module 1
j'ai commenté les lignes
 

Pièces jointes

  • Menu hebdo.xlsm
    165.3 KB · Affichages: 32

sr94

XLDnaute Occasionnel
Re : Macro pour création de lignes automatiquement

Merci

Il faudrait aussi que la hauteur des lignes soient respectées, et que la formule fasse partie de la macro car dans la pratique la formule peut être effacée pour certaines cellules, mais doit être générée correctement pour les nouvelles lignes
 

vgendron

XLDnaute Barbatruc
Re : Macro pour création de lignes automatiquement

avec ce code.?

Code:
Sub Macro3()
'
' Macro3 Macro
'
    'récupère l'indice de la dernière ligne
    last = Range("A65536").End(xlUp).Row

    'sélectionne les 10 lignes à copier
    Rows(last - 9 & ":" & last).Copy
    
    'se place à la fin du tableau pour coller
    Rows(last + 1 & ":" & last + 11).Insert Shift:=xlDown
    Application.CutCopyMode = False
   
    'sélection des nouvelles lignes créées pour en faire la zone d'impression
    ActiveSheet.PageSetup.PrintArea = "$C$" & last + 1 & ":$I$" & last + 10
    
    'recopie de la formule
    Range("C" & last + 1).FormulaArray = _
        "=IF(R[-5]C=""Soir"",""Soir"",IF(R[-5]C=""Midi"",""Midi"",IF(N(R[-5]C),R[-5]C+7,INDEX(table_menus,MATCH(RC2,'Menu récurrent'!R4C1:R8C1,0),MATCH(TEXT(R2C,""JJJJ"")&R[-1]C,'Menu récurrent'!R2C2:R2C15&'Menu récurrent'!R3C2:R3C15,0)))))"
    
    'formule tirée vers la droite
    Range("C" & last + 1).AutoFill Destination:=Range("C" & last + 1 & ":I" & last + 1), Type:=xlFillDefault
    
    'formule tirée vers le bas
    Range("C" & last + 1 & ":I" & last + 1).AutoFill Destination:=Range("C" & last + 1 & ":I" & last + 10), Type:=xlFillDefault
    
    'sélection des autres lignes précédentes pour les masquer
    Rows("1:" & last).EntireRow.Hidden = True
    
End Sub

pour la hauteur des lignes, normalement ca les conserve. en tout cas. chez moi.
 

Discussions similaires

Réponses
4
Affichages
334

Statistiques des forums

Discussions
312 305
Messages
2 087 069
Membres
103 454
dernier inscrit
Marion devaux