Bonjour,

Je voudrais faire une boucle pour écrire une formule dans chaque cellule d'un tableau (chaque formule étant différente). La formule utilise SOMME.SI.ENS() de excel.

Voici le code que j'ai essayé, sans succès

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub RempliTablo()
' Ecrit les formules sur la page excel directement
' Ces formules iront chercher les références des différentes plages.
 
Dim Lig As Integer, Sh As Sheets
Set Sh = Sheets("BDD_matériels")
Lig = Sheets("BDD_matériels").Range("A10000").End(xlUp).Row
 
With Range("tab_usages_contrats")
    For i = 1 To Nbre_contrats ' nbre_contrats et nbre_usages sont des variables globales (Integer)
        For j = 1 To Nbre_usages
            .Cells(i + 1,j+1).Formulalocal=" _
            =somme.si.ens("Sh.range(cells(2, 17), cells(lig, 17)) & ";" _
            & Sh.Range(Cells(2, 6),cells(lig, 6)) & ";" & .Cells(i+1, 1) _
            & ";" & Sh.Range(cells(2, 3), cells(lig, 3)) &  ";" & .Cells(1, j+1) & ")"
        Next j
    Next i
End With
End Sub
Je pourrai remplir le tableau directement en enlevant la formule et en mettant à la place une macro qui marcherait mais y a 2 contraintes :
1- La taille du tableau n'est pas fixe (il y a "nbre_contrats"+1 lignes et "nbre_contrats"+1 colonnes)
2- Les données qui se trouvent dans la feuille "BDD_matériels" peuvent changer, et le tableau doit se remplir automatiquement à ce moment là.

Vu que l'utilisation de formules marche bien pour ce cas là, je me suis un peu renseigné et j'ai trouvé "formulalocal" (qui a l'avantage de pas avoir à changer de langage par rapport à "formula").
Mais ça coince et j'arrive pas à bien l'utiliser.

Merci d'avance pour votre aide !

Renardor