Modifier une formule dans une cellule en VBA fonction MIN [Résolu/Fermé]

Signaler
Messages postés
39
Date d'inscription
mardi 25 février 2014
Statut
Membre
Dernière intervention
27 octobre 2019
-
Messages postés
39
Date d'inscription
mardi 25 février 2014
Statut
Membre
Dernière intervention
27 octobre 2019
-
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.

2 réponses

Messages postés
15738
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
20 avril 2021
1 483
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] & ")"
Messages postés
39
Date d'inscription
mardi 25 février 2014
Statut
Membre
Dernière intervention
27 octobre 2019
1
ok...je me sens bête je n'avais pas fait gaffe à la syntaxe de ma condition IF....

Merci beaucoup pour l'aide.