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 :

problème macro événementielle


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2019
    Messages : 12
    Points : 7
    Points
    7
    Par défaut problème macro événementielle
    Bonjour,

    j'ai créé une macro événementielle pour renouveler ou pas de contrats. Mon problème est lorsque je mets 0 dans la case renouvellement le mot arrêt apparait mais la date se modifie c'est à dire si j'avais le 30/9/2019 elle devient le 31/8/2019. Ci dessous la formule, merci par avance pour votre aide

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Count > 1 Then Exit Sub
        If Target.Column = 19 Then
            Application.ScreenUpdating = False
            Application.EnableEvents = False
            If Target = 0 Then
                Application.Undo
                Target.Offset(, -1) = Target.Offset(, -1).Value
                Target = "Arrêt"
            Else
                Target.Offset(, -1).FormulaR1C1 = "=IF(RC[1]=""Arrêt"", RC[-1],EOMONTH(RC[-1],RC[1]-1))"
            End If
            Application.EnableEvents = True
            Application.ScreenUpdating = True
        End If
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Normal, si vous entrez une valeur différente de 0, vous oubliez d'écraser la formule. (Je ne vois pas l'utilité du "Undo"

    Après correction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Count > 1 Then Exit Sub
        If Target.Column = 19 Then
            Application.ScreenUpdating = False
            Application.EnableEvents = False
            If Target = 0 Then Target = "Arrêt"
            Target.Offset(, -1).FormulaR1C1 = "=IF(RC[1]=""Arrêt"", RC[-1],EOMONTH(RC[-1],RC[1]-1))"
            Target.Offset(, -1).Value = Target.Offset(, -1).Value
            Application.EnableEvents = True
            Application.ScreenUpdating = True
        End If
    End Sub
    Cdlt

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2019
    Messages : 12
    Points : 7
    Points
    7
    Par défaut problème macro
    Bonjour ARTURO83,

    merci pour votre réponse je viens d'essayer mais je n'y arrive pas je joins un échantillons de mon tableau si vous pouvez regarder je pense que je fais une mauvaise manipulation . j'aimerai que le 0 soit égale au mot arrêt sans modification de date et 1 pour un mois 2 pour 2 mois......
    Merci par avance pour votre aie précieuse
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    merci pour votre réponse je viens d'essayer mais je n'y arrive pas Normal, moi je me suis basé sur votre formule qui une fois décomposée, fait référence au colonnes Q, R et S, or dans votre fichier il s'agit en vérité de N, O et S, il faut donc adapter la formule. De plus la macro évènementielle "Private Sub Worksheet_Change(ByVal Target As Range)" ne doit être uniquement que dans le module "feuil1" et pas une deuxième fois dans le "module 1".

    ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Count > 1 Then Exit Sub
        If Target.Column = 19 Then
            Application.ScreenUpdating = False
            Application.EnableEvents = False
            If Target = 0 Then Target = "Arrêt"
            Target.Offset(, -4).FormulaR1C1 = "=IF(RC[4]=""arrêt"",RC[-1],EOMONTH(RC[-1],RC[4]-1))"
            Target.Offset(, -4).Value = Target.Offset(, -4).Value
            Application.EnableEvents = True
            Application.ScreenUpdating = True
        End If
    End Sub
    le fichier
    Pièce jointe 502994

    Cdlt

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2019
    Messages : 12
    Points : 7
    Points
    7
    Par défaut problème macro
    Bonjour,

    le problème persiste je suis désespéré lorsque j'inscris 0 le mot arrêt apparait mais la date se modifie.

    exemple : 0 en face du 30/9/2019 devient arrêt 1/9/209 j'aimerai faire apparaitre "arrêt" 30/9/2019

    Merci pour votre aide

    Amicalement

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Question:
    Si l'on met 0, on doit appliquer le dernier jour du mois en cours, est-ce bien cela?

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2019
    Messages : 12
    Points : 7
    Points
    7
    Par défaut problème macro
    oui

    exemple 0 en face du 30/9/2019 = arrêt 30/9/2019

  8. #8
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    essayez 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
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Count > 1 Then Exit Sub
        If Target.Column = 19 Then
            Application.ScreenUpdating = False
            Application.EnableEvents = False
            If Target = 0 Then Target = "Arrêt"
            Target.Offset(, -4).FormulaR1C1 = "=IF(RC[4]=""arrêt"",EOMONTH(TODAY(),0),EOMONTH(RC[-1],RC[4]-1))"
            Target.Offset(, -4).Value = Target.Offset(, -4).Value
            Application.EnableEvents = True
            Application.ScreenUpdating = True
        End If
    End Sub

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2019
    Messages : 12
    Points : 7
    Points
    7
    Par défaut problème macro
    Bonjour,

    la formule fonctionne mais je me suis mal exprimée il faudrait prendre en compte la fin du mois de la date du contrat et pas celle en cours

    en PJ un tableau avec une formule qui fonctionne mais impossible à reproduire
    Fichiers attachés Fichiers attachés

  10. #10
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    mais je me suis mal exprimée--> c'est pas faux!!

    donc on doit afficher le dernier jour du mois correspondant à la date de début

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Target.Offset(, -4).FormulaR1C1 = "=IF(RC[4]=""arrêt"",EOMONTH(RC[-1],0),EOMONTH(RC[-1],RC[4]-1))"

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2019
    Messages : 12
    Points : 7
    Points
    7
    Par défaut problème macro
    un très très grand merci
    vous m'avez enlevé une sacrée épine du pied

    Amicalement

Discussions similaires

  1. [XL-2003] Probléme de lancement non désiré de macro événementielle à l'initialisation du UserForm
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/01/2010, 12h30
  2. problème macro vba collage
    Par olodin dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 20/06/2007, 11h02
  3. problème macro vba collage
    Par olodin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/06/2007, 10h08
  4. Problème macro modèle à document
    Par perophron dans le forum VBA Word
    Réponses: 9
    Dernier message: 16/05/2007, 10h38
  5. [VBA-E] Problème macro excel
    Par pontus21 dans le forum Macros et VBA Excel
    Réponses: 32
    Dernier message: 19/05/2006, 18h38

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