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 : 1935
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} DÉMINEUR VBA EXCEL
Un petit démineur en VBA Excel avec lageur, hauteur et nombre de mine variable ...

{Visual Basic, VB6, VB.NET, VB 2005} MISTER MIND SOUS VBA DANS EXCEL AVEC ENREGISTREMENT DES SCORES
Un Mister mind comprenmant plusieurs niveaux de difficulés ainsi qu'une fonction de jeux en temps li...

{Visual Basic, VB6, VB.NET, VB 2005} RENOMMER SÉRIE D'IMAGE DIRECTEMENT AVEC VBA EXCEL (CLASSEMENT SELON DATE ET HEURE DE LA PRISE DE VUE)
Les applications permettant de faire ce travail sont nombreuses. Mais je n'ai jamais trouvé de sourc...

{Visual Basic, VB6, VB.NET, VB 2005} PILOTER ACROBAT READER DEPUIS EXCEL ET VBA
Exemple d'utilisation du composant OCX AcroPDF (AcrobatReader). Permet d'ouvrir un document pdf dan...

{Visual Basic, VB6, VB.NET, VB 2005} VBA EXCEL FONCTION POUR FORMATER DES ECRITURES BANCAIRES
Je copiais mes écritures bancaires (LCL) à la main et je les formatais pour coïncider avec ma feuil...

{Visual Basic, VB6, VB.NET, VB 2005} LISTER FICHIERS D'UN DOSSIER
ce p'tit code permet de lister les fichiers d'un dossier choisi en plaçant leur noms, leur type et l...

{Visual Basic, VB6, VB.NET, VB 2005} EXCEL <> AUTOCAD LT
suite à des demandes régulières sur les liaisons DDE entre Autocad et excel, je vous joins cette ap...

{Visual Basic, VB6, VB.NET, VB 2005} SUBSTITUTION AU CONTROLE REFEDIT D'EXCEL
le Contrôle Refedit est utilisé dans excel pour sélectionner une plage de cellule(s) Cette substitu...

{Visual Basic, VB6, VB.NET, VB 2005} TRAIT SUR USF VBA
Pour repondre GRATUITEMENT à ma question posee sur le forum il y a 2 jours, voici la réponse. Contr...

{Visual Basic, VB6, VB.NET, VB 2005} GESTION D'USER/CLIENT SOUS EXCEL
Voici un pti fichier XLS, quipeut rendre bien des services, dés lors que vous devez gérer des client...