Re : Comment modifier automatiquement une macro en la recopiant
Re,
Merci pour les fleurs mais maitre c'est exagéré
Pour les explications, pas de probleme :
Dans la Feuille Consultation, on créé la macro evenementielle :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column > 11 And Target.Column < 14 Then Test
End Sub
Qui s'execute à chaque changement de selection.
On teste alors si on est dans les colonnes L & M (colonne >11 ou <14)
Si c'est le cas on lance la procedure Test
Dans le module1 on a :
Sub Test()
With ActiveCell
'On travaille sur la cellule active
.Font.Bold = True
'On met en Gras
If .Column = 12 Then
'Si on est en colonne L
.Value = "X"
'on met X dans la cellule
.Offset(0, 1).ClearContents
'on efface la cellule de droite (Offset(0,1) => o ligne, 1 colonne)
Cells(.Row, 1).Resize(1, 10).Font.Strikethrough = False
'On prend la cellule dont la ligne est celle de la cellule active et la colonne est 1 (Cells(.Row, 1)) puis on redimensionne 1 ligne 10 colonnes (Resize(1, 10)) puis on barre le texte
.Offset(0, 3).Select
'On se place dans la cellule de la colonne O
End If
If .Column = 13 Then
'Si on est en colonne M
.Value = "X"
.Offset(0, -1).ClearContents
Cells(.Row, 1).Resize(1, 10).Font.Strikethrough = True
.Offset(0, 2).Select
End If
End With
End Sub
Et serait-il encore trop osé d'espérer la solution avec fonction et macro incorporée ?
Je n'ai pas compris ce que tu voulais dire ...
Une version allégée (en relisant):
Sub Test()
With ActiveCell
.Font.Bold = True
.Value = "X"
If .Column = 12 Then
.Offset(0, 1).ClearContents
Cells(.Row, 1).Resize(1, 10).Font.Strikethrough = False
.Offset(0, 3).Select
Else
.Offset(0, -1).ClearContents
Cells(.Row, 1).Resize(1, 10).Font.Strikethrough = True
.Offset(0, 2).Select
End If
End With
End Sub
Voir fichier joint