Effectuer un programme VB automatiquement [Résolu/Fermé]

Signaler
Messages postés
33
Date d'inscription
dimanche 4 novembre 2012
Statut
Membre
Dernière intervention
1 mars 2014
-
 lixil -
Bonjour,
Je voudrais savoir comment effectuer un programme automatiquement.
J'ai ecrit:

Private Sub Worksheet_Calculate()

If Sheets("feuil1").Range("A1") < 20 Then
Sheets("feuil1").Range("B1") = 10

else if Sheets("feuil1").Range("A1") >= 20 then
Sheets("feuil1").Range("B1") = 20

End If

End Sub

Quand je reviens sur la feuille de calcul, la cellule B1 est égale à 20 ou 10 en fonction de ce qu'il y avait dans A1.
Mais quand je modifie A1 la cellule B1 reste pareil et je ne veut pas qu'elle reste pareil.
Si je veut que B1 change il faut que je relance le programme et c'est pas bon.

Merci de m'eclairer.

4 réponses

Messages postés
16209
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
17 septembre 2020
3 031
Bonjour

Essaies ce code (si A1 est saisi manuellement: ..."quand je modifie A1 "... )
à placer dans le module "feuil1" de l'éditeur VBA

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
     If Target < 20 Then
          Range("B1") = 10
     Else
          Range("B1") = 20
     End If
End If
End Sub
 

Bonjour,

C'est parfait! merci Michel_m
et vous pourriez m'expliquer un peu le programme SVP?

Private Sub Worksheet_Change(ByVal Target As Range)
A quoi sert ByVal Target As Range ?

If Not Intersect(Target, Range("A1")) Is Nothing Then
La c'est du chinois...

je peux comprendre, avec la suite, que la variable est Target mais c'est tout.
Messages postés
16209
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
17 septembre 2020
3 031
1/ByVal target as range

"Par valeur de la cible comme cellule"
La cible est la cellule où l'utilisateur change manuellement une donnée
Byval autorise le changement de valeur (contrairement à ByRef)
Le changement de valeur (Worksheet_change) déclenche la macro

2/ If Not Intersect(Target, Range("A1")) Is Nothing Then
La c'est du chinois... chuis bien d'accord :oD

"Si l'intersection entre la cible (target) et la cellule A1 n'est pas rien alors"
Délimite la zone d'action de la macro événementielle: si tu écris ailleurs que dans A1 la macro ne se déclenche pas....


Des tutos sur les événements dans excel
https://silkyroad.developpez.com/VBA/EvenementsFeuille/
https://silkyroad.developpez.com/VBA/EvenementsClasseur/

bonne découverte
Ok merci encore Michel je vais étudier tout ça.
J'ai regardé les liens et je ne trouve pas a modifier le programme pour avoir plusieurs variable.
A1 < 5 alors C1 = 12
B1 > 5 alors D1 = 21