cocher quand doubleclique sur cellule ...

dn35

XLDnaute Occasionnel
Bonjour le forum,

Petite question que j'imagine simplissime pour une bonne majorité d'entre vous mais qui me laisse perplexe :
ça fait plusieurs fichiers que je visite et dans lesquels on peut appliquer une action à une cellule en doublecliquant dessus (incrémenter couleur ou texte/chiffre etc...)
Si on prend par exemple le cas où la cellule serait cochée, quelqu'un peut-il m'expliquer la marche à suivre ?

Pour dormir moins bête ce soir ...
J'en profite pour tous vous remercier grace à votre aide et aux exemples des autres j'avance à pas de géant moi !!!

Bonne soirée
DN35
 

tototiti2008

XLDnaute Barbatruc
Re : cocher quand doubleclique sur cellule ...

Bonjour dn35,

Cette action est réalisée au travers de l'évènement de la feuille Worksheet_BeforeDoubleClick.
Quand tu dit "cochée", tu sous-entend quoi ? une cellule ne peut pas être cochée, mais on peut y faire apparaître une case cochée (police Wingdings par exemple) ou lui mettre des bordures en diagonales....
 

dn35

XLDnaute Occasionnel
Re : cocher quand doubleclique sur cellule ...

Salut tototiti2008,

Oui, j'aurais du être plus claire : quand je dit cochée je veux effectivement dire par l'aspect en utilisant la police Wingdings ou autre.

HTML:
Cette action est réalisée au travers de l'évènement de la feuille Worksheet_BeforeDoubleClick.

Je pensais effectivement au VBA mais là pour moi c'est une toute autre histoire : débutante et tout et tout, j'avance pas à pas sur ce chemin ... :eek:
Peux tu développer ?
Merci d'avance
 

Pierrot93

XLDnaute Barbatruc
Re : cocher quand doubleclique sur cellule ...

Bonsoir dn, toto

regarde le petit exemple ci-dessous, les commentaires en vert après avoir collé le code dans le module de la feuille sur laquelle tu pourras tester. Pour coller le code => click droit sur l'onglet => visualiser le code => tu colles dans la fenêtre qui s'ouvre

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'test si la cellule double cliquée est A1, si pas le cas sortie de la procédure
If Target.Address <> "$A$1" Then Exit Sub
'si la cellule est vide, on valorise un x, sinon rien
Target.Value = IIf(Target.Value = "", "x", "")
'annul l'effet du double click, à savoir renter dans la cellule
Cancel = True
End Sub

bonne soirée
@+
 

dn35

XLDnaute Occasionnel
Re : cocher quand doubleclique sur cellule ...

Bonjour Pierrot,

Merci de ta réponse et surtout d'avoir pris le temps de m'expliquer les lignes de code du coup je me sens moins bête !;)
Je dois maintenant réussir à l'appliquer à une colonne ou à une plage :
remplacer ("a1") par ("a1:a65000") ne fonctionne pas (forcément cela aurait été trop simple :p) faut -il que j'utilise une autre propriété ?

Merci
@+
DN
 

Pierrot93

XLDnaute Barbatruc
Re : cocher quand doubleclique sur cellule ...

Re

pour la colonne A :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'test si c'est bien sur la colonne A
If Not Intersect(Target, Range("A:A")) Is Nothing Then
'si la cellule est vide, on valorise un x, sinon on efface
Target.Value = IIf(Target.Value = "", "x", "")
'annul l'effet du double click, à savoir renter dans la cellule
Cancel = True
End If
End Sub

@+
 

Bigfish

XLDnaute Occasionnel
Re : cocher quand doubleclique sur cellule ...

Salut,

je vous donne ici un bout de code que j'ai deja poste il y a quelque temps sur le forum et qui permet de transformer les cellules en pseudo checkbox.

Code:
'Cree par Bigish (Philippe  E)
'Le 08/06/2009
'ce code est a mettre dans le code d'une feuille
Option Explicit
Const Marque As String = "\/"
Public Maplage As Range
Private Sub Worksheet_SelectionChange(ByVal  Target As Range)
   'exemple d'utilisation:  les cellules de la colonne "B" se transforment en Checkbox
   ' pour permettre la selection ou deselection de ligne entiere,  par simple clic(dans la colonne B)
   Call PseudoCheckBox(Target,"B")
End Sub
Sub PseudoCheckBox(ByVal Target As Range, Optional ByVal Colonne As String = "A")
    Dim MaCellule As Range, TempPlage As Range
    
    'on verifi que la  variable target pointe sur la colonne specifiée et sur une cellule  unique
    On Local Error Resume Next
    If Target.Column = Columns(Colonne).Column And Target.Cells.Count = 1 Then
    If Not Err = 0 Then Exit Sub
        'on desactive la mise a jour de  l'affichage
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        'si la variable target  pointe sur une cellule qui contient deja la marque
        If Target = Marque Then
            'on efface le  contenu de la cellule
            Target.ClearContents
            'on  vide la variable MaPlage
            Set Maplage = Nothing
            'on recuppere  toute les cellules qui contiennent du text sur la colonne  spécifiée
            Set TempPlage = Columns(Colonne).SpecialCells(xlCellTypeConstants,  2)
            'on vas verifier si ce text est une  marque
            For Each MaCellule In TempPlage
                If MaCellule.Value = Marque  Then 'si c'est une  marque
                    'on reconstruit alors  MaPlage
                    If Maplage Is Nothing Then 'premier passage
                         'entirerow sert a selectionner toute la  ligne de la cellule pointee par  MaCellule
                        Set Maplage = MaCellule.EntireRow
                    Else 'les autres  passages
                        Set Maplage = Union(Maplage,  MaCellule.EntireRow)
                    End If
                End If
            Next
            On Error Resume Next
            Maplage.Select
            
        'si la variable target pointe sur une cellule  vide
        ElseIf Target.Value = "" Then
            With Target
                .Value = Marque 'on lui ajoute une  marque
                'on met en forme la  cellule
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
            End With
            
            'on met en forme la marque
            With Target.Characters(Start:=1, Length:=1).Font
                .Name = "Arial"
                .Size = 7
            End With
            With Target.Characters(Start:=2, Length:=1).Font
                .Name = "Arial"
                .FontStyle = "Italic"
                .Size = 12
            End With
            
            On Error Resume Next
            Maplage.Select
            Set Maplage = Union(Selection,  Rows(Target.Row))
            Maplage.Select
        End If
        'on reactive la mise  a jour de l'affichage
        Application.ScreenUpdating = True
        Application.EnableEvents = True
    'si on clic en dehors de la  colonne specifiée elle sera vidée de ses marques (Option)
    ElseIf Not Target.Column = Columns(Colonne).Column And Target.Cells.Count = 1 Then
        'Columns(Colonne).ClearContents
        'Set Maplage = Nothing
        'Target.Select
    End If
End Sub

A+
 

Pierrot93

XLDnaute Barbatruc
Re : cocher quand doubleclique sur cellule ...

Bonjour,

pour des pseudo "checkbox", j'utiliserais simplement la police "wingdings", et modifierais la ligne de code comme suit :

Code:
Target.Value = IIf(Target.Value = "þ", "o", "þ")

bonne journée
@+
 

dn35

XLDnaute Occasionnel
Re : cocher quand doubleclique sur cellule ...

Bonjour Bigfsh, pierrot,

Bigfish : to code est énorme ; je vais mettre du temps à le décortiquer ; merci pour les lignes d'explications, elles vont me permettr d'avancer.
Néanmoins, dans un classeur où se trouverait déjà du code, la méhode de pierrot me semble plus "légère".

Merci n"anmoins à vous deux pour le temps passé sur ce post et au plaisir de vous (re)lire
Bonne journée
@+
 

Discussions similaires

Réponses
5
Affichages
668

Statistiques des forums

Discussions
312 559
Messages
2 089 610
Membres
104 230
dernier inscrit
Mviard_13