Fixer la valeur d'une cellule via une macro

Bonjour,

J'aimerai avoir une macro qui modifie la valeur de certaines cellules en fonction de la valeur d'une autre cellule (liée à des cases d'option).

J'utilise actuellement ce code

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
temps_max = 2 / 1440
If [a1] = 1 Then
    For i = 3 To 16
        Range("m" & i).Formula = Range("m2").Formula
    Next
    [m3] = temps_max
    [m13] = temps_max
    [m14] = temps_max
    [m18] = temps_max
    ElseIf [a1] = 2 And [l1] <> "" Then
        For i = 3 To 18
            Range("m" & i).Formula = Range("m2").Formula
        Next
        [m3] = temps_max
        [m11] = temps_max
        [m12] = temps_max
        [m16] = temps_max
End If
Application.EnableEvents = True

End Sub

Cette macro ne fait malheureusement pas exactement ce que je voudrais.... je devrais même dire qu'elle fait exactement l'inverse

J'aimerais :

1° que la macro s'exécute lorsque la valeur de la cellule de contrôle des cases d'option change.

2° qu'elle ne s'exécute pas lorsque la valeur d'une autre cellule change.

Que dois-je change à mon code?

D'avance merci

Bonjour,

La meilleure façon de nous faire comprendre est de nous fournir le fichier qui va avec la macro pour tester. Explique en 2 mots ce que tu attends comme résultat concrètement au lieu de dire "c'est le contraire que je veux obtenir". Tout ceci permet de gagner du temps précieux.

J'aimerai que la macro s'exécute uniquement lorsque la valeur de la cellule A1 change (lorsque je choisis une autre case d'option).

Avec le code que j'ai fourni, elle s'exécute lorsque la valeur de n'importe quelle cellule (sauf A1) change.

Je me suis peut-être mal exprimé en disant qu'elle faisait l'inverse de ce que je recherche car le résultat final est correct mais j'aimerai juste ne pas perdre 1-2 secondes le temps que la macro s'exécute chaque fois que j'encode une donnée (J'ai déjà enlevé la boucle pour gagner un peu de temps vu qu'il n'y a que 4 formules à modifier pour réinitialiser les formules lorsqu'on change de case d'option).

Re,

Alors essaye ça :

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    temps_max = 2 / 1440
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        If Target = 1 Then
            For i = 3 To 16
                Range("m" & i).Formula = Range("m2").Formula
            Next
            [m3] = temps_max
            [m13] = temps_max
            [m14] = temps_max
            [m18] = temps_max
            ElseIf Target = 2 And [l1] <> "" Then
                For i = 3 To 18
                    Range("m" & i).Formula = Range("m2").Formula
                Next
                [m3] = temps_max
                [m11] = temps_max
                [m12] = temps_max
                [m16] = temps_max
            End If
    End If
    Application.EnableEvents = True
End Sub

j'ai essayé ton code mais cela ne marche pas lorsque je sélectionne une case d'option (par contre si je change directement la valeur dans la cellule A1, cela s'exécute correctement)

Bonjour,

Merci de nous présenter le fichier qui va avec la macro pour se rendre compte comment les objets sont disposés.

en fait, apres quelques recherches, il semblerait que les changements de valeurs de la cellule liée aux cases d'option ne soient pas pris en compte dans Worksheet_Change(ByVal Target As Range)

il m'a donc suffit de mettre la macro dans un module et de l'affecter aux cases d'options

Re,

Tu peux aussi lié ce code à cet évènement :

Private Sub CheckBox1_Click()

End Sub

au lieu de le lié à l'évènement :

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Bien entendu, il faut l'adapter. Comme ça, le code fera ce qu'on lui dit au moment du clique du "Case à cocher".

nickel

merci

Rechercher des sujets similaires à "fixer valeur via macro"