Les Snippets

Connexion

Pseudo CheckBox

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 14/10/2008 16:50:44 et initié par bigfish_le vrai [Liste]
Date de mise à jour : 09/06/2009 15:45:39
Vue : 4119
Catégorie(s) : Trucs & Astuces
Langages dispo pour ce code :
- VBA



Langage : VBA
Date ajout : 14/10/2008
Posté par bigfish_le vrai [Liste]
DateMAJ : 09/06/2009
'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 = 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


Snippets en rapport avec : Excel, Vba, Checkbox, Cellules



Codes sources en rapport avec : Excel, Vba, Checkbox, Cellules

{Visual Basic, VB6, VB.NET, VB 2005} EXCEL IMPRESSION PAR LOT
Bonjour, Grâce à ce module, vous pourrez lancer des impressions d'un répertoire complet contenant ...

{Visual Basic, VB6, VB.NET, VB 2005} EXCEL SUPPRESSION PAR LOT D'UNE FEUILLE
Bonjour, Grâce à ce code vous pourrez supprimer la 2eme feuille de tous les fichiers Excel d'un ...

{Visual Basic, VB6, VB.NET, VB 2005} CALCUL TOPO SUR EXCEL AVEC FONCTION VBA
Le but de TOPOVB est de faire une grande quantité de calcul topo sur EXCEL. Calculer des points tou...

{Visual Basic, VB6, VB.NET, VB 2005} PROTECTION CONTRE LA PERTE OU L'INACTIVATION DES MACROS VBA EXCEL
Excel 2007 et + sont arrivés avec de nouveaux formats de fichiers et des problèmes qui n'existaient...

{Visual Basic, VB6, VB.NET, VB 2005} VBA EXCEL : LIRE UN FICHIER TEXTE INDÉPENDAMMENT DE SON ENCODAGE ANSI OU UTF-8 (VIA ADO.FILESTREAM)
Ajout de nouvelles méthodes et fonctions à EXCEL afin de lire les fichiers texte sans se préoccuper ...

{Visual Basic, VB6, VB.NET, VB 2005} NOUVELLE FONCTION EXCEL "OCCURENCE" POUR DÉTECTER LES DOUBLONS QUAND ON NE PEUT PAS TRIER LA FEUILLE
Pour répondre à la demande du membre SNOFNIE qui ne peut ni trier sa feuille ni en supprimer les do...

{Visual Basic, VB6, VB.NET, VB 2005} TOURS DE HANOI (JEU) SOUS EXCEL (VBA)
Le jeu de Tours de Hanoï sous excel. Utiliser les flêches pour soulever ou poser les disques. ...

{Visual Basic, VB6, VB.NET, VB 2005} METTRE EN FORME DU TEXTE WORD DEPUIS EXCEL EN VBA
Bonjour à tous, Voilà je butte depuis 5 jours sur une mise en forme de texte de Word depuis Excel v...

{Visual Basic, VB6, VB.NET, VB 2005} [VBA VB6] FORCER L'OUVERTURE D'UN COMBOBOX
Ce classeur démontre la possibilité d'opérer une sélection sur un ComboBox, initialiser le suivant e...

{Visual Basic, VB6, VB.NET, VB 2005} [VBA] EXCEL - DÉMO - TIRER 1, 2 OU 3 DÉS + APIS
Ce classeur n'a probablement pas beaucoup d'intérêt dans sa finalité. Il offre la possibilité de ti...