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 :

Lancer une macro sur changement de valeur cellule ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 34
    Par défaut Lancer une macro sur changement de valeur cellule ?
    Bonjour,

    Détérage de post !...
    [VBA-E]Lancer une macro sur changement de valeur cellule ?

    J'essaye actuellement d'utiliser ce code pour passer systématiquement à 1 la valeur d'une cellule (B5) lors du changement de valeur d'une autre cellule (G2).

    Le problème est que l'éxecution de la ligne suivante génère une erreur 1004 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Range("B5").Value = 1
    Mon code global
    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        On Error GoTo Erreurs
        If Target.Address = "$G$2" Then
            'Call tmp
            Application.EnableEvents = False
                Me.Range("B5").Value = 1
            Application.EnableEvents = True
        End If
    Erreurs:
        If Err <> 0 Then
            MsgBox (Err)
            Application.EnableEvents = True
        End If
    End Sub
    J'ai essayé une macro tmp suivante qui marche tout à fait normalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub tmp()
        Application.EnableEvents = False
        Me.Range("B5").Value = 1
        Application.EnableEvents = True
    End Sub
    Mais l'appel de cette macro dans la procédure qui repère le changement de valeur de G2 ne fonctionne pas non plus (même erreur 1004).

    Quelques précisions :
    Je suis en Excel 2007.
    La cellule B5 est limitée en valeurs (validation des données|liste|1;11;21;31;41...)

    Si vous avez quelques lumières à me proposer...

    Merci !
    Stéphane.

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    A mon avis "Me." ne sert à rien car tu es forcément dans la bonne feuille puisque tu fais un "Private Sub ..." cela appartient qu'a une seule feuille

    Tu dis

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 34
    Par défaut
    Ok merci.
    Cependant l'erreur 1004 ne vient pas de là...

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour le forum, pgtsdvl

    as-tu essayé ces codes simples dans la feuille ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Dim valeur As String
    Private Sub Worksheet_Activate()
    valeur = Range("G2")
    Range("B5") = ""
    End Sub
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$G$2" Then
      If Range("G2") <> valeur Then
        Range("B5").Value = 1
        valeur = Range("G2")
      End If
    End If
    End Sub
    chez moi, aucun problème

    bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 34
    Par défaut
    Bonjour,

    Merci pour ta suggestion, je viens de tester, toujours la même erreur 1004 au moment d'affecter une valeur sur B5...

    D'autres idées sur une erreur 1004 lors de l'écriture d'une valeur dans une cellule sur évènement Worksheet_change ?...

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    Je n'obtiens cette erreur que si la cellule est protégée, donc, peut-être et à adapter si la cellule est effectivement verrouillée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim valeur As String
    Private Sub Worksheet_Activate()
    Unprotect
    valeur = Range("G2")
    Range("B5") = ""
    Protect
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$G$2" Then
      If Range("G2") <> valeur Then
        Unprotect
        Range("B5").Value = 1
        valeur = Range("G2")
        Protect
      End If
    End If
    End Sub
    à voir.....
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

Discussions similaires

  1. Lancer une macro sur changement de valeur cellule
    Par maximilien59 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/01/2012, 11h10
  2. Lancer une macro sur changement de valeur cellule
    Par reyzilin dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/12/2011, 17h57
  3. Lancer une macro sur changement de valeur cellule
    Par jndruo78150 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/07/2011, 13h43
  4. Lancer une macro sur changement de valeur cellule
    Par filipbou dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/09/2009, 20h25
  5. [VBA-E]Lancer une macro sur changement de valeur cellule ?
    Par jeremiegrenoble dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/03/2006, 14h22

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