Sélection dernière ligne
Bonjour,
J'ai modifié un code à ma sauce et je n'arrive pas à le faire marcher
Sur la page "data" j'actualise des données et j'aimerais que lorsque qu'il y a une nouvelle entrée.
Sur la page "historic" sur la dernière ligne + 1 du "data" en question se mette le chiffre 125.
Désolé de mon explication avec le document ça sera plus simple à visualiser ^^"
Private Sub Worksheet_Change(ByVal Target As Range)
'
If InStr(Target.Offset(0, -1), "Data") = 1 Then
With Worksheets("Historic")
On Error Resume Next
Set rCel = .Cells.Find(what:=Target.Offset(0, -1), lookat:=xlWhole, LookIn:=xlValues)
iCol = rCel.Column
Dim Ligne As Long
Ligne = iCol.End(xlDown).Row
Range(Ligne, iCol + 1) = "125"
'
On Error GoTo 0
End With
End If
'
End SubBonjour,
Voici un essai, à améliorer probablement :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rCel as range
Dim iCol as long, Nvl As Long
If Target.Offset(0, -1) like "Data*" Then
With Worksheets("Historic")
Set rCel = .Cells.Find(what:=Target.Offset(0, -1).value, LookIn:=xlValues, lookat:=xlWhole)
if not rCel is nothing then 'si correspondance
'OPTION 1
iCol = rCel.Column 'colonne cellule corresp.
Nvl = .cells(.rows.count, iCol).End(xlup).Row + 1 'nvlle ligne : derniere ligne + 1 dans cette colonne
.cells(Nvl, iCol) = 125 'prend valeur 125
'OPTION 2 (à condition d'être sûr du xldown)
'rCel.end(xldown).offset(1,0) = 125 'descend vers le bas, décale d'une ligne : cellule renvoyée vaut 125
else 'optionnel
msgbox "Pas de correspondance" 'optionnel : message confirmation si pas trouvé
end if
End With
End If
End SubLe premier souci se situait sur l'affectation de Ligne : la méthode .end s'applique sur un objet range et non sur un nombre.
Le second résidait dans la syntaxe de range : Range("B1") = cells(1,2). Il y avait une petite confusion.
Sinon, il faut s'assurer, surtout dans ce cas où le code est exécuté depuis Data, de bien cibler la feuille Historic et donc de bien y rattacher tous ses enfants (les range en l'occurrence) en pointant : .cells, .range... Sinon, VBA comprend que ce sont des objets de la feuille active.
Cdlt,
Merci pour ces explications détaillé je vais essayer de mieux comprendre tout sa .
Je te remercie