Lien entre cases à cocher Excel 2003

Résolu
goodweath Messages postés 9 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 6 novembre 2009 - 9 févr. 2009 à 15:17
goodweath Messages postés 9 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 6 novembre 2009 - 6 nov. 2009 à 19:40
Bonjour,

Je sollicite votre aide pour 2 points concernant des cases à cocher sur Excel 2003. Ces cases me permettent de sélectionner certaines lignes que j'envoie ensuite dans un nouveau classeur à l'aide d'une macro améliorée sur VBA qui filtre sur les cellules liées aux cases à cocher (cellules contenant la valeur vrai/faux)...

Problème 1 : "mise en forme" des cases.
Lorsque je fais d'abord un filtre automatique sur l'un des champs pour dégrossir le travail, toutes les cases restent visibles et se superposent, et la case correspondant à une ligne retenue par le filtre peut se retrouver derrière une case d'une ligne "éliminée". On ne peut alors plus la sélectionner, ce qui est gênant...!
J'ai essayé les différentes options du format de contrôle des cases (déplacer ou pas avec les cellules...) mais rien n'y fait, TOUTES les cases restent affichées!
Si quelqu'un connait une combine... même par un petit code à insérer dans ma macro... ce serait cool!

Problème 2 : Lien entre les cases à cocher
Mon fichier de pièces est en fait composé de sous-ensembles :
   sous-ensemble 1
      pièce 1
      pièce 2
      ...
   sous-ensemble 2
      ...

J'aimerais pouvoir sélectionner toutes les pièces d'un sous-ensemble rien qu'en sélectionnant le sous-ensemble, puis (comme je suis exigeant) avoir la possibilité de déselectionner certaines pièces parce que je n'en veux pas! En bref, je voudrais savoir s'il est possible de faire un lien non-réciproque entre plusieurs cases à cocher... Même avec du VBA que je pourrais appliquer à mon cas.
Pour l'instant, j'arrive à faire un lien réciproque entre les cases en copiant-collant une première case pour laquelle j'ai lié une cellule auparavant. Si je sélectionne le sous-ens, je sélectionne tout. Mais si j'essaie de renlever une pièce, j'enlève tout!!

En vous remerçiant par avance pour vos conseils avisés! (s'il ya bien une solution...)
Good

4 réponses

goodweath Messages postés 9 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 6 novembre 2009
6 nov. 2009 à 19:40
Avec un peu de retard (!!), je vais "clore" cette discussion avec le système que j'ai mis en place il y a bien longtemps...
Je n'ai pas eu le temps de triturer l'histoire des TreeView. J'ai mis en place une solution plus simple qui utilise la feuille Excel classique : pour sélectionner les lignes, j'ai simplement laissé une colonne vide devant mes pièces et leurs infos. Je sélectionne les lignes que je veux extraire avec des "x", puis je lance la macro qui utilise tout simplement le filtre automatique :

Sub Extraire_IL_Interne()

    Dim Col_Selection As Long 'Numéro de la colonne IL interne qui permet
        'de sélectionner les lignes à extraire (valeur fixe)
    
    'Recherche du numéro de la colonne IL interne
    Col_Selection = Cells.Find(What:="IL interne", After:=Range("A1"), _
        LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Column
           
    'Filtre automatique non sensible à la casse
    ActiveSheet.UsedRange.AutoFilter field:=Col_Selection, Criteria1:="x" _
       ', Operator:=xlOr, Criteria2:="xx"

    ActiveSheet.UsedRange.Rows.Copy 'Copie des lignes filtrées
    
    Workbooks.Add 'Ouvre un nouveau classeur
    
    ActiveSheet.Paste 'Lignes sélectionnées collées dans le nouveau classeur
    
    
    Mise_En_Page_IL_Interne 'Renvoie à la macro de mise en page de l'IL interne
    
    
    Range("A1").Select
    
    Selection.AutoFilter 'Filtre automatique dans le nouveau classeur
    
End Sub


Ce code n'a rien de sorcier, mais je me suis dis que ça pourrait servir à des novices comme je l'étais à l'époque!

J'ai mis en place le même type de système pour sélectionner les colonnes, sauf que là on ne peut plus utiliser le filtre automatique... La macro vérifie donc la présence d'une "x" dans la ligne et supprime les colonnes qui ne sont pas sélectionnées (suppression dans le nouveau classeur of course!)

GW
3
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
9 févr. 2009 à 15:46
Bonjour,

   J'ai résolu un problème relativement similaire en utilisant un contrôle TreeView avec la propriété CheckBoxes à True.
   
   Essaie de voir si cela ne résoudrait pas aussi ton problème.

   En espérant pouvoir t'aider

Calade
0
goodweath Messages postés 9 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 6 novembre 2009
10 févr. 2009 à 09:33
Salut,

La présentation du TreeView me plait bien! Pour l'instant je ne sais pas faire de lien entre les différents niveaux, ni comment les rattacher aux infos du classeur... Et  l'aide d'Excel est muette à ce sujet! Je peux peut-être trouver des infos sur internet.
Par contre, est-il possible avec ce contrôle de sélectionner toute une ligne (non seulement la pièce mais d'autres infos qui lui correspondent) ? Et d'ensuite pouvoir extraire les lignes sélectionnées vers un autre classeur par exemple?

Merci
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
10 févr. 2009 à 11:48
Bonjour,

   En effet l'aide Excel est totalement muette sur ce contrôle comme sur beaucoup d'autres d'ailleurs. L'intellisense est lui aussi pas fiable à 100%. Pour l'aide, va voir là: http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.aspx (attention il s'agit du contrôle livré avec .NET 2008 et tout n'est pas implémenté dans Office/VBA mais c'est mieux que rien).

   En principe un niveau n'a pas de lien avec un autre, mais tu peux jouer avec l'index, tu n'est pas obligé d'y mettre un ID quelconque mais par exemple la relation avec l'autre niveau et de t'amuser avec dans ton code (seule contrainte, l'unicité de cet index dans tout le TreeView).

Calade
0
Rejoignez-nous