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.
Configuration: Windows XP
Firefox 2.0.0.11

5 réponses

  1. 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
  2. OMien
     
    C pas possible comme ça ! ça prend énormémemnt de temps d'exécution !
    0
  3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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