Tirer un trait sous la dernier ligne excel saisie

flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005 - 26 mars 2005 à 07:26
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005 - 29 mars 2005 à 21:16
Bonjour,
j'ai une feuille excel, ds laquelle je rentre des données dans les cellules A,B,C,D,E
je souhaiterai, que lorsque j'arrete de rentrer des données, (le numero de la ligne est alors aléatoire), je souhaiterai tirer un trait sous la derniere ligne de donnée.
et ce sous excel, en vba, et un commande button, qui ce trouve sur la feuille excel.

SVP
Merci

10 réponses

pjcleder Messages postés 183 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 16 septembre 2011 11
26 mars 2005 à 15:14
PAT

Voici ce que tu écris pour souligner la cellule active.

ActiveCell.Font.Underline = xlUnderlineStyleSingle

Est-ce suffisant ou veux-tu des conseils pour déterminer quel est ta dernière ligne ?

A plus !
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
26 mars 2005 à 20:39
Ce code est un peu long, mais je n'ais pas encore trouvé le moyen de faire une boucle.
Fais un copier/coller et essaie-le.

Private Sub CommanButton1_Click()


Range("A100").Select
Selection.End(xlUp).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone


Range("b100").Select
Selection.End(xlUp).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone


Range("c100").Select

Selection.End(xlUp).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone


Range("d100").Select
Selection.End(xlUp).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone



Range("e100").Select
Selection.End(xlUp).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone


End Sub

jpleroisse
0
galopin01 Messages postés 133 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 14 octobre 2011 1
27 mars 2005 à 07:06
Bonjour,
une autre possibilité (à coller dans le module de la feuille concernée) :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = Cells.SpecialCells(xlLastCell).Row Then
iH = Target.Top + Target.Height
iL = Cells(Target.Row, 6).Left
On Error Resume Next
ActiveSheet.Shapes("EndLine").Delete
ActiveSheet.Shapes.AddLine(0, iH, iL, iH).Select
Selection.Name = "EndLine"
Target.Offset(0, 1).Activate
End If
End Sub
A+
0
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005
28 mars 2005 à 14:20
merci bcp,
cette derniere solution , de galopin01, me va tres bien: sauf une chose, ce qui serait un plus! voici le code

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = Cells.SpecialCells(xlLastCell).Row Then
iH = Target.Top + Target.Height
iL = Cells(Target.Row, 7).Left
On Error Resume Next
ActiveSheet.Shapes("EndLine").Delete
ActiveSheet.Shapes.AddLine(0, iH - 1, iL, iH - 1).Select
Selection.Name = "EndLine"
Target.Offset(0, 0).Activate
End If
End Sub
actuellement, des que l'on rentre des données dans une des cellules des colonnes A,B,C,D,E,F,G, on a une ligne qui ce trace, juste en bas de la cellule saisie! donc tout va bien

j'aimerai que si la personne qui tape dans les cellules, et qui ce trompe, en fait admettons, elle tape trop...lol, donc elle efface ce kelle a tapé et decide de s'arreter la! en fait il faudrait, une sorte de rescan, qui effacerait l'ancienne ligne tracée, et retrace une ligne la ou il y a la derniere valeur. voila, ca serait une petite amelioration a apporter, mais je ne vois pas comment faire.
merci
a bientot
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
galopin01 Messages postés 133 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 14 octobre 2011 1
28 mars 2005 à 16:55
Bonjour,
il suffit de remplacer la ligne if... comme suitIf (Target.Row Cells.SpecialCells(xlLastCell).Row) And Not (Application.CountA(Rows(Target.Row)) 0) Then
A+
0
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005
29 mars 2005 à 07:41
Bonjour Galopin
j'ai fais ce que tu m'as dis pour ce qui est de remplacer la ligne If.................

mais ca ne fonctionne pas.............
aurais tu une autre idée?
Merci
@bientot
0
galopin01 Messages postés 133 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 14 octobre 2011 1
29 mars 2005 à 10:00
heu... j'ai du trop fumer le VBA !

Private Sub Worksheet_Change(ByVal Target As Range)Y1 Target.Row Cells.SpecialCells(xlLastCell).RowY2 Application.CountA(Rows(Target.Row)) 0
iL = Cells(Target.Row, 6).Left
If Y1 And Not Y2 Then
iH = Target.Top + Target.Height
On Error Resume Next
ActiveSheet.Shapes("EndLine").Delete
ActiveSheet.Shapes.AddLine(0, iH, iL, iH).Select
Selection.Name = "EndLine"
Target.Offset(0, 1).Activate
ElseIf Y1 Then
ActiveSheet.Shapes("EndLine").Delete
ActiveSheet.Shapes.AddLine(0, Target.Top, iL, Target.Top).Select
Selection.Name = "EndLine"
Target.Offset(-1, 0).Activate
End If
End Sub

Ok ?
0
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005
29 mars 2005 à 14:31
lol!!!!! j'ai pas dis ca!!! eh! eh!

bon c pas mal, mais je vais t'ennuyer un peu!!
en fait kan tu supprimes la ligne ou tu saisies, effectivement le trait remonte, mais il remonte d'une ligne seulement!
alors qu'il ce peut ke la saisie d'avant est ete faite une , deux, voir trois ou4 lignes avant, tu vois , en fait c aléatoire, tu vois ce ke je veux dure, je sais pas si je m'exprime bien, c'est pas evident!
mais sinon, ouhai c'est pas mal, franchement merci
je sais pas si tu auras la patient lol, de m'aider encore un peu!!
mais merci kan meme!!

Alex
0
galopin01 Messages postés 133 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 14 octobre 2011 1
29 mars 2005 à 21:04
sorry,
ça n'a plus rien à voir avec la question de départ !
En fait si tu dois supprimer une partie de ton tableau tu as plus vite fait de supprimer directement toutes les lignes indésirables.
Il en va de même pour l'avant dernière ligne : tu dois d'abord supprimer la dernière pour que la macro s'applique à la nouvelle dernière ligne.
Cette macro n'est pas faite pour gérer des tableaux à géométrie variable juste pour placer un trait au dessus ou en dessous de la dernière ligne, selon qu'elle est vide ou écrite.
+
0
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005
29 mars 2005 à 21:16
ouhai oky jav bien compris, mais ya pas un moyen, de faire une boucle, pour ke le code rescan, les cellules vide ou non, et tire un trait en bas de la cellule pleine?

merci
0
Rejoignez-nous