Modifier une formule dans une cellule en VBA fonction MIN

Résolu/Fermé
yulione Messages postés 39 Date d'inscription mardi 25 février 2014 Statut Membre Dernière intervention 27 octobre 2019 - Modifié par NHenry le 6/06/2015 à 13:13
yulione Messages postés 39 Date d'inscription mardi 25 février 2014 Statut Membre Dernière intervention 27 octobre 2019 - 6 juin 2015 à 21:47
Bonjour à tous.

J'en appel à votre aide généreuse.

Voici le contexte :
Tout d'abord, je début complètement avec VBA, à base de tutoriel et de lecture de Forum.

Je souhaite créer une macro sous excel (2003) qui me permet de copier deux feuilles excel n fois (n étant le nombre de cellule remplis dans une plage de cellule définie) et de modifier ensuite les formules d'autres feuilles pré-éxistante en prenant en compte ces nouvelles feuilles créé.
Jusque là rien de bien compliqué, sauf que....

Voici mon code :

Private Sub CommandButton1_Click()
 Dim nombredecentre As Integer
    Dim i As Integer
    Dim j As String
    Dim nomnewsheet1 As String
    Dim nomnewsheet2 As String
    nombredecentre = WorksheetFunction.CountA(Sheets("Statistique").Range("B8:B99"))
        
    For i = 1 To nombredecentre
        j = WorksheetFunction.Text(i, "00")
        nomnewsheet1 = j & "-" & Sheets("Statistique").Cells(i + 7, 2)
        nomnewsheet2 = j & "-" & "bilan"
        
        Sheets(Array("model1", "model2")).Copy Before:=Sheets("EIG")
        Sheets("model1 (2)").[B5] = i
        Sheets("model1 (2)").Name = nomnewsheet1
        Sheets("model2 (2)").Name = nomnewsheet2
        
        Sheets("Statistique").Cells(i + 7, 3).Interior.ColorIndex = 36
        Sheets("Statistique").Cells(i + 7, 4).Formula = "=IF(C" & i + 7 & "=0,"""",C" & i + 7 & "/" & "C" & i + 7 & ")"
        Sheets("Statistique").Cells(i + 7, 5) = "='" & nomnewsheet1 & "'!A7"
        Sheets("Statistique").Cells(i + 7, 6) = "='" & nomnewsheet1 & "'!A8"
        Sheets("Statistique").Cells(i + 7, 7) = "='" & nomnewsheet1 & "'!C8"
        Sheets("Statistique").Cells(i + 7, 8) = "='" & nomnewsheet1 & "'!C7"
        
        Sheets("Statistique").Cells(i + 7, 9).Formula = "=COUNTIF(EIG!$A$9:$A$999,""=""&B" & i + 7 & ")"
        Sheets("Statistique").Cells(i + 7, 10).Formula = "=COUNTIF(Déviations!$A$9:$A$999,""=""&B" & i + 7 & ")"
                
        Sheets("Statistique").[E7].Formula = "=Sum($E$8:$E$" & nombredecentre + 7 & ")"
        Sheets("Statistique").[F7].Formula = "=Sum($F$8:$F$" & nombredecentre + 7 & ")"
        Sheets("Statistique").[G7].Formula = "=Sum($G$8:$G$" & nombredecentre + 7 & ")"
        Sheets("Statistique").[H7].Formula = "=Sum($H$8:$H$" & nombredecentre + 7 & ")"
        Sheets("Statistique").[I7].Formula = "=Sum($I$8:$I$" & nombredecentre + 7 & ")"
        Sheets("Statistique").[J7].Formula = "=Sum($J$8:$J$" & nombredecentre + 7 & ")"
        
        If i = 1 Then
            Sheets("Etat global").[B12] = nomnewsheet2 & "!B13"
        Else
            Sheets("Etat global").[B12] = Sheets("Etat global").[B12] & "," & nomnewsheet2 & "!B13"
        End If
                
    Next i
    Sheets("Etat global").[B12] FormulaLocal = "=MIN(" & Sheets("Etat global").[B12] & ")"
    
End Sub


La dernière partie me pose souci puisque mon objectif est que dans la cellule B12 de la feuille "Etat Global" (pré-existante), je souhaite avoir une fonction MIN sur les cellules B13 de toutes mes nouvelles feuilles créées par ma macro (et pas le résultat de la fonction MIN ! mais bien une fonction comme si on la tapait directement dans excel).

Seulement voila, après de nombreux essais, je me retrouve avec des erreurs 1004 (erreur défini par l'objet ou le type) ou 405 (erreur d'arguments) à la pelle.... dues à la dernière ligne de code. il me semble que le code ne reconnait pas l'insertion de la fonction MIN dans la cellule. Je sais que la fonction MIN n'existe pas sous VBA (sauf en passant par worksheetFunction, mais dans ce cas on obtient le résultat du MIN, ce qui ne m'intéresse pas).

Félicitation pour avoir lu tout ce texte sans décrocher, et merci d'avance à ceux qui pourrons m'aider ^^

EDIT: Ajout de la coloration syntaxique.
A voir également:

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 6/06/2015 à 14:08
Bonjour,

juste ces lignes, "'" pour l'onglet, ";" separateur et le point avant formulalocal

        If i = 1 Then
            Sheets("Etat global").[B12] = "'" & nomnewsheet2 & "'!B13"
        Else
            Sheets("Etat global").[B12] = Sheets("Etat global").[B12] & ";'" & nomnewsheet2 & "'!B13"
        End If
    Next i
    Sheets("Etat global").[B12].FormulaLocal = "=MIN('" & Sheets("Etat global").[B12] & ")"
0
yulione Messages postés 39 Date d'inscription mardi 25 février 2014 Statut Membre Dernière intervention 27 octobre 2019
6 juin 2015 à 21:47
ok...je me sens bête je n'avais pas fait gaffe à la syntaxe de ma condition IF....

Merci beaucoup pour l'aide.
0