Résolu case à cocher et VBA

un internaute

XLDnaute Impliqué
Bonjour le forum,
Je voudrais barré du texte, lignes A4 à A19 successivement (Ligne 4, 5, 6, jusqu'à 19 ect...)
Colonnes de A à D. En colonne E par exemple on met les cases à cocher avec macro.
On coche ça barre le texte et inversement.
Mais alors quelle macro?
Qu'en pensait vous?
Mais alors moi je ne connais pas du tout la case à cocher et la macro qui va avec.
Merci d'avance pour vos retours.
Bien cordialement.
 
Dernière édition:

vgendron

XLDnaute Barbatruc
bonjour
avec ceci......
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 5 Then
        With Target.Offset(0, -4).Resize(1, 4).Font
            .Strikethrough = Not (.Strikethrough)
            Target = .Strikethrough
        End With
    End If
End Sub
 

un internaute

XLDnaute Impliqué
bonjour
avec ceci......
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 5 Then
        With Target.Offset(0, -4).Resize(1, 4).Font
            .Strikethrough = Not (.Strikethrough)
            Target = .Strikethrough
        End With
    End If
End Sub
Bonjour vgendron,
Peux-tu STP me dire comment on fait pour faire la case à cocher.
On mettra la macro dans la feuille ou un module?
Merci à toi
 

Jauster

XLDnaute Occasionnel
Hello un internaute,

Pour insérer une checkbox dans Excel

  • Activer le mode Développeur : Fichier > Options > Customisation du ruban > Cocher la case Développeur
    1.PNG
  • Insérer une checkbox : Onglet Développeur > Insérer > Choisir le petit carré blanc coché
    2.png


Mais si j'ai bien compris comment marchait sa macro, pas besoin de case à cocher.
@vgendron Comment marche (ou quelle est la différence avec Range) de Target ?
 

vgendron

XLDnaute Barbatruc
Supprime la macro. elle ne sert à rien. c'était pour un essai

pour éviter d'avoir à selectionner une autre cellule avant de recliquer sur la cellule (en cas d'erreur)
utilise ce code.

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Column = 5 And Target.Row >= 4 And Target.Row <= 19 Then
        With Target.Offset(0, -4).Resize(1, 4).Font
            .Strikethrough = Not (.Strikethrough)
            If .Strikethrough Then
                Target = "x"
            Else
                Target = "o"
            End If
        End With
    End If
    Target.Offset(0, 1).Select
    Application.EnableEvents = True
End Sub
 

vgendron

XLDnaute Barbatruc
autre écriture avec IIF pour remplacer if then else
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Column = 5 And Target.Row >= 4 And Target.Row <= 19 Then
        With Target.Offset(0, -4).Resize(1, 4).Font
            .Strikethrough = Not (.Strikethrough)
            Target = IIf(.Strikethrough, "x", "o")
        End With
    End If
    Target.Offset(0, 1).Select
    Application.EnableEvents = True
End Sub
 

Discussions similaires

Réponses
5
Affichages
118
Réponses
2
Affichages
553

Statistiques des forums

Discussions
312 111
Messages
2 085 407
Membres
102 884
dernier inscrit
Macarena