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 :

Exécution lorsque une valeur change parmi une plage


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 129
    Par défaut Exécution lorsque une valeur change parmi une plage
    Bonjour à tous,

    je n'ai pas précisé la versio d'excel car, chez moi j'utilise 2007, mais il faut que cela fonctionne au travail, en version 2003 et 2000.
    J'ai un petit souci que je n'arrive pas à résoudre...
    Je souhaite exécuter mon programme lorsque l'utilisateur change une cellule parmi une plage de données fixe.
    J'ai essayé avec Private Sub Worksheet_Change(ByVal Target As Range) mais je n'arrive pas à avoir se que je veux...
    merci d'avance pour votre aide

    Janny

  2. #2
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 133
    Par défaut Solution
    Bonjour ,


    La méthode pour déclencher un evenement sur une plage de cellule fixe est la suivante

    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
     
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim Region As Range, Position As Long
     
     
        ' Intersecetion renvoie un range si target dans dans le range nomme controle
        Set Region = Application.Intersect(Range("Controle"), Target)
     
        If Region Is Nothing Then
             MsgBox "La cible n'est pas dans la plage visé."
        Else
             MsgBox "La cible est dans la plage visé."        
        End If
     
    end sub
    Cette approche permet de voir si le changement d'une cellule intervient dans une région précise ..


    Allez bonne nuit

  3. #3
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour Janny Lynx92260 le forum on l écrire comme cela aussi en définissant une plage de b1:c10 a adapter!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("b1:c10")) Is Nothing Then MsgBox Target.Address
    End Sub

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 129
    Par défaut
    Merci pour votre aide !!

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour Tou(te)s,
    Et pour mettre les conseils en pratique...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static AncAdd As String
    Static AncCel
        If Target.Count > 1 Then Exit Sub
        If AncAdd <> "" Then
            If Not Intersect(Range(AncAdd), Range("B1:E10")) Is Nothing Then
                If Range(AncAdd) <> AncCel Then
                    MsgBox "Cellule " & AncAdd & " changée dans le bloc"
                End If
            End If
        End If
            AncAdd = Target.Address
            AncCel = Target.Value2
    End Sub
    A+
    PS: Pas oublier que Target est la cellule sur laquelle ont arrive.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 05/02/2015, 15h47
  2. Réponses: 8
    Dernier message: 05/04/2011, 09h06
  3. Réponses: 82
    Dernier message: 05/02/2011, 15h34
  4. tester une valeur et affecter une valeur
    Par Elise0251 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 29/07/2009, 17h31
  5. Réponses: 10
    Dernier message: 01/12/2006, 00h06

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