Re : Comment créer un nouvel onglet avec les valeurs contenues dans celui ci
Bonjour kkwuet, le fil,
Pas de souci, nous avons tous été débutant un jour.
Pour ton soucis l'idéal serait de mettre tes onglets "Suivi" et "Feuil3" au début. Présentation plus clair et macro plus facile à écrire.
1/ Dans ta macro, tu ne précise pas la feuille sur laquelle tu travail (la fameuse feuille servant de modéle).
L'idéal et le plus simple, au lieu d'indiquer le "nom" de l'onglet, il faudrait mettre le numéro. Je m'explique :
-> tes feuilles sont classés ainsi : "Feuil3" et "Suivi" sont au début (ou "Suivi" puis "Feuil3" ça ne change rien pour la macro)
-> ta feuille "ea" est donc en troisième position
-> chaque nouvelle feuille, grâce à ton code, est rajouté à la fin
Donc la feuille servant de modéle est toujours la dernière.
2/Autre soucis, tu copie le résultat de F17 sur F18. Ce n'est pas plutôt : copier F19 de la feuille précédente sur F18 de la nouvelle feuille?
3/Même soucis concernant ton copier/coller H29 sur H30. Ce n'est pas plutôt : copier H30 de la feuille précédente sur H29?
4/Ta ligne de code :
ActiveCell.FormulaR1C1 = "=R[-11]C[-2]*R[-2]C[-4]"
N'est pas fausse, mais inutile, puisque lorsque tu copie/colle A1:L52 au début de ta macro, la formule en H30 est incluse dans la zone. Donc déjà copier/coller, bref pas la peine de l'écrire à nouveau
😉
5/Ce n'est pas faux en soit de "copier/coller" la cellule ... dans la cellule ... mais cela fait QUATRE lignes de code. Alors que si tu écris : cellule ... = cellule ... c'est plus court, plus rapide, plus clair et reviens au même dans ton cas.
Et pour raccourcir encore plus ton code, j'ai écris :
au lieu de :
C'est exactement la même chose, c'est juste une façon différente et plus courte de l'écrire.
Ta macro actuelle :
Sub nouvelle_page()
Range("A1:L52").Select
Selection.Copy
Range("A1").Select
Application.CutCopyMode = False
Sheets("ea").Copy after:=Sheets(Sheets.Count)
Range("F17").Select
Selection.Copy
Range("F18").Select
ActiveSheet.Paste
Range("F17").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("H29").Select
ActiveCell.FormulaR1C1 = "=R[-11]C[-2]*R[-2]C[-4]"
Range("H30").Select
End Sub
Ta macro corrigé :
Sub nouvelle_page()
Sheets(Sheets.Count).Range("A1:L52").Select
Selection.Copy
Sheets(Sheets.Count).Range("A1").Select
Application.CutCopyMode = False
Sheets("ea").Copy after:=Sheets(Sheets.Count)
[F18] = Sheets(Sheets.Count - 1).[F19]
[F17].ClearContents
[H29] = Sheets(Sheets.Count - 1).[H30]
End Sub
Testé, ça fonctionne, du moins si j'ai bien compris la logique de tes calculs.
N'hésite pas à revenir si tu souhaite plus d'explication sur un point précis.
Bonne après midi