Bonjour,
J'aimerai insérer une formule Excel via un code VBA sur 31 colonnes avec changement de lettre par formule.
Cette formule est à écrire dans les cellules C30 à AG30 avec l'incrément des lettres C dans la formule (C à AG)
=SOMME_SI_COULEUR(C$31:C$34;16777215) jusqu'à =SOMME_SI_COULEUR(AG$31:AG$34;16777215)
Je n'y parviens pas. (Je suis novice)
Si quelqu'un pouvait m'aider, je le remercie d'avance
Je pourrais écrire la formule directement dans les cellules, mais ce n'est pas mon souhait.
@gilboss
Dans un classeur où tu auras copié les deux fonctions que j'ai postées.
(message#12)
Copie puis éxécute cette macro qui créé un exemple
Code:
Sub Macro_pour_créer_exemple()
Dim t
t = Array(2, 3, 7, 6, vbNullString, vbNullString, 1, 0, vbNullString, 8)
Range("A1").Interior.ColorIndex = 6
Range("B3:B10").Value = Application.Transpose(t)
Range("B3:B10").FormatConditions.Add Type:=xlExpression, Formula1:="=ET(EST.PAIR($B3);$B3>0)"
Range("B3:B10").FormatConditions(Range("B3:B10").FormatConditions.Count).SetFirstPriority
Range("B3:B10").FormatConditions(1).Interior.ColorIndex = 6
Range("B12").Formula = "=SOMMECOULEURS(B3:B10,A1)"
Range("B12").Font.Bold = -1
End Sub
La somme en B12 est correcte, non ?
Pour continuer le test, change manuellement quelles valeurs
(en mettant deux, trois ou quatre chiffres pairs)
Tu verrais que la somme s'actualisera et sera bonne.
Tout c'est bien remplie, mais désolé, en B12 j'ai #valeurs
J'ai mis la fontion dans Module1, la nouvelle macro dans module2 et private fonction dans le code VBA de la feuille. Si je change des valeurs impair en pair, effectivement la couleur devient jaune.
Sub Macro_pour_créer_exemple_BIS()
Dim t, r As Range: Set r = Range("B3:B10")
t = Array(2, 3, 7, 6, 0, 1, 0, 5)
Range("A1").Interior.ColorIndex = 6
r.Value = Application.Transpose(t)
r.FormatConditions.Add Type:=xlExpression, Formula1:="=ET(EST.PAIR($B3);$B3>0)"
r.FormatConditions(r.FormatConditions.Count).SetFirstPriority
r.FormatConditions(1).Interior.ColorIndex = 6
Range("B12").Formula = "=SOMMECOULEURS(B3:B10,A1)"
Range("B12").Font.Bold = -1
End Sub
Sub Macro_pour_créer_exemple_BIS()
Dim t, r As Range: Set r = Range("B3:B10")
t = Array(2, 3, 7, 6, 0, 1, 0, 5)
Range("A1").Interior.ColorIndex = 6
r.Value = Application.Transpose(t)
r.FormatConditions.Add Type:=xlExpression, Formula1:="=ET(EST.PAIR($B3);$B3>0)"
r.FormatConditions(r.FormatConditions.Count).SetFirstPriority
r.FormatConditions(1).Interior.ColorIndex = 6
Range("B12").Formula = "=SOMMECOULEURS(B3:B10,A1)"
Range("B12").Font.Bold = -1
End Sub