Sélection jusqu'à la prochaine cellule non vide

Fermé
Débutante - 28 oct. 2015 à 10:19
Frenchie83 Messages postés 2237 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 20 juin 2022 - 28 oct. 2015 à 14:21
Bonjour,

Je débute en VBA et je bloque pour une formule.

ActiveCell.FormulaR1C1 = "=RC[-1]/(R[-5]C[-1]:R[-1]C[-1])"

Je pars de la cellule active et je souhaite que la cellule à gauche de ma cellule active soit divisée par la plage suivante :
De la cellule au dessus de « RC[-1] » jusqu'à la prochaine cellule non vide

Lorsque je le fait manuellement en enregistrant une macro, il me sélectionne la plage de cellule.

Mais ce que j'aimerais c'est introduire ce code la :
Range(Selection, Selection.End(xlUp)).Select

Mais je ne vois pas comment faire.

Merci
A voir également:

2 réponses

Frenchie83 Messages postés 2237 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 20 juin 2022 332
28 oct. 2015 à 12:07
Bonjour
"jusqu'à la prochaine cellule non vide" en remontant si j'ai bien compris.
    For i = ActiveCell.Row - 1 To 1 Step -1
        If Cells(i, ActiveCell.Column - 1) = "" Then
            DerLig = i + 1
            ActiveCell.FormulaR1C1 = "=RC[-1]/SUM(R" & DerLig & "C[-1]:R[-1]C[-1])"
            Exit Sub
         End If
    Next i

A tester
Cdlt
0
C'est tout à fait ça ! Merci beaucoup pour votre réponse si rapide!

Motivé par tout ça, j'ai essayé d'aller plus loin, en me disant :

On applique cette formule dans la colonne C, dès que l'on voit dans une cellule de la colonne B le mot "total".
J'ai donc essayé le chose suivante :

Sub Macro1()
'
' Macro1 Macro
'

For i = ActiveCell.Row - 1 To 1 Step -1
        If Cells(i, ActiveCell.Column - 1) = "" Then
            DerLig = i + 1
            Range("C:C").FormulaR1C1 = "=IF(LEFT(RC[-2],5)=""Total"",RC[-1]/SUM(R" & DerLig & "C[-1]:R[-1]C[-1]),20"
            Exit Sub
         End If
    Next i

'
End Sub


Mais cela ne fonctionne pas.
Voyez-vous le point bloquant ?
0
Frenchie83 Messages postés 2237 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 20 juin 2022 332
28 oct. 2015 à 14:21
il manque la parenthèse fermante après le 20.
De plus vous appliquez la formule sur la colonne entière, il faudrait y mettre des limites hautes et basses.
Ensuite, si la condition n'est pas remplie, vous mettez la valeur 20 dans tous les autres cas, il faudrait rajouter une condition supplémentaire qui vérifie si la colonne B n'est pas vide.
Ce qui donnerait quelque chose dans ce genre
Sub Macro1()
    For i = ActiveCell.Row - 1 To 1 Step -1
        If Cells(i, ActiveCell.Column - 1) = "" Or i = 1 Then
            DerLig = i + 1
            Range("C2:C100").FormulaR1C1 = "=IF(LEFT(RC[-2],5)=""Total"",RC[-1]/SUM(R" & DerLig & "C[-1]:R[-1]C[-1]),IF(RC[-1]<>"""",20,""""))"
            Exit Sub
        End If
    Next i
End Sub

Pour le test, j'ai mis une limite haute à la ligne 2 et une limite basse à 100.
A tester
0