Bonjour,
Dans le cadre d'un projet je développe un fichier excel comprenant du code VBA.
Souhaitant éviter au maximum les formules & mises en forme conditionnelles, je les remplace donc par du code (ce qui est par ailleurs formateur). Je rencontre cependant un problème avec l'utilisation de l'évènement worksheet_change. Pourriez-vous svp m'éclaircir ?
Je joins un fichier simplifié à mon message.
En bref, si je modifie une cellule dans une des 3 plages de données définies, alors une formule vba de vérification doit se lancer pour déterminer la valeur en colonne "L" dans la même ligne où a eu lieu la modification.
Si je modifie une cellule dans la colonne "BE", alors un second contrôle est effectué pour effectuer une mise en forme en colonnes "BE" et "BF" avec éventuel msgbox en fonction du résultat.
Actuellement, j'utilise dans la feuille 1 en question l'évènement Private Sub WorkSheet_Change(ByVal Target As Range) avec Application.EnableEvents = False en début de code :
Pour ma vérification 1 :
If Not Intersect(Target, Range("O2:AD2000, AG2:AL2000, AN2:BC2000")) Is Nothing Then
Pour ma vérification 2 :
If Not Intersect(Target, Range("BE2:BE2000")) Is Nothing And Target.Count > 1 Then Exit Sub
Je lance ensuite les actions via If Cells(Target.Row, "L") ... Then .
Les difficultés que je rencontre sont les suivantes :
- Les actions pour chacune des 2 vérifications se lancent quelque soit l'emplacement de la cellule modifiée dans la ligne (ex: vérification 1 si modification hors range Intersect, msgbox même si modification hors colonne "BE")
- Après l'exécution d'une seconde macro, cette macro worksheet_change ne se lance plus.
La seconde macro en question ne fait que copier une ligne de la feuille 2 à la 1e ligne vide en feuille 1 (selon contenu en colonne F, avec Dim Lg%) sur clic dans un bouton. Elle est insérée dans un module.
P.e. que le fonctionnement avec Target.Row implique d'office une intersection avec le range défini, ce qui lance automatiquement l'exécution du code ?
Une alternative existe-t-elle?
Merci d'avance!
Et joyeuse année 2013 à toute la communauté excel-downloads!
Dans le cadre d'un projet je développe un fichier excel comprenant du code VBA.
Souhaitant éviter au maximum les formules & mises en forme conditionnelles, je les remplace donc par du code (ce qui est par ailleurs formateur). Je rencontre cependant un problème avec l'utilisation de l'évènement worksheet_change. Pourriez-vous svp m'éclaircir ?
Je joins un fichier simplifié à mon message.
En bref, si je modifie une cellule dans une des 3 plages de données définies, alors une formule vba de vérification doit se lancer pour déterminer la valeur en colonne "L" dans la même ligne où a eu lieu la modification.
Si je modifie une cellule dans la colonne "BE", alors un second contrôle est effectué pour effectuer une mise en forme en colonnes "BE" et "BF" avec éventuel msgbox en fonction du résultat.
Actuellement, j'utilise dans la feuille 1 en question l'évènement Private Sub WorkSheet_Change(ByVal Target As Range) avec Application.EnableEvents = False en début de code :
Pour ma vérification 1 :
If Not Intersect(Target, Range("O2:AD2000, AG2:AL2000, AN2:BC2000")) Is Nothing Then
Pour ma vérification 2 :
If Not Intersect(Target, Range("BE2:BE2000")) Is Nothing And Target.Count > 1 Then Exit Sub
Je lance ensuite les actions via If Cells(Target.Row, "L") ... Then .
Les difficultés que je rencontre sont les suivantes :
- Les actions pour chacune des 2 vérifications se lancent quelque soit l'emplacement de la cellule modifiée dans la ligne (ex: vérification 1 si modification hors range Intersect, msgbox même si modification hors colonne "BE")
- Après l'exécution d'une seconde macro, cette macro worksheet_change ne se lance plus.
La seconde macro en question ne fait que copier une ligne de la feuille 2 à la 1e ligne vide en feuille 1 (selon contenu en colonne F, avec Dim Lg%) sur clic dans un bouton. Elle est insérée dans un module.
P.e. que le fonctionnement avec Target.Row implique d'office une intersection avec le range défini, ce qui lance automatiquement l'exécution du code ?
Une alternative existe-t-elle?
Merci d'avance!
Et joyeuse année 2013 à toute la communauté excel-downloads!