Je souhaite pouvoir copier la VALEUR de certaines cellules vers une nouvelle feuille créée dans la foulée.
Ci-dessous mon code pour le moment :
Code:
Private Sub CommandButton1_Click()
Range("A1", "R90").Select
Range("A1", "R90").Copy
Sheets.Add(After:=Worksheets("Planning")).Name = "Réunion Planning du " & Range("AX1") & "-" & Range("AY1") & "-" & Range("AZ1")
End Sub
Donc j'arrive bien à sélectionner et copier les cellules qui m'intéressent, la feuille est créée avec le nom souhaité, mais je ne sais pas comment comment coller uniquement les valeurs dans la nouvelle feuille. Lorsque je fais Ctrl+V ça copie les formules par défaut.
J'ai remarqué que lorsque colle avec Ctrl+V, le filtre que j'ai placé sur la ligne deux ne suit pas.. y'a-t-il un moyen de corriger cela ?
Je joins un fichier qui sera sûrement plus clair que mes explications...
Sinon comme ceci, sans besoin du bouton; à copier dans ThisWorkbook
VB:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim nom As String
With Sheets("Planning")
.Range("a1", "r90").Copy
nom = "Réunion Planning du " & .Range("AX1") & "-" & .Range("AY1") & "-" & .Range("AZ1")
End With
With Sh
.Range("a1").PasteSpecial Paste:=xlPasteValues
.Name = nom
Application.CutCopyMode = 0
Application.GoTo .Range("a1")
End With
End Sub
Je n'ai pas encore essayé ton exemple de code, j'ai complété celui que j'avais commencé avec les précieuses infos que tu m'as donné.
Ca marche bien, seulement pour une question d'esthétique je n'arrive pas à garder la taille des cellules comme dans le premier tableau...
J'ai tenté avec des .Colums.Autofit mais dans le premier tableau, les cellules ne sont pas forcément gérées par de l'autofit...donc le rendu est pas top.
Je ne comprend pas comment marchera ton code, si je ne demande pas la création de la nouvelle feuille avec un CommandButton, quand va-t-elle se créer ?
Merci et désolé si j'ai du mal à suivre !
EDIT :
j'ai reussi à gérer les colonnes/lignes grâce à un autre topic XLD, avec :
Code:
For i = 1 To 200
ActiveSheet.Columns(i).ColumnWidth = Sheets("Planning").Columns(i).ColumnWidth
ActiveSheet.Rows(i).RowHeight = Sheets("Planning").Rows(i).RowHeight
Next
La feuille sera copiée quand tu cliquera sur + à côté de l'onglet.
Voici la macro au complet, tojours à mettre dans le module de ThisWorkbook.
VB:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim nom As String
With Sheets("Planning")
.Range("a1", "r90").Copy
nom = "Réunion Planning du " & .Range("AX1") & "-" & .Range("AY1") & "-" & .Range("AZ1")
End With
With Sh
.Name = nom
.Range("a1").PasteSpecial Paste:=xlPasteValues
.Range("a1").PasteSpecial Paste:=xlPasteFormats
.Range("a1:r1").ColumnWidth = Sheets("Planning").Range("a1:r1").ColumnWidth
.Range("a2:r2").AutoFilter
Application.CutCopyMode = 0
Application.GoTo .Range("a1")
End With
End Sub
Pourquoi la boucle?? Elle ne sert à rien. Et arrête de modifier les plages purée. D'abord de A à R, maintenant de A à AU. Faudrait savoir.
Et dans le nouveau classeur que tu as mis, k2 - l2 sont vides.
VB:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim nom As String, derlig As Long
With Sheets("Planning")
derlig = .Range("o" & Rows.Count).End(xlUp).Row
.Range("a1:as" & derlig).Copy
nom = "Réunion Planning du " & Range("K2") & "-" & Range("L2") & "-" & Range("M2")
End With
With Sh
.Name = nom
.Range("a1").PasteSpecial Paste:=xlPasteValues
.Range("a1").PasteSpecial Paste:=xlPasteFormats
.Range("a1:r1").ColumnWidth = Sheets("Planning").Range("a1:r1").ColumnWidth
.Range("a2:r2").AutoFilter
Application.CutCopyMode = 0
Application.GoTo .Range("a1")
End With
End Sub
Les plages ne sont pas les mêmes car le fichier que j'ai transmis est un exemple, le code que j'ai envoyé précédemment est celui du fichier que j'utilise dans mon entreprise.
Désolé de la confusion et du coup de ton énervement a priori.
J'ai testé ton code du coup, ça fonctionne parfaitement, merci! Seul bémol, j'arrive plus à insérer de feuilles sans que cela crée la feuille "réunion de planning ...".
Maintenant la boucle :
c'est une solution que j'ai trouvé en faisant une recherche sur ce forum, pour donner les mêmes dimensions aux cellules dans les deux tableaux.
Ca m'a paru clair et au moins je comprends la démarche, et en plus, cela fonctionne.