Bonjour,

Le post que voici est le seul que j'aie trouvé mettant le doigt sur mon problème. J'ai appliqué l'idée de tangjuncn, mais ça ne fonctionne toujours pas.

Sur la feuille "Occupations" j'ai un planning à parcourir ligne par ligne (nb variables de lignes, colonnes fixes).
Sur la feuille "Chantiers", j'aimerais insérer des calculs style RECHERCHE().

Vu que je dois combiner RECHERCHE(), SI(), SOMME() et planning dynamique, le VBA me paraît plus efficace.

Dans un module, je place le code d'un bouton situé sur la feuille "Chantiers" (là où les valeurs calculées doivent apparaître):
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
Sub BtnMAJNbHommes_Clic()
Dim No As Integer
Dim Cat As String
Dim MaPlage As Range
Dim Cellule As Range
 
Set MaPlage = Worksheets("Chantiers").Range("F2:J52")
 
For Each Cellule In MaPlage
    No = Cells(Cellule.Row, 1)
    Cat = Cells(1, Cellule.Column)
    Cellule.Value = NbOuvriersDansCatParChantier(No, Cat)
Next Cellule
 
End Sub
Dans un autre module, je précise la fonction utilisée plus haut:
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
20
21
22
23
24
Function NbOuvriersDansCatParChantier(NoChantier As Integer, Categorie As String) As Integer
 
Dim compterOuvriers As Integer
Dim i As Integer
Dim cell As Range
Dim LigneOuvrier As Range
compterOuvriers = 0
Set LigneOuvrier = Nothing
 
For i = 3 To 40
    Set LigneOuvrier = Worksheets("Occupations").Range(Cells(i, 1), Cells(i, 370))
    If LigneOuvrier(1, 1).Value = "x" And LigneOuvrier(1, 2) = Categorie Then
        For Each cell In LigneOuvrier.Cells
            If cell.Value = NoChantier Then
            compterOuvriers = 1 + compterOuvriers
            End If
        Next cell
    End If
    Set LigneOuvrier = Nothing
Next i
 
NbOuvriersDansCatParChantier = compterOuvriers
 
End Function
La fonction NbOuvriersDansCatParChantier fonctionne très bien dans la feuille "Occupations", mais pas dans les autres feuilles, même en prenant des constantes comme arguments plutôt que des références de cellules.

Où est mon erreur ?

Merci d'avance de votre aide.

PS: Excel 2007