Détécter les numéros de lignes modifiées suit

OMien -  
phil232 Messages postés 610 Statut Membre -
Bonjour les amis,

Je chercher un script VBA pour détécter les numéros de lignes modifiées suite à un copier/coller dans un fichier Excel.

J'ai essayé avec l'evenement Change mais ça marche que pour la première ligne, même si ma séléction concerne plusieurs lignes.

J'ai regardé aussi coté de la function Intersect mais je vois pas comment l'utiliser pour ce besoin.

Un grand merci à ceux qui prénnent de leur temps pour me répondre.

Amicalement.

5 réponses

phil232 Messages postés 610 Statut Membre 178
 
il n'ya qu 65536 * 256 cellules dans excel suffit de les scanner avant copy paster transférer le contenu de toutes les cellules dans un array et après re-scanner et comparer

XL Help suggère :

Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Source As Range)
' runs when a sheet is changed
End Sub
0
OMien
 
C pas possible comme ça ! ça prend énormémemnt de temps d'exécution !
0
phil232 Messages postés 610 Statut Membre 178
 
bien sur :))

mais ceci ne depend au moins pas d'une sélection

Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Source As Range)
' runs when a sheet is changed
End Sub189 message(s) posté(s) depuis le mercredi 21 novembre 2007

t'as déjà le range qui a changé, je crois qu'on peut faire mieux qiue ça
0
OMien
 
Resolved !

Pour mon besoin, je mets la première cellule de la ligne à True à chaque fois que cette dernière est modifiée, ce qui me permet de tester la ligne avant de renseigner l'info les fois suivantes.

Ce test que je fais permet d'améliorer les performances considérablement.

Voici mon code :

Code :

Private Sub Worksheet_Change(ByVal Target As Range)

For Each Cell In Selection
If Sheet1.Cells(Cell.Row, 1).Value <> True Then
Sheet1.Cells(Cell.Row, 1).Value = True
End If
Next Cell

End Sub
0

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

Posez votre question
phil232 Messages postés 610 Statut Membre 178
 
For Each Cell In Selection
If Sheet1.Cells(Cell.Row, 1).Value <> True Then
Sheet1.Cells(Cell.Row, 1).Value = True
End If
Next Cell

puisque de toute façon tu mets tout sur TRUE ceci est encore plus vite je penses

Range("LineHasChanged").Value = True
0