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 :

Action sur changement de valeur ne s'applique pas correctement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Août 2008
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 85
    Par défaut Action sur changement de valeur ne s'applique pas correctement
    Bonjour,

    Un peu newbie dans le domaine excel vba
    je fais dans une feuille excel des comparaisons de date.
    en colonne C j'ai des dates de début, en colonne F des dates de fin et en G l'intervalle en jour entre ces deux dates qui se met à jour en fonction de la date de fin renseignée.

    j'applique la macro sur le range G qui se modifie lorsque la date fin est renseignée
    et bien la Target.address passée est celle de la cellule modifiée en colonne F, la date fin, pas celle qui se modifie sur la plage donnée dans le range concerné c'est à dire la diff entre la cellule de la colonne F et de la colonne C en nb jours

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("G4:G1115")) Is Nothing Then
    Call colorie(Target.Address) // ce
    End If
    End Sub

    Quelque chose m'échappe :-)

  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 169
    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 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    On peut tout réaliser à l'aide du VBA, y compris effectuer la somme d'une plage de cellules mais il me semble plus judicieux d'utiliser les fonctions et outils natifs d'excel avant de créer une usine à gaz.
    On peut connaître le nombre de jours entre deux dates par une simple soustraction et avoir la cellule en couleur suivant condition à l'aide de la mise en forme conditionnelle.
    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 actif
    Inscrit en
    Août 2008
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 85
    Par défaut
    Bonjour,

    Merci de cette réponse qui ne me sert à rien.
    je sais faire des sommes, faire des conditions ... la différence entre les dates est faite par fonction de base.
    mais il se trouve qu'en fonction du résultat il y a beaucoup de tests à réaliser.
    Votre point de vue sur le côté usine à gaz gardez le. Je n'ai pas besoin de condescendance mais d'expertise. Si vous n'en avez pas ...

  4. #4
    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 169
    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 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ma réponse ne pouvait être plus complète parce-que ce que vos explications n'était pas très claires pour moi.

    Le code que vous avez publié si on s'en tient à la procédure événementielle fonctionne parfaitement si l'on modifie l'une des cellules de la plage G4:G1115 mais attention également si vous modifiez d'autres cellules englobant l'une des cellules de cette plage.

    Pour comprendre
    • insérez le code ci-dessous
    • copiez les cellule E3 à G3
    • coller les à partir de la cellule A6 .


    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 Not Intersect(Target, Range("B5:B20")) Is Nothing Then
          Dim t As String
          t = "Target = " & Target.Address
          t = t & vbCrLf & "ActiveCell = " & ActiveCell.Address
          MsgBox t
     End If
    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

  5. #5
    Membre actif
    Inscrit en
    Août 2008
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 85
    Par défaut
    Re bonjour,

    Pardonnez mon agacement, mais globalement, sur les forum français, quand on pose une question on a comme réponse, pourquoi fais tu comme ça ?
    Réponse de ma part, j'ai envie de faire comme ça, et ma question n'est pas là :-) quand bien même fonctionnellement ça puisse échapper à on interlocuteur.
    Sur les forums anglo-saxon ils ont la bonne habitude de répondre à la question posée sans plus de commentaires, par exemple BOB, excellent forum consacré à BO.

    Trève de digression.
    Merci de votre réponse
    deux constatations, ça ne fonctionne pas.
    je simplifie

    j'ai en colonne C une date debut en colonne F une date fin et en colonne G la différence entre ces deux dates, en nb jours, que je fais basiquement avec les fonctions excel. donc quand je change une date de fin la cellule nb jours change de valeur

    Dans mon petit code vba je veux capter les changements sur la colonne G, qui se produisent lorsque je change la date de fin en colonne F.

    Deux remarques, le Not Intersect ne fonctionne pas, le Intersect tout court fonctionne

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("G4:G1115")) Is Nothing Then -> ne fonctionne pas, je ne rentre pas dans la fonction appelée.

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("G4:G1115")) Is Nothing Then -> fonctionne, je rentre bien dans la fonction appelée.
    Mais fonctionne en me rendant dans la Target.Address, non pas la cellule de la colonne G qui a changé en fonction de l'évolution de la date de fin, ce que je demande dans le range à prendre en compte mais bien la cellule de la colonne F dans laquelle j'ai changé la date de fin. Mon range G n'est pas du tout pris en compte. C'est ce qui m'étonne, j'ai déjà utilisé cette fonction pour faire un calendrier de décalage horaire et elle fonctionne très bien, là j'avoue ne pas suivre.

  6. #6
    Membre actif
    Inscrit en
    Août 2008
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 85
    Par défaut
    PS - avec votre code, dans le t je récupère bien la cellule active de la colonne F

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

Discussions similaires

  1. Action sur changement de valeur de JTextField
    Par luffywallis dans le forum Composants
    Réponses: 1
    Dernier message: 13/09/2011, 10h24
  2. Megawidget Combobox - action sur changement de valeur
    Par Matmal11 dans le forum Tcl/Tk
    Réponses: 4
    Dernier message: 20/08/2009, 10h27
  3. submit form sur changement de valeur
    Par killerhertz dans le forum ASP
    Réponses: 4
    Dernier message: 23/07/2006, 15h05
  4. [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
  5. Réponses: 1
    Dernier message: 29/09/2005, 11h10

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