Modifier une formule dans une cellule en VBA fonction MIN
Résolu
yulione
Messages postés
58
Date d'inscription
Statut
Membre
Dernière intervention
-
yulione Messages postés 58 Date d'inscription Statut Membre Dernière intervention -
yulione Messages postés 58 Date d'inscription Statut Membre Dernière intervention -
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 :
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.
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:
- Modifier une formule dans une cellule en VBA fonction MIN
- Modifier dns - Guide
- Fonction si et - Guide
- Modifier une story facebook - Guide
- Modifier une liste déroulante excel - Guide
- Verrouiller une cellule excel dans une formule - Guide
2 réponses
Bonjour,
juste ces lignes, "'" pour l'onglet, ";" separateur et le point avant formulalocal
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] & ")"