Recherche valeur dans une plage de colonnes

Atiom

XLDnaute Occasionnel
Recherche valeur dans une plage avec variables

Bonsoir le forum

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
 
Dernière édition:

soenda

XLDnaute Accro
Re : Recherche valeur dans une plage de colonnes

Bonjour le fil, Atiom

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
A plus
 

Atiom

XLDnaute Occasionnel
Re : Recherche valeur dans une plage de colonnes

Bonjour soenda

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
 

soenda

XLDnaute Accro
Re : Recherche valeur dans une plage de colonnes

Bonjour le fil, Atiom

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
A plus
 

Atiom

XLDnaute Occasionnel
Re : Recherche valeur dans une plage de colonnes

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
 

Discussions similaires

Réponses
6
Affichages
400

Statistiques des forums

Discussions
314 211
Messages
2 107 328
Membres
109 804
dernier inscrit
Dramac