Rayer partie de cellule en fonction d'une autre

Bonjour à tous,

Je me permets de solliciter votre aide afin de me dépatouiller pour cette partie VBA qui je n'en doute pas doit paraitre évidente pour vous mais un réel casse-tête pour moi ;)

J'ai découvert via l'enregistreur de maccro le .font.strikethrough, mais je peine à le mettre en pratique.

Je précise qu'une MFC m'est inutile car impossible de modifier qu'une partie de cellule en fonction d'une autre, d'ou mon passage par VBA.

Explication de la manip :

j'ai une case fusionnée A1:A3 avec écrit "salade/tomate/oignon" (non je ne fais pas de kebab, c'est pour simplifier le texte :p)

j'ai une case fusionnée B2:B4, résultat d'une liste déroulante de choix où il peut s'écrire "peut", "peut-être"et "ok"

But de la manip :

En fonction de ma liste déroulante de choix, si "ok" apparait en B2:B4, rayer salade et oignon en A1:A3 mais pas tomate

si "peut" ou "peut-etre" apparait en B2:B4, rayer salade et tomate en A1:A3 mais pas oignon

Pourriez-vous m'aider ? =D

Salut Duncan,

Première habitude : joindre un fichier représentatif avec toutes les explications, tenants et aboutissants possibles et utiles pour notre compréhension de ton souci.

Á part cela, ça ne devrait pas être très compliqué!


A+

Bonjour et merci pour votre réponse.

En plus d'avoir découvert le raccourci ctrl + alt + ( permettant de rayer/dérayer rapidement, une personne m'a aidée à résoudre mon problème.

Je me permets de partager la solution avec vous, celà pourra peut-être servir à quelqu'un d'autre :

A adapter selon le fichier réel.
Edit: Cells(1, 1).Characters(15, 6)
renvoie une partie de la cellule A1, 6 caractères a partir du 15° caractère .

Private Sub Worksheet_Change(ByVal Target As Range)

''il faudra peut etre adapter 1;15 et 8 aux "Characters(x,6)"

''le retour a la ligne a la fin des mots est considéré comme un caractère d'où ces chiffres

If Not Intersect(Target, Cells(2, 2)) Is Nothing And Target.Count = 1 Then

Cells(1, 1).Font.Strikethrough = False

If Cells(2, 2) = "ok" Then

Cells(1, 1).Characters(1, 6).Font.Strikethrough = True

Cells(1, 1).Characters(15, 6).Font.Strikethrough = True

Else

Cells(1, 1).Characters(8, 6).Font.Strikethrough = True

End If

End If

End Sub

image
Rechercher des sujets similaires à "rayer partie fonction"