Chekbox Et Filtre Automatique

vinpp

XLDnaute Nouveau
Bonjour,

merci pour votre aide

J'ai un problème concernant les chekbox.
Pour être claire, je veux créer des chekbox sur une 10 lignes au niveau d'excel (cela ne pose pas de problème).
Ensuite l'utilisateur pourra cocher les chekbox et réaliser des filtres sur les lignes (Filtra automatique dans excel).

Le problème est le suivant : J'ai un déphasage des chekbox si l'utiliasteur réalise plusieurs filtres. Par exemple la chekbox 1 situer à la base sur la première ligne (avec la lettre A en colonne C) se trouve après le filtre sur la 5 lignes (Avec la lettre P). Nous avans donc perdu le lien entre le chekbox et la ligne à laquelle elle était liée.


Code:
Dim Chekbox As OLEObject
Dim i As Integer
Dim Target As Range

For i = 10 To 14
  
    Set Target = ActiveSheet.Range("B" & i)
        Set Chekbox = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Left:=Target.Left, Top:=Target.Top, Width:=Target.Width, Height:=Target.Height)
        With Chekbox
        .LinkedCell = Target.Offset(0, 1).Address(0, 0)
        .Object.Value = False
       End With
Next
 

pierrejean

XLDnaute Barbatruc
Re : Chekbox Et Filtre Automatique

bonjour vinpp

une idée simpliste:

choisir comme cellule liée celle qui est sous la checkbox soit:

Code:
........
With Chekbox
      .LinkedCell = [COLOR=blue]Target.Address(0, 0)
[/COLOR]      .Object.Value = False
End With
.......
 

pierrejean

XLDnaute Barbatruc
Re : Chekbox Et Filtre Automatique

Re

Comme les filtres masquent des lignes entieres ,il faut que les lignes ou figurent les linkedcells soient en dehors de la zone filtrée
Sinon effectivement il y a decalage et je pense que l'on n'y peut rien
 

pierrejean

XLDnaute Barbatruc
Re : Chekbox Et Filtre Automatique

Re

une façon de mettre les linkedcells hors de portée (presque)

Code:
Sub test()
Dim Chekbox As OLEObject
Dim i As Integer
Dim Target As Range
For i = 10 To 14
    Set Target = ActiveSheet.Range("B" & i)
        Set Chekbox = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Left:=Target.Left, Top:=Target.Top, Width:=Target.Width, Height:=Target.Height)
        With Chekbox
        .LinkedCell = ActiveSheet.Cells(i - 9, 1).Address(0, 0)
        .Object.Value = False
       End With
Next
End Sub

Comme ceci elles sont sur les 5 premieres lignes
 

pierrejean

XLDnaute Barbatruc
Re : Chekbox Et Filtre Automatique

Re

Mieux encore

Code:
Sub test()
Dim Chekbox As OLEObject
Dim i As Integer
Dim Target As Range
For i = 10 To 14
    Set Target = ActiveSheet.Range("B" & i)
        Set Chekbox = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Left:=Target.Left, Top:=Target.Top, Width:=Target.Width, Height:=Target.Height)
        With Chekbox
        .LinkedCell = ActiveSheet.Cells(1, i - 9).Address(0, 0)
        .Object.Value = False
       End With
Next
End Sub

la c'est la ligne 1 seulement qui ne doit pas figurer dans la region a filtrer
 

Discussions similaires

Réponses
3
Affichages
588

Statistiques des forums

Discussions
312 282
Messages
2 086 756
Membres
103 388
dernier inscrit
Juju7762