Effectuer un programme VB automatiquement

Résolu/Fermé
lixil Messages postés 33 Date d'inscription dimanche 4 novembre 2012 Statut Membre Dernière intervention 1 mars 2014 - 5 mars 2013 à 22:43
 lixil - 7 mars 2013 à 21:23
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.

A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
6 mars 2013 à 08:02
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
 

0
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.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 6/03/2013 à 10:33
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
0
Ok merci encore Michel je vais étudier tout ça.
0
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
0