Pierre1981
XLDnaute Nouveau
Bonjour,
je travaille actuellement sur ce fichier que j'ai récupéré de la personne en place avant moi.
(je ne peux malheureusement pas le poster car trop volumineux, mais si quelqu'un peut m'aider qu'il me MP)
il s'agit d'un fichier avec une 60aine d'onglets qui va finir par être mis en ligne sur l'intranet de l'entreprise afin d'être nourri par les différents établissements qui la compose.
Le problème (on y vient) est que la personne avant moi avait tout fait en formule (et certaine sont assez monstrueuses) et la partie concernant le code VBA est un peu b*****ique.
j'ai donc repris certaines cellules et il me semble que les onglets concernant les établissements fonctionnent maintenant de la bonne façon.
Cependant quand j'en arrive au dernier onglet qui sert à consolider je suis obligé de créer une fonction puisque les seuls formules excels ne suffisent pas.
voici les deux fonctions que j'ai créées et qui posent problème.
'donne le nombre de participants total à toutes les formations d'une catégorie sur l'ensemble de l'association
Function nbparticipassocsp(colonne As String, ligne As Integer) As Variant
Dim h As Integer
Dim i As Integer
Dim rang As Integer
Dim resultat As Variant
Dim nbpers As Integer
Dim feuillenom As String
Dim cell As String
resultat = 0
rang = 17
For h = 1 To 63
Sheets(h).Select
feuillenom = Right(Sheets(h).Name, 3)
If feuillenom Like ("(1)") Then
If Not IsEmpty(Sheets(h).Range("A15")) Then
For i = 1 To 177
cell = colonne & rang
If Not IsEmpty(Sheets(h).Range(cell)) Then
If Sheets(h).Range(cell).HasFormula = False Then
resultat = resultat + Sheets(h).Range("N" & rang).Value * Sheets(h).Range(cell).Value
nbpers = nbpers + Sheets(h).Range("N" & rang).Value
End If
End If
rang = rang + 1
Next i
rang = 17
End If
End If
Next h
nbparticipassocsp = resultat / nbpers
End Function
'permet de trouver le nombre de participant aux formations collectives
Function nbparticipassocspcoll(colonne As String, ligne As Integer) As Variant
Dim h As Integer
Dim i As Integer
Dim rang2 As Integer
Dim resultat As Variant
Dim nbpers As Integer
Dim feuillenom As String
Dim cell As String
Dim test As String
resultat = 0
For h = 1 To 63
Sheets(h).Select
feuillenom = Right(Sheets(h).Name, 3)
If feuillenom Like ("(1)") Then
For i = ligne To 177 Step 16
cell = colonne & i
test = Sheets(h).Range("A" & i).Value
If test Like ("Intitulé des actions collectives (1 ligne par groupe)") Then
rang2 = i
For j = 1 To 10
If Not IsEmpty(Sheets(h).Range(cell)) Then
If Sheets(h).Range(cell).HasFormula = False Then
resultat = resultat + Sheets(h).Range("N" & rang2).Value * Sheets(h).Range(cell).Value
nbpers = nbpers + Sheets(h).Range("N" & rang2).Value
End If
End If
rang2 = rang2 + 1
cell = (colonne & rang2)
Next j
i = rang2
rang2 = 0
End If
Next i
End If
Next h
nbparticipassocspcoll = resultat / nbpers
End Function
Le code est bon je pense (enfin la méthode de calcul implémenté en tout cas) car lorsque j'arrive à les faire fonctionner le résultat est ok. Le problème est que j'ai sytématiquement une référence circulaire à l'ouverture du fichier et cela empêche donc le calcul de s'effectuer (il ne se fait qu'en mode debugage).
Quelqu'un pourrait-il me dire si quelque chose dans mon code génère cette erreur ?
Merci d'avance.
je travaille actuellement sur ce fichier que j'ai récupéré de la personne en place avant moi.
(je ne peux malheureusement pas le poster car trop volumineux, mais si quelqu'un peut m'aider qu'il me MP)
il s'agit d'un fichier avec une 60aine d'onglets qui va finir par être mis en ligne sur l'intranet de l'entreprise afin d'être nourri par les différents établissements qui la compose.
Le problème (on y vient) est que la personne avant moi avait tout fait en formule (et certaine sont assez monstrueuses) et la partie concernant le code VBA est un peu b*****ique.
j'ai donc repris certaines cellules et il me semble que les onglets concernant les établissements fonctionnent maintenant de la bonne façon.
Cependant quand j'en arrive au dernier onglet qui sert à consolider je suis obligé de créer une fonction puisque les seuls formules excels ne suffisent pas.
voici les deux fonctions que j'ai créées et qui posent problème.
'donne le nombre de participants total à toutes les formations d'une catégorie sur l'ensemble de l'association
Function nbparticipassocsp(colonne As String, ligne As Integer) As Variant
Dim h As Integer
Dim i As Integer
Dim rang As Integer
Dim resultat As Variant
Dim nbpers As Integer
Dim feuillenom As String
Dim cell As String
resultat = 0
rang = 17
For h = 1 To 63
Sheets(h).Select
feuillenom = Right(Sheets(h).Name, 3)
If feuillenom Like ("(1)") Then
If Not IsEmpty(Sheets(h).Range("A15")) Then
For i = 1 To 177
cell = colonne & rang
If Not IsEmpty(Sheets(h).Range(cell)) Then
If Sheets(h).Range(cell).HasFormula = False Then
resultat = resultat + Sheets(h).Range("N" & rang).Value * Sheets(h).Range(cell).Value
nbpers = nbpers + Sheets(h).Range("N" & rang).Value
End If
End If
rang = rang + 1
Next i
rang = 17
End If
End If
Next h
nbparticipassocsp = resultat / nbpers
End Function
'permet de trouver le nombre de participant aux formations collectives
Function nbparticipassocspcoll(colonne As String, ligne As Integer) As Variant
Dim h As Integer
Dim i As Integer
Dim rang2 As Integer
Dim resultat As Variant
Dim nbpers As Integer
Dim feuillenom As String
Dim cell As String
Dim test As String
resultat = 0
For h = 1 To 63
Sheets(h).Select
feuillenom = Right(Sheets(h).Name, 3)
If feuillenom Like ("(1)") Then
For i = ligne To 177 Step 16
cell = colonne & i
test = Sheets(h).Range("A" & i).Value
If test Like ("Intitulé des actions collectives (1 ligne par groupe)") Then
rang2 = i
For j = 1 To 10
If Not IsEmpty(Sheets(h).Range(cell)) Then
If Sheets(h).Range(cell).HasFormula = False Then
resultat = resultat + Sheets(h).Range("N" & rang2).Value * Sheets(h).Range(cell).Value
nbpers = nbpers + Sheets(h).Range("N" & rang2).Value
End If
End If
rang2 = rang2 + 1
cell = (colonne & rang2)
Next j
i = rang2
rang2 = 0
End If
Next i
End If
Next h
nbparticipassocspcoll = resultat / nbpers
End Function
Le code est bon je pense (enfin la méthode de calcul implémenté en tout cas) car lorsque j'arrive à les faire fonctionner le résultat est ok. Le problème est que j'ai sytématiquement une référence circulaire à l'ouverture du fichier et cela empêche donc le calcul de s'effectuer (il ne se fait qu'en mode debugage).
Quelqu'un pourrait-il me dire si quelque chose dans mon code génère cette erreur ?
Merci d'avance.