molio
-
Modifié le 11 avril 2021 à 18:46
Patrice33740
Messages postés8556Date d'inscriptiondimanche 13 juin 2010StatutMembreDernière intervention 2 mars 2023
-
8 mai 2021 à 11:24
Bonjour,
Voici mon problème, je souhaite modifier uniquement les cellules de la ligne contenant la cellule active. Tous mes essais se sont soldé spar un échec. Voici le code.
Sub Macro1()
Taux = Worksheets("Feuil2").Cells(2, 6).Value
For Each Cell In Range("E5:AH30")
If WorksheetFunction.IsNumber(Cell) = True Then
If ActiveCell.Value = "x" Then
Cell.Value = Cell.Value * Taux
Cell.Font.Bold = True
ElseIf ActiveCell.Value = "" Then
Cell.Value = Cell.Value / Taux
Cell.Font.Bold = False
End If
End If
Next Cell
End Sub
Patrice33740
Messages postés8556Date d'inscriptiondimanche 13 juin 2010StatutMembreDernière intervention 2 mars 202321 8 mai 2021 à 11:24
Bonjour,
L'utilisation des objets actifs (comme ActiveCell) est très fortement déconseillée car dangereuse lorsqu'on qu'on ne maitrise pas parfaitement toutes les implications.
On peut s'en passer dans 99.99% des cas ....
Dans une procédure (ou fonction) d'un module standard, il est préférable, soit de définir clairement la cellule, soit de lui transmettre en argument.
Plutôt qu'ActiveCell, il vaut mieux utiliser le Target renvoyé par les procédures évènementielles de la feuille concernée (par exemple l'évènement Worksheet_Change) et éventuellement l'envoyer à une procédure dans un module standard.