Deux formules avec une même variable

Beaucoup mieux merci Ca calcul correctement.

Y a t'il un moyen qu'à chaque modification d'une case de la feuille "données" la macro se relance?

onsoir,

pour une déclenchement dès qu'il y a un changement dans la feuille données

mettre cette macro dans le code de la feuille données

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
Call test
Application.EnableEvents = True

End Sub

Cela n'a pas l'air de fonctionner correctement (désolé je ne connais pas grand chose en vba)

La macro s'activera à chaque changement de données. Si tu as mille données qui changent sur ta feuille, la macro s'activera mille fois ! ce mode de fonctionnement n'est peut-être pas idéal.

Idéal je ne sais pas, j'ai une erreur de compilation dans cette macro ("Call test" se grise)

Bonjour,

il faut également garder le code de la macro test !

j'ai intégré le tout dans une seule macro. à mettre dans le code de la feuille données.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
With Worksheets("calcul")
lim = .Range("L12")
s = 1 / 10
Max = 0
For i = 0 To lim Step s
.Range("N85") = i
If .Range("N96") > Max Then Max = .Range("N96"): maxi = i
Next i
.Range("N85") = maxi

End With
Application.EnableEvents = True
end sub

Et bien ça fonctionne merci!

Et si je dois intégrer plusieurs calculs du même genre, je dois ne mettre aucun code dans "calculs" et ajouter dans "données" ce code par exemple. C'est cela?

    Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    With Worksheets("calcul")
    lim = .Range("L78")
    s = 1 / 10
    Max = 0
    For i = 0 To lim Step s
    .Range("L79") = i
    If .Range("E79") > Max Then Max = .Range("E79"): maxi = i
    Next i
    .Range("L79") = maxi
    End With
    With Worksheets("calcul")
    lim = .Range("L84")
    s = 1 / 10
    Max = 0
    For i = 0 To lim Step s
    .Range("L85") = i
    If .Range("E85") > Max Then Max = .Range("E85"): maxi = i
    Next i
    .Range("L85") = maxi
    End With
    With Worksheets("calcul")
    lim = .Range("L93")
    s = 1 / 10
    Max = 0
    For i = 0 To lim Step s
    .Range("L94") = i
    If .Range("E94") > Max Then Max = .Range("E94"): maxi = i
    Next i
    .Range("L94") = maxi
    End With
    With Worksheets("calcul")
    lim = .Range("L99")
    s = 1 / 10
    Max = 0
    For i = 0 To lim Step s
    .Range("L100") = i
    If .Range("E100") > Max Then Max = .Range("E100"): maxi = i
    Next i
    .Range("L100") = maxi
    End With
    Application.EnableEvents = True
    End Sub

bonsoir,

c'est une manière de faire et je pense que tu l'as déjà testée.

Effectivement

Dernière question : est-il possible de faire en sorte que les commandes se lancent ou non en fonction d'une case?

En gros, que cette formule :

    With Worksheets("calcul")
    lim = .Range("L78")
    s = 1 / 10
    Max = 0
    For i = 0 To lim Step s
    .Range("L79") = i
    If .Range("E79") > Max Then Max = .Range("E79"): maxi = i
    Next i
    .Range("L79") = maxi
    End With

se lance si "DONNEES!BV11" = 200 et ainsi de suite...

bonjour,

sans me rappeler du contexte ...

    
if worksheets("Données").range("BV11")=200 then
With Worksheets("calcul")
    lim = .Range("L78")
    s = 1 / 10
    Max = 0
    For i = 0 To lim Step s
    .Range("L79") = i
    If .Range("E79") > Max Then Max = .Range("E79"): maxi = i
    Next i
    .Range("L79") = maxi
    End With
end if

C'est bien ça! Encore Merci!

if worksheets("Données").range("BV11")=200 then
With Worksheets("calcul")
    lim = .Range("L78")
    s = 1 / 10
    Max = 0
    For i = 0 To lim Step s
    .Range("L79") = i
    If .Range("E79") > Max Then Max = .Range("E79"): maxi = i
    Next i
    .Range("L79") = maxi
    End With
end if

Comment puis-je écrire lim = .Range("L78-L71") ?

Bonjour,

qu'essaies-tu de faire ? que voudrais-tu faire avec cette instruction ?

Je souhaiterai que la limite de la variable ne soit pas L78 mais L78-L71

bonjour,

Roden a écrit :

Je souhaiterai que la limite de la variable ne soit pas L78 mais L78-L71

la somme, le minimun, le maximum, la moyenne, la médiane, ... de ces 8 valeurs ?

si c'est L78 moins "-", L71 alors écris l'instruction comme suit

lim=.range("L78") - . range("L71")

Désolé pour le manque d'informations, mais vous êtes tombé juste! Merci!

Roden a écrit :

Désolé pour le manque d'informations, mais vous êtes tombé juste! Merci!

pas à être désolé, c'était clair. c'est moi qui vois des choses compliquées là où elles sont simples.

Rechercher des sujets similaires à "deux formules meme variable"