Comment mettre boucle dans une fonction ?
Résolu
cartiers
-
cartiers -
cartiers -
Bonjour,
Je reviens vers vous aujourd'hui car vous m'avez beaucoup aidé hier.
Mon problème du jour est tout autre:
j'ai une fonction qui compte le nombre de cellules colorées d'une ligne. Elle s'appelle NbCellCouleur et contient 2 paramètres : le range et la couleur.
J'aimerai utiliser cette fonction dans une boucle for pour faire le calcul de la ligne 8 à la ligne 38 et garder les 30 valeurs dans les cellules H8 à H38.
J'ai écrit
Mon problème consiste donc à trouver ce que je mets dans NbCellCouleur([K...:EZ...) pour que ça corresponde à la ligne i.
J'espère avoir été assez claire dans mes explications et que quelqu'un pourra m'aider.
Merci d'avance à tous ceux qui pourront se pencher sur mon petit problème.
Je reviens vers vous aujourd'hui car vous m'avez beaucoup aidé hier.
Mon problème du jour est tout autre:
j'ai une fonction qui compte le nombre de cellules colorées d'une ligne. Elle s'appelle NbCellCouleur et contient 2 paramètres : le range et la couleur.
J'aimerai utiliser cette fonction dans une boucle for pour faire le calcul de la ligne 8 à la ligne 38 et garder les 30 valeurs dans les cellules H8 à H38.
J'ai écrit
For i = 8 To 38
Range("FA" & i).Value = NbCellCouleur([K...:EZ...], 4)
Range("FB" & i).Value = NbCellCouleur([K...:EZ...], 6)
Range("FC" & i).Value = NbCellCouleur([K...:EZ...], 45)
Range("FD" & i).Value = NbCellCouleur([K...:EZ...], 3)
Range("H" & i).Value = (Range("FA" & i).Value + 0.7 * Range("FB" & i).Value + 0.3 * Range("FC" & i).Value) * 4
Next i
Mon problème consiste donc à trouver ce que je mets dans NbCellCouleur([K...:EZ...) pour que ça corresponde à la ligne i.
J'espère avoir été assez claire dans mes explications et que quelqu'un pourra m'aider.
Merci d'avance à tous ceux qui pourront se pencher sur mon petit problème.
1 réponse
-
Bonjour,
Range("FA" & i).Value = NbCellCouleur(Range("K" & i & ":" & "EZ" & i), 4)
ou bien
Range("FA" & i).Value = NbCellCouleur(cells(i,"K").Resize(1,nbcol), 4)
nbcol étant le nombre de colonnes
eric
-
Merci pour la réponse mais ça me marque une erreur 1004.
Cela vient peut-être de la manière dont est définie la fonction. Voici le code :
Function NbCellCouleur(Plage As Range, Couleur As Integer) As Long Application.Volatile True Dim c As Range NbCellCouleur = 0 For Each c In Plage If c.Interior.ColorIndex = Couleur Then NbCellCouleur = NbCellCouleur + 1 End If Next c End Function
Au fait, j'ai essayé les deux méthodes. La première s'écrivait tout de suite en rouge au niveau des : dansRange("K" & i & ":" & "EZ" & i), 4
Merci quand même. -
Ah non, désolée, avec la première méthode, problème identique. J'avais dû mal recopier.
En débogage pas à pas, il s'arrête dans la fonction entre les deux lignes suivantes :For Each c In Plage If c.Interior.ColorIndex = Couleur Then
Voilà.
Le problème, c'est que je débute, donc ce ne doit pas être grand chose comme erreur mais je suis incapable de m'en sortir.
Merci encore. -
Si tu donnes par petit bout ton code on ne va pas aller bien loin...
On peut supposer que tu n'as pas initialisé couleur, avec par exemple couleur=3 pour rouge
Et pour ma 1ère proposition tu peux raccourcir en :
Range("FA" & i).Value = NbCellCouleur(Range("K" & i & ":EZ" & i), 4)
pas bien réveillé....
eric -
-