checkbox automatique

T

toubib

Guest
Bonjour à tous,

je génère, grâce à une macro, une liste automatique et variable de données. chaque ligne correpond à l'ensemble des informations d'un produit.
ce que j'aimerais c'est que des checkbox soient créées automatiquement en face de chaque ligne puis en cas de cochage, que cela copie la ligne relative à la checkbox vers un autre emplacement?
Pensez vous que ce soit possible?
 
T

toubib

Guest
en fait je n'ai pas de listbox du tout, c'est des checkbox qui devront être créées automatiquement dans la feuille. par ailleurs, il ne faut pas qu'il y ait de listbox justement car ca nuirait à la facilité d'utilisation pour le coup :s

pensez vous que ce soit possible?
 

soft

XLDnaute Occasionnel
Bonjour Toubib, Pascal, le forum,

Selon moi c'est possible de créer les checkBox par macro sur chaque ligne et de leur affecter une autre macro.

Le problème va résider dans cette 2e macro qui ne peut pas avoir d'argument lors de sa définition.

Donc il faudrait que cette macro qui recopie puisse savoir quelle ligne recopier soit par la cellule active (avant le click sur le checkbox), soit par une demande à l'utilisateur (Inpubox), soit encore en recopiant toutes les lignes cochées.

Si tu as un fichier, je te fais un petit exemple sur l'une ou l'autre de ces possibilités.

@+

Message édité par: soft, à: 03/11/2005 12:12
 
T

toubib

Guest
voici un ptit fichier test pour illustrer ce que je veux dire avec un essai de code pour le formaliser :) [file name=test_20051103143104.zip size=14727]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/test_20051103143104.zip[/file]
 

Pièces jointes

  • test_20051103143104.zip
    14.4 KB · Affichages: 33

soft

XLDnaute Occasionnel
Rebonjour le fil,

Toubib, tu peux essayer avec ces 2 macros :

Création des checkBox

Code:
Sub AjoutChkBox()
    Dim I As Long
    Dim T As Long, L As Integer, W As Integer, H As Integer
    T = ActiveSheet.Rows('1:1').Height - 1
    L = 20
    W = 10
    H = 10
    
    For I = 2 To Range('B2').End(xlDown).Row
        ActiveSheet.CheckBoxes.Add(L, T, W, H).Select

        With Selection
            .Characters.Text = ''
            .OnAction = 'Recopie'
            .Value = xlOff
            .LinkedCell = '$A$' & I
            .Display3DShading = True
        End With

   Range('A' & I).Font.ColorIndex = 2
   T = T + ActiveSheet.Rows(I & ':' & I).Height
    
    Next I
End Sub

Procédure de recopie (j'ai mais Feuil2 comme destination

Code:
Sub recopie()
    Dim I As Long, Y As Long
    Application.DisplayAlerts = False
    For I = 2 To Range('B2').End(xlDown).Row
        If Range('A' & I) = True Then
            Y= Y + 1
            Range('B' & I & ':I' & I).Copy Sheets('Feuil2').Range('A' & Y & ':D' & Y)
        End If
    Next I
    Application.DisplayAlerts= True
End Sub

Edition :
J'ai enlever les commentaires, ça donne des caractères bizzares ..

Message édité par: soft, à: 03/11/2005 15:34

Message édité par: soft, à: 03/11/2005 15:36
 
T

toubib

Guest
j'ai encore un ptit soucis, c'est que tout marche nickel sauf que les checkbox se décale mm par mm au fur et à mesure de leur création c'est à dire qu'en arrrivant à la ligne 40 par exemple, qui est ma dernière ligne, le décalement fait que la checkbox de la ligne 39 se retrouve sur la ligne 40 et donc que celle de la ligne 40 arrive sur la ligne 41.
j'ai essayé pleins de choses mais je n'arrive pas à régulariser le problème :s
comment peut on faire, avez vous des idées?
 

soft

XLDnaute Occasionnel
Bonsoir Toubib, Pascal, le forum,

Essaye de changer dans la première macro AjoutChkBox() :

la 3e ligne :
Code:
T = ActiveSheet.Rows('1:1').Height - 1
par
Code:
T = ActiveSheet.Rows('2:2').Top - 1

et l'avant dernière :
Code:
T = T + ActiveSheet.Rows(I & ':' & I).Height
par
Code:
T = ActiveSheet.Rows(I + 1 & ':' & I + 1).Top - 1
 

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado