antha
XLDnaute Occasionnel
Bonjour à tou(te)s,
Grâce à différents posts du forums et l'enregistreur de macros, j'ai réussi à bricoler une macro qui me copie une feuille de mon classeur, la renomme selon le contenu d'une cellule, copie les valeurs/formats/largeurs, créée une plage nommée.
Quelques petites questions :
1- est-il nécessaire d'épurer le code ? Je pense que oui, mais n'y connait rien
Edit : résolu, merci pierre Jean
2- comment faire pour que la nouvelle feuille créée soit insérée après la feuille initiale ?
Edit : Partiellement résolu, j'ai rajouté en fin de macro
3- ma plage nommée est définie de manière fixe. Est-il possible de traduire : =DECALER($A$1;EQUIV("Recap";$A:$A;0)-1;;15;40) en vba ?
J'ai cherché, mais entre les Range.offset, application.worksheet.function, je m'embrouille... je bloque sur (en admettant que ce soit bon) : range("A1").offset(application.WorksheetFunction.EQUIV("Recap",Columns("A:A"),0)
Je n'arrive pas à étendre en hauteur et largeur.
Edit : cela semble résolu, je m'en suis sorti de la façon suivante (en tapant la formule dans l'enregistreur):
Si quelqu'un peut corriger si nécessaire merci!
Merci de votre aide!
Ci-joint le code et le fichier.
Grâce à différents posts du forums et l'enregistreur de macros, j'ai réussi à bricoler une macro qui me copie une feuille de mon classeur, la renomme selon le contenu d'une cellule, copie les valeurs/formats/largeurs, créée une plage nommée.
Quelques petites questions :
1- est-il nécessaire d'épurer le code ? Je pense que oui, mais n'y connait rien
Edit : résolu, merci pierre Jean
2- comment faire pour que la nouvelle feuille créée soit insérée après la feuille initiale ?
Edit : Partiellement résolu, j'ai rajouté en fin de macro
Code:
ActiveSheet.Move After:=Sheets("nomdelafeuilleapreslaquellelaplacer")
3- ma plage nommée est définie de manière fixe. Est-il possible de traduire : =DECALER($A$1;EQUIV("Recap";$A:$A;0)-1;;15;40) en vba ?
J'ai cherché, mais entre les Range.offset, application.worksheet.function, je m'embrouille... je bloque sur (en admettant que ce soit bon) : range("A1").offset(application.WorksheetFunction.EQUIV("Recap",Columns("A:A"),0)
Je n'arrive pas à étendre en hauteur et largeur.
Edit : cela semble résolu, je m'en suis sorti de la façon suivante (en tapant la formule dans l'enregistreur):
Code:
ActiveWorkbook.Names.Add Name:=ActiveSheet.Range("A5"), RefersToR1C1:= _
"=OFFSET(R1C1,MATCH(""recap"",(c1),0)-1,,15,40)"
Si quelqu'un peut corriger si nécessaire merci!
Merci de votre aide!
Ci-joint le code et le fichier.
Code:
Sub Copie_mois()
'
' Macro enregistrée le 08/08/2008 par 3078431
range("B4:AQ230").Select
Selection.Copy
Sheets.Add
range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Name = ActiveSheet.range("A2")
range("A200:AN214").Select
ActiveWorkbook.Names.Add Name:=ActiveSheet.range("A2"), RefersToR1C1:= _
"=R200C1:R214C40"
With ActiveWindow
.DisplayGridlines = False
.DisplayZeros = False
End With
Cells(2,2).Select
End Sub
Pièces jointes
Dernière édition: