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 :

Macro permettant un MsgBox lorsqu'une valeur d'affiche [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Par défaut Macro permettant un MsgBox lorsqu'une valeur d'affiche
    Bonjour chers développeurs !

    J'ai besoin de vous !
    Je suis face à un problème :
    Je souhaiterais afficher un MsgBox lorsque sur la feuille, dans la colonne D, une cellule prend la valeur 100.
    Ce que je n'arrive pas à coder, c'est la partie "dynamique", autrement dit, DES qu'une cellule prend la valeur 100, alors j'affiche un message.

    Je vous remercie d'avance pour votre aide,

    THOMAS

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je souhaiterais afficher un MsgBox lorsque sur la feuille, dans la colonne D, une cellule prend la valeur 100.
    Ce que je n'arrive pas à coder, c'est la partie "dynamique", autrement dit, DES qu'une cellule prend la valeur 100, alors j'affiche un message.
    Placer le code dans la procédure événementielle Worksheet_Change de la feuille en question.
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Value = 100 Then MsgBox "Coucou"
    End Sub
    A lire Les évènements dans la feuille de calcul Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Par défaut
    Je te remercie pour ta réactivité !

    Ceci ne marche pas :/ je pense que c'est du au fait que le 100 sort d'une formule. J'ai testé si c'est moi même qui le rentre, alors dans ce cas ça fonctionne. Mais dans mon cas, ca ne marche pas.
    Aussi j'aurais aimé cibler uniquement la colonne D. Est ce possible ?

    Merci encore !

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Tu doit d'abord obtenir le nom de la colonne, puis tester si c'est D. Le tout avant de tester la valeur de la cellule.

    La fonction suivante te donnera la nom de la colonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function getColumnName(ByRef oCell As Range)
        Dim strColumn As String
     
            '// obtient l'adresse de la colonne, sous forme A:A
        strColumn = oCell.EntireColumn.Address(False, False, xlA1)
            '// retourne le nom de la colonne
        getColumnName = Split(strColumn, ":")(1)
    End Function
    Quand à detecter les changements de valeurs, l'evennement n'est levé que suite a un changement direct de l'utilisateur (frappe au clavier), les changements indirect (issue d'une formule par exemple) ne declenchent pas l'evennement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Par défaut
    Je souhaite faire cela uniquement dans la colonne D. Seulement si 100 s'affiche dans une cellule de la colonne D.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ceci ne marche pas :/ je pense que c'est du au fait que le 100 sort d'une formule. J'ai testé si c'est moi même qui le rentre, alors dans ce cas ça fonctionne. Mais dans mon cas, ca ne marche pas.
    Evidemment cette procédure événementielle réagit si l'on modifie la valeur comme une constante et pas si sa valeur change par le résultat d'une formule
    A ma connaissance, on ne peut pas intercepter l'événement si la valeur d'une cellule est modifiée par le résultat d'une formule.
    Il y a bien cette possibilité de vérifier la valeur du dépendant de la cellule où a lieu le changement.
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Dependents.Value = 100 Then MsgBox "Coucou"
    End Sub
    Attention que dans cet exemple il faut que le dépendant soit sur la même feuille et il ne peut pas avoir plusieurs cellules dépendantes. Sinon il faut utiliser modifier la procédure.
    Aussi j'aurais aimé cibler uniquement la colonne D. Est ce possible ?
    Oui si tu veux tester la colonne où a lieu le changement
    S'il s'agit de tester si la formule se trouve sur la colonne 4 (D), je n'ai pas le temps de chercher pour l'instant mais voici le code pour afficher la colonne du dépendant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Dependents.Value = 100 Then MsgBox Target.Dependents.Column
    [EDIT]
    Pour éviter que le programme se mette en erreur si une cellule concernée par la procédure événementielle n'a pas de cellule dépendante il faut bien entendu intercepter l'erreur
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
     On Error GoTo ErrorHandler
      If Target.Dependents.Value = 100 And Target.Dependents.Column = 4 Then
       MsgBox "Oui"
      End If
    Exit Sub
    ErrorHandler:
     On Error GoTo 0
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Par défaut
    Peu importe la localisation dans la feuille. Ce que je souhaite avant tout est d'afficher un msgbox lorsqu'une cellule de la colonne D prend la valeur 100 (100 étant le résultat d'une formule :/ )
    Je suis bloqué ! :/

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Et bien je crois avoir mis le code correspondant.
    je précise que je ne fais pas partie de ton personnel car je trouve le ton un peu impératif
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [AC-2003] Msgbox avec une valeur entrante
    Par mmmxtina dans le forum VBA Access
    Réponses: 7
    Dernier message: 28/07/2009, 15h29
  2. Exécution lorsque une valeur change parmi une plage
    Par Janny dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/05/2009, 13h56
  3. MsgBox avec une valeur
    Par Tintou dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/04/2008, 10h38
  4. Réponses: 2
    Dernier message: 20/01/2008, 17h31
  5. Calcul Stock Actuel mm lorsqu'une valeur est null
    Par priest69 dans le forum Access
    Réponses: 3
    Dernier message: 12/09/2005, 18h58

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