IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] Repérer la dernière cellule modifiée


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Points : 25
    Points
    25
    Par défaut [VBA-E] Repérer la dernière cellule modifiée
    Bonjour!
    J'ai deux petites questions :

    1/ Comment peut-on masquer l'execution d'une macro? (ne pas visualiser les changements de feuilles, les déplacements dans les lignes, les sélections...)

    2/ Y-a-t-il moyen de savoir quelle cellule à été modifiée? J'ai utilisé l'évémement WorkSheet_Change, mais le problème est que :
    - Il s'agit de cellule contenant des listes déroulantes, et je veux répertorier tous les changements effectués sur ma feuille, dans une feuille "Log".
    - Si l'utilisateur sélectione la valeur dans la liste avec la souris, pas de problème ca fonctionne.
    - Mais s'il entre au clavier la valeur se trouvant dans la liste, puisqu'il se déplace sur la cellule suivante avec les flèches du clavier, ce que je récupére est la cellule de destination.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
                TabModif(0) = Format(Now, "dd/mm/yyyy")
                TabModif(1) = Time
                TabModif(2) = Environ("username")
                TabModif(3) = ActiveSheet.Name
                TabModif(4) = Cells(3, ActiveCell.Column).Value
                TabModif(5) = ActiveCell.Row
                TabModif(6) = ActiveCell.Value
     
                i = 2
                Do
                    i = i + 1
                Loop Until Sheets("Log").Cells(i, 1).Value = ""
     
                Sheets("Log").Cells(i, 1).Value = TabModif(0)
                Sheets("Log").Cells(i, 2).Value = TabModif(1)
                Sheets("Log").Cells(i, 3).Value = TabModif(2)
                Sheets("Log").Cells(i, 4).Value = TabModif(3)
                Sheets("Log").Cells(i, 5).Value = TabModif(4)
                Sheets("Log").Cells(i, 6).Value = TabModif(5)
                Sheets("Log").Cells(i, 7).Value = TabModif(6)

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Bon, pour masquer l'execution, je viens de trouver comment faire :
    Application.ScreenUpdating = False

    Ca marche impeccable, et on y gagne en rapidité.

    Par contre je n'arrive toujours pas à trouver comment faire pour mon second problème...

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    tu peux tester cette adaptation , à placer au niveau de la feuille de saisie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
     
    i = Sheets("Log").Range("A65536").End(xlUp).Row + 1
     
    With Sheets("Log")
    .Cells(i, 1).Value = Format(Date, "dd/mm/yyyy")
    .Cells(i, 2).Value = Time
    .Cells(i, 3).Value = Environ("username")
    .Cells(i, 4).Value = ActiveSheet.Name
    .Cells(i, 5).Value = Cells(3, Target.Column).Value
    .Cells(i, 6).Value = Target.Row
    .Cells(i, 7).Value = Target
    .Cells(i, 8).Value = Target.Address
    End With
     
    End Sub

    bon apres midi
    michel

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup, ca marche parfaitement!

    Juste une petite précision, tu pourrais m'expliquer cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i = Sheets("Log").Range("A65536").End(xlUp).Row + 1
    Je vois à peu près ce qu'elle fait, mais je ne comprend pas bien la rédaction...

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    rebonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i= Sheets("Log").Range("A65536").End(xlUp).Row
    permet de recuperer le numero de la derniere ligne non vide, dans la colonne A


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i = Sheets("Log").Range("A65536").End(xlUp).Row + 1
    permet donc de recuperer la 1ere cellule vide suivante



    bonne apres midi
    michel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment identifier la dernière cellule modifiée
    Par Tho69 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 29/09/2021, 13h37
  2. Code VBA uniquement si cellule modifiée
    Par tictactoc dans le forum Excel
    Réponses: 1
    Dernier message: 12/06/2009, 17h29
  3. Réponses: 1
    Dernier message: 26/05/2007, 15h20
  4. [VBA-E] UsedRange pour la recherche de la dernière cellule
    Par kptn_kvrn dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/04/2007, 13h46
  5. [VBA-E] dernière cellule d'une colonne
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/03/2007, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo