Remplacement mise en forme
Bonjour à tous,
Je suis novice sur Excel et je rencontre un problème que je ne comprends pas.
J'ai réalisé une macro assez simple pour réaliser de la mise en forme sur une sélection particulière de ma feuille.
Sub Somme_Strang()
Dim StockLigne As Integer
Sheets("Bemessung Entwässerung").Activate
StockLigne = ActiveCell.Row
Set Plage = Columns("H:M").Rows(StockLigne)
Plage.Select
Selection.ClearContents
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.149998474074526
.PatternTintAndShade = 0
End With
End SubCette macro fonctionne très bien lorsque je l'exécute à l'aide d'un bouton mais je souhaite qu'elle démarre lors d'un changement de valeur dans une colonne. J'ai fait une seconde macro qui permet de détecter ma modification pour exécuter ma mise en forme.
Private Sub worksheet_change(ByVal Target As Range)
Set Target = Range("G20")
If Target.Value = "Somme Strang" Then
Call Somme_Strang
End If
End SubLorsque j'exécute à nouveau la macro en intégrant cette partie (même avec le bouton), j'ai une erreur qui ferme Excel.. Pour comprendre d'où vient le problème, j'ai repris le code pas à pas pour savoir d'où vient le problème. Lorsque j'enlève la ligne ci-dessous, je ne rencontre plus le problème mais cependant, j'ai besoin d'effectuer une suppression des lignes adjacentes.
Selection.ClearContentsMerci pour votre aide,
Bonjour,
Une proposition à tester:
Sub Somme_Strang()
Application.EnableEvents = False
Dim StockLigne As Integer
Sheets("Bemessung Entwässerung").Activate
StockLigne = ActiveCell.Row
Set Plage = Columns("H:M").Rows(StockLigne)
Plage.Select
Selection.ClearContents
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.149998474074526
.PatternTintAndShade = 0
End With
Application.EnableEvents = True
End SubDésactiver les Events permets de ne pas redéclencher la macro "Worksheet_change" lors du clearcontents.
A+
Bonjour,
Merci beaucoup pour ton aide, cela fonctionne comme je le souhaite.
PS : désolé de ne pas avoir joint de fichier mais je ne peux malheureusement pas le partager pour des raisons de confidentialité..
Oops, j'ai parlé un peu vite ..
J'ai un petit soucis pour arrêter l'exécution de la macro..
Selon le code, lorsqu'il y'a une modification dans la colonne G de la ligne active, alors cela exécute une de mes deux macro de mise en forme.
Sauf que je me suis rendu compte que cela continue également quand je modifie d'autres colonnes. J'ai fait un fichier vierge pour illustrer mon propos. Lorsqu'on modifie les colonne alors que le terme est dans la conne "G", la macro s'exécute.
Re,
Je pense que vous faites une mauvais utilisation de la variable Target dans votre programme.
De base elle représente déja la cellule qui vient d'être modifiée donc pas besoin de la "reconfigurer" avec activecell.Row, en effet quand je valide avec entré activecell deviens la cellule dessous celle qui vient d'être modifiée.
Peut être à tester comme cela ? :
Private Sub worksheet_change(ByVal Target As Range)
Set Target = Range("G" & Target.Row)
If Target.Value = "Summenstrang" Then
Call Summenstrang
End If
If Target.Value = "Einzelstrang" Then
Call Einzelstrang
End If
End SubRe,
J'ai changé la ligne avec Target.row, j'ai toujours le même soucis. Je pense que la condition : If Target.Value = "Summenstrang" Then : est toujours rempli donc il y a de nouveau l'appel de la macro.