Lancer une macro sous EXCEL lorsqu'une condit

Bof -  
LePierre Messages postés 249 Statut Membre -
Bonjour,

Je cherche à lancer une macro lorsqu'une condition est remplie: exemple si la valeur d'une cellule=la valeur d'une autre cellule.

Merci d'avance de votre aide
A voir également:

3 réponses

lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour,
Si G13=G14 appel la fonction NomFonctionMacro si la fonction renvoi un paramètre l'inscrit dans la cellule mais pas obligatoire.

=SI(G13=G14;NomFonctionMacro();0)

Edit: mais c'est la solution à mettre dans une cellule.
Autre solution si pas dans cellule..

Private Sub Worksheet_Calculate()
    If Range("G13") = Range("G14") then
        call NomFonctionMacro()
    end if
End Sub


A+
0
LePierre Messages postés 249 Statut Membre 338
 
bonjour

tu pourrais essayer ceci dans le code d'une feuille (Feuil1 par exemple) :
Public InfoTest As Integer

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    x = Cells(6, 2).Value
    y = Cells(6, 5).Value
    If x <> y Then
        InfoTest = 0
        Exit Sub
    End If
    If InfoTest = 1 Then Exit Sub
    InfoTest = 1
    Call test
End Sub


Sub test()
    MsgBox ("Test lancement d'une procédure")
End Sub

si les contenus de B6 et E6 dans Feuil1 sont égaux --> alors lancement de la procédure "test".
La variable InfoTest est indispensable pour éviter le lancement de la procédure "test" à chaque click lorsque les contenus sont égaux.
à plus
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour LePierre
l'ennui avec la sub SelectionChange c'est que la fonction est appellée à chaque fois que l'ont change de cellule, l'avantage avec calculate c'est qu'elle n'est appellée que si une cellule est modifiée.
A+
0
LePierre Messages postés 249 Statut Membre 338 > lermite222 Messages postés 9042 Statut Contributeur
 
tu as raison mais seulement dans le cas où quelque chose est à calculer faisant référence aux 2 cellules concernées
Si ces cellules à tester n'on pas de liens de calculs alors ça ne fonctionne pas.
0
lermite222 Messages postés 9042 Statut Contributeur 1 191 > LePierre Messages postés 249 Statut Membre
 
Désolé de te contredire, mais dés que le contenu d'une cellule (quel qu'elle soit) est modifiée la fonction calculate est appellée. (Pour autant que la propriété Calculate soit mise en auto).
Aucune "Liaison" requise, je ne vois d'ailleur pas ce que tu veux dire par liaison, toutes les cellule d'une feuille sont "liées".
A+
0
LePierre Messages postés 249 Statut Membre 338 > lermite222 Messages postés 9042 Statut Contributeur
 
bonjour Lermite
voici mon fichier de test pour t'expliquer le problème :
https://www.cjoint.com/?eiqceSiHfd
tu pourras constater dans la feuil2 que mettre des valeurs identiques dans les cellules jaunes ne provoque pas le lancement de la macro alors que sur la Feuil2(2) ça fonctionne car les cellules jaunes sont "liées" par un calcul.
sur Feuil1 ça fonctionne toujours
à plus
0
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
Salut,
pour coller ce code lancer visual basic editor, double clic sur la feuille qui doit réagir à ce code et coller ce code.

dans cet exemple, dès que B10 = A41, en A2 est collé la fonction maintenant().
reste à coller tes codes dans l'espace vide, modifier B10 et A41 et effacer Range("A2").Select ActiveCell.FormulaR1C1 = "=NOW()"

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B10") = Range("A41") Then

Range("A2").Select
ActiveCell.FormulaR1C1 = "=NOW()"
Exit Sub
End If
End Sub

A+
_____________________________________________________________
Vous cherchiez de l’aide. Les membres du forum, bénévolement étaient à vos côtés.
Ayez la gentillesse de nous dire si votre problème est résolu. Afin de classer la
Demande.
0