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 Evènement "Worksheet_Change" [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Par défaut VBA Evènement "Worksheet_Change"
    Bonjour à tous,


    je débute en VBA, et j'aimerais utiliser une macro "Worksheet_Change" s'activant lorsque je quitte une certaine cellule. J'ai réussi à faire celà pour des cellules "fixes" ;

    cependant, après une intéraction avec l'utilisateur, je voudrais insérer des lignes sur lesquelles je veux ensuite appliquer ma macro.

    Je suis bloqué ici :
    Est-il possible de contrôler le moment et le lieu de l'activation de cette macro ?

    Je ne sais pas si je suis assez clair, je peux donner des précisions si besoin.

    Cordialement,

    Rémi

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    le paramètre Target permet de te donner la plage de cellules modifiée

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Not Intersect(Target, Range("A1:C100")) Is Nothing Then MsgBox "Changement dans plage A1:C100"
    End Sub

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Par défaut
    Soit, mais si jamais une intéraction avec un utilisateur insère une nouvelle ligne, admettons la ligne 101, je suis obligé de revenir trifouiller mon code pour que la macro affecte cette dernière ?

    Merci d'avance

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si à chaque changement dans la feuille, tu devrai changer ton code, ça ne sera plus un code mais un casse tête.
    Explique clairement ce que tu cherches à faire.

    Ma première réponse était pour expliquer la paramètre Target.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Par défaut
    on est d'accord !

    Voici mon projet :

    Je propose à l'utilisateur d'ajouter autant de lignes qu'il le désire. Le nombre de lignes peut donc varier.
    Pour chacune de ces lignes, il n'aura le droit que de modifier qu'une seule cellule, et c'est là que ma macro "Worksheet_Change" intervient :

    s'il modifie une cellule, je verrouille toutes les autres sur la même ligne.

    Comment, à chaque nouvelle ligne créée, indiquer que la macro doit s'occuper de cette dernière ?

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Juste une idée :
    • tu protèges la feuille
    • quand tu crées une nouvelle ligne, tu déverrouilles les cellules de cette ligne
    • Quand une cellule est mise à jour (c'est là qu'intervient la procédure évènementielle Worksheet_Change et que tu devras utiliser l'argument Target), tu verrouilles toute la ligne.

    Cordialement,

    PGZ

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

Discussions similaires

  1. Requete fichier .js VBA EXCEL REALTIME FX QUOTES
    Par tiuse75016 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/05/2010, 18h51
  2. Filtre VBA, problemme avec double quote
    Par choubak dans le forum VBA Access
    Réponses: 7
    Dernier message: 29/06/2007, 09h31

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