Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…