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 :

Détecter nouvelle valeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Par défaut Détecter nouvelle valeur
    Bonjour,

    Je suis en train de développer un formulaire afin de récupérer/montrer/modifier/envoyer des données provenant de plusieurs feuilles, quelque chose d'assez commun.
    Je sélectionne donc des critères dans des listes puis j'affiche les résultats dans ma feuille.
    Je lance ma macro pour retrouver les résultats dès que la valeur de la liste est modifiée pour cela j'utilise le code suivant:
    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
    21
    Sub Worksheet_Change(ByVal Target As Range)
     
    Dim semaine As Integer
    Dim region As String
     
    'Do nothing if more than one cell is changed or content deleted
    If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub
        If Target.Address = "$E$8" Then
           'Ensure target is a number
            If IsNumeric(Target) Then
                'Stop any possible runtime errors and halting code
                On Error Resume Next
                semaine = Cells(8, 5)
                region = Cells(5, 5)
                RetrieveData region, semaine
                'Allow run time errors again
                On Error GoTo 0
            End If
        End If
     
    End Sub
    C'est dans la cellule E8 que j'ai ma liste. Le problème c'est que quand je veux afficher les résultats dans ma feuille, à la première cellule qui est mise à jour la macro qui détecte les changements se déclenche! Et on est reparti pour un tour.
    Comment pourrais je faire afin de lancer ma macro qui récupère les résultats seulement quand la valeur de E8 est modifiée.

    J'espère être clair et merci d'avance.

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Slt,
    peux-être en modifiant ton code comme ceci :
    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
    'Si la cellule changée n'est pas E8 alors on sort de la procédure
    If Target.Address <> "$E$8" Then
    Exit Sub
     
    'sinon si la cellule changée est la cellule E8 alors etc.....
    Else
     If IsNumeric(Target) Then
       'Stop any possible runtime errors and halting code
     On Error Resume Next
       semaine = Cells(8, 5)
       region = Cells(5, 5)
       RetrieveData region, semaine
        'Allow run time errors again
     On Error GoTo 0
     End If
    End If
    @+


    Si ton problème n'existe plus met

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Par défaut
    Merci pour ta réponse.
    Avec ce code le problème c'est que je sors quand même de la fonction "RetrieveDate" après que j'ai mis à jour la première cellule. En effet cette fonction me récupère plusieurs valeurs que je veux mettre dans plusieurs cellules. Et dès que je vais mettre à jour la première cellule, je vais sortir de "RetrieveDate".
    Mais certes ton code me permets au moins d'éviter d'avoir une boucle infinie.

Discussions similaires

  1. Réponses: 12
    Dernier message: 18/02/2013, 22h35
  2. ancienne et nouvelle valeur dans une liste deroulante
    Par jejeman dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/11/2006, 17h06
  3. Requête UPDATE qui concatene la nouvelle valeur a l'ancienne
    Par Someonelse dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/09/2006, 16h56
  4. Réponses: 2
    Dernier message: 07/06/2006, 09h42
  5. update sur plusieurs nouvelles valeurs
    Par Mut dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/11/2003, 17h15

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