[Excel]Avoir un Range() à fin variable

Fermé
Marco-X - 22 avril 2008 à 13:51
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 - 23 avril 2008 à 11:31
Bonjour,

Dans l'idée je remplace toute les cases vides d'une colonne par une formule, ça marche bien en sois mais j'aimerais que cela s'arrete au bas du tableau (un total) peu importe le nombre de lignes rajoutées (Les users auront le droit d'en rajouter à volonter)
Un bout de code est plus explicite :

Private Sub Worksheet_Change(ByVal Target As Range)
 
Dim Fin As Range
Dim CaseFin As String
Dim LigneFin As Integer 'Aucune idée du type à adopter
'LigneFin = ?? là je bloque !
CaseFinH = "H" & LigneFin

Set Fin = Sheets("HEURES").Range("H10:" & CaseFinH)
For Each macell In Range("Fin")
   If macell = "" Then
        macell.Formula = "=+R[0]C[-1]*R[0]C[-2]-R[0]C[-3]"
   End If
Next
End Sub

Je ne sais pas de quel type doit etre LigneFin, ni comment definir sa valeur par la denière ligne remplie de la feuille.
Et bien sur il ya peut être des erreurs dans mon code à vous de me dire.
Ca doit être tout simple mais ça ne marche pas :/

En espérant avoir de vos nouvelles.

Marc
A voir également:

1 réponse

Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
23 avril 2008 à 11:31
Bonjour,
si tu n'as pas de ligne vide dans ton tableau (si les données sont saisies sans sauter de ligne), alors tu peux utiliser la propriété end :

dim LigneFin as Long
LigneFin = range("A1").end(xldown).row

ou bien, en partant de la fin :
LigneFin = range("A65536").end(xlup).row

I.
0