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):
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 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
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.
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
Où est mon erreur ?
Merci d'avance de votre aide.
PS: Excel 2007
Partager