Enregistrement multiple de calculs sur deuxième feuille via VBA

Beast464

XLDnaute Junior
Bonjour à tous,

*dépoussière excel après un an au placard*:confused:

Avec quelques souvenirs j'ai réalisé un bout de simulation via VBA mais je pense qu'il y a plus simple ou possibilité d'améliorer ou de le faire bcp plus simplement:

Regarde la pièce jointe Simulation1.xlsm

But de la manoeuvre:
Sur un échantillon de résultat répertorié sur la premiere feuille, en appuyant sur le bouton simulation, des opérations simples ( additions dans l'exemple) s'effectuent, 4 premières ligne, puis 3 suivante etc.
Donc ma macro effectue le calcul, puis colle dans la cellule, puis reprends et recolle par dessus pour ne garder que la valeur ( très moche). Et le tout sous la colonne Année 1 de la feuille2

Si je modifie les résultats des test de feuille1 je veux pouvoir enregistrer mais cette fois ci sur année 2 et ainsi de suite.
Le tout à l'air de bien fonctionner, mais un peu d'aide pour simplifier ou utiliser une autre méthode serait la bienvenue.

(J'aimerais ne pas faire de sous total sur la première feuille, le fichier original est assez massif)
Edit: Il est possible de vider le tableau de la deuxieme feuille ( en gardant les titres bien sur)
 
Dernière édition:

Theze

XLDnaute Occasionnel
Re : Enregistrement multiple de calculs sur deuxième feuille via VBA

Bonjour,

Une première proposition, d'autres suivront probablement et mieux :
Code:
Sub Simulation2()

    Application.ScreenUpdating = False

    Sheets("Sheet2").Select

        If Range("B2").Value = "" Then
        
            Range("B2").Activate
            
        Else
            
            '"Cells(2, Columns.Count)" mieux pour les version Excel
            'inférieure à 2007
            With Cells(2, Columns.Count).End(xlToLeft).Offset(, 1)
                .FormulaR1C1 = "=SUM('Sheet1'!R2C2:R4C2)"
                .Value = .Value
            End With
            
        End If

        With Cells(3, Columns.Count).End(xlToLeft).Offset(, 1)
            .FormulaR1C1 = "=SUM('Sheet1'!R5C2:R7C2)"
            .Value = .Value
        End With

        With Cells(4, Columns.Count).End(xlToLeft).Offset(, 1)
            .FormulaR1C1 = "=SUM('Sheet1'!R8C2:R10C2)"
            .Value = .Value
        End With

    Application.ScreenUpdating = True

End Sub

Hervé.
 

Beast464

XLDnaute Junior
Re : Enregistrement multiple de calculs sur deuxième feuille via VBA

Je test ceci :p le .Value = .value je ne connaissais pas

Cela fonctionne excepté pour la première cellule de la colonne qui reste vide du coup, je regarde si je peux adapter ton code.
Merci bien c'est deja plus propre en tout cas
 
Dernière édition:

Beast464

XLDnaute Junior
Re : Enregistrement multiple de calculs sur deuxième feuille via VBA

Code:
Sub Simulation2()

    Application.ScreenUpdating = False

    Sheets("Sheet2").Select

        If Range("B2").Value = "" Then
        
            Range("B2").Activate
            ActiveCell.FormulaR1C1 = "=SUM('Sheet1'!R2C2:R4C2)"
            ActiveCell.Value = ActiveCell.Value

            
        Else
            
            '"Cells(2, Columns.Count)" mieux pour les version Excel
            'inférieure à 2007
            With Cells(2, Columns.Count).End(xlToLeft).Offset(, 1)
                .FormulaR1C1 = "=SUM('Sheet1'!R2C2:R4C2)"
                .Value = .Value
            End With
            
        End If

        With Cells(3, Columns.Count).End(xlToLeft).Offset(, 1)
            .FormulaR1C1 = "=SUM('Sheet1'!R5C2:R7C2)"
            .Value = .Value
        End With

        With Cells(4, Columns.Count).End(xlToLeft).Offset(, 1)
            .FormulaR1C1 = "=SUM('Sheet1'!R8C2:R10C2)"
            .Value = .Value
        End With

    Application.ScreenUpdating = True

End Sub

Juste rajouté deux ligne pour le premier cas du if
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla