Le code ci-dessous, fait la somme entre deux colonnes et affiche la valeur trouvée.
Je souhaiterais pouvoir le modifier de façon à que au lien d’afficher la somme, on puisse afficher la valeur de la première colonne remplie.( non vide )
La plage se trouve entre la colonne C (variables.col_rec ) et J (variables.col_pinc ).
Il est claire que la première colonne ( C ) peux être vide, alors dans ce cas il faut affiché la valeur de la colonne D et ainsi de suite...
Merci de votre aide.
Code:
Private Function cherche_start(ligne As Integer) As Integer
Dim i As Integer
cherche_start = 0
For i = variables.col_rec To variables.col_pinc
cherche_start = cherche_start + CInt(annuel.Cells(ligne, i))
Next
End Function
L'exemple de code ci-dessous affiche dans la colonne K, la première cellule non vide entre les colonnes C et J.
- Si toutes les cellules des colonnes C et J sont vides => k = ""
- La plage [C1:C10] est à adapter, de même que la colonne k "offset( ,8)"
Code:
Dim c As Range
Dim d As Integer
For Each c In [C1:C10]
For d = 0 To 6
If Not IsEmpty(c.Offset(, d).Value) Then Exit For
Next
c.Offset(, 8).Value = c.Offset(, d).Value
Next
L’exemple fonctionne parfaitement.
Mais comme je dois absolument garder mes variables.
Lorsque j’essaie d’adapter ta proposition ça bug toujours.
Ets-ce que quelqu’un peux, SVP adapter avec les variables.
Merci
Ci-dessous un essaie que ne fonctionne pas.
Code:
Private Function cherche_start(ligne As Integer) As Integer
Dim c As Range
Dim d As Integer
Dim i As Integer
For Each c In [C2:J100]
For d = 0 To 8
If Not IsEmpty(c.Offset(, d).Value) Then Exit For
Next
cherche_start = c.Offset(, d).Value + CInt(annuel.Cells(ligne, i))
Next
End Function
S'agissant d'une fonction ...
Fait la somme de la 1ère cellule non-vide de la ligne passait en paramètre avec (pour l'exemple) la cellule de la colonne J de la même ligne ' A adapter.
-La fonction peut-être entrée dans n'mporte quelle cellule (puisque la ligne est renseignée), sauf dans la plage concernée par le calcul (ref. circulaire)
- exemple d'utilisation en K2 =cherche_start(LIGNE()) et tirer vers le bas.
Code:
Function cherche_start(L%) As Integer
Dim i%
For i = 3 To 9
If Not IsEmpty(Cells(L, i)) Then Exit For
Next
cherche_start = Cells(L, i) + Cells(L, 10) [B][COLOR=green]' + CInt(annuel.Cells(L, i))[/COLOR][/B]
End Function
Bonjour le fil,
Merci beaucoup pour ton aide soenda, elles sont correctes mais comme il s’agit effectivement d’une fonction, il m’été très difficile à adapter il avait toujours un bug.
Alors avec l’aide de Solquagerius qui avait réalisé la fonction on as trouvé la solution que j’ajoute si dessous.
Encore une fois grand merci à tous.
Code:
Private Function cherche_start(ligne As Integer) As Integer
Dim i As Integer
i = variables.col_rec
While CInt(annuel.Cells(ligne, i)) = 0
i = i + 1
Wend
cherche_start = CInt(annuel.Cells(ligne, i))
End Function