Lancer une macro sous EXCEL lorsqu'une condit
Fermé
Bof
-
8 avril 2008 à 13:48
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 - 8 avril 2008 à 16:10
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 - 8 avril 2008 à 16:10
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
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:
- Lancer une macro sous EXCEL lorsqu'une condit
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Déplacer une colonne excel - Guide
- Liste déroulante excel - Guide
- Calculer une moyenne sur excel - Guide
- Trier une colonne excel - Guide
3 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
8 avril 2008 à 14:21
8 avril 2008 à 14:21
Bonjour,
Si G13=G14 appel la fonction NomFonctionMacro si la fonction renvoi un paramètre l'inscrit dans la cellule mais pas obligatoire.
Edit: mais c'est la solution à mettre dans une cellule.
Autre solution si pas dans cellule..
A+
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+
LePierre
Messages postés
249
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
2 août 2012
338
8 avril 2008 à 14:28
8 avril 2008 à 14:28
bonjour
tu pourrais essayer ceci dans le code d'une feuille (Feuil1 par exemple) :
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
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
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
8 avril 2008 à 14:37
8 avril 2008 à 14:37
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+
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+
LePierre
Messages postés
249
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
2 août 2012
338
>
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
8 avril 2008 à 14:53
8 avril 2008 à 14:53
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.
Si ces cellules à tester n'on pas de liens de calculs alors ça ne fonctionne pas.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
>
LePierre
Messages postés
249
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
2 août 2012
8 avril 2008 à 15:07
8 avril 2008 à 15:07
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+
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+
LePierre
Messages postés
249
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
2 août 2012
338
>
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
8 avril 2008 à 16:10
8 avril 2008 à 16:10
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
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
Mike-31
Messages postés
18384
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
9 avril 2025
5 127
8 avril 2008 à 14:48
8 avril 2008 à 14:48
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.
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.