Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Sélection puis suppression lignes dans des tableaux

  • Initiateur de la discussion Initiateur de la discussion ivan27
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ivan27

XLDnaute Occasionnel
Bonsoir à tous,

J'ai deux tableaux.

En cliquant sur une cellule du tableau, je souhaite que la ligne concernée passe en couleur. Si suite à une erreur de sélection, je clique à nouveau sur cette ligne, elle doit revenir à sa couleur initiale.

Lorsque je suis sûr de toute mes sélections, je souhaite supprimer les lignes de couleur en cliquant sur un bouton.

Je n'ai pas trouvé sur le forum un code qui combine ces trois actions (sélection, déselection, suppression).

Merci pour votre aide.

Ivan
 

Pièces jointes

Re : Sélection puis suppression lignes dans des tableaux

Bonjour ivan27,

en nommant les deux tableaux:
Tableau1 ==> =Feuil1!$C$8:$F$23
Tableau2 ==> =Feuil1!$H$8:$K$23
et avec le code placé dans le module de la feuille 'Feuil1'.
Code:
Option Explicit
Const Nocolor = 16777215, OrangeColor = 49407

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target(1, 1), Range("Tableau1")) Is Nothing Then
   With Range(Cells(Target(1, 1).Row, Range("Tableau1").Column), _
         Cells(Target(1, 1).Row, Range("Tableau1").Column + 3)).Interior
      If .Color = OrangeColor Then .Color = Nocolor Else .Color = OrangeColor
   End With
ElseIf Not Intersect(Target(1, 1), Range("Tableau2")) Is Nothing Then
   With Range(Cells(Target(1, 1).Row, Range("Tableau2").Column), _
         Cells(Target(1, 1).Row, Range("Tableau2").Column + 3)).Interior
      If .Color = OrangeColor Then .Color = Nocolor Else .Color = OrangeColor
   End With
End If

End Sub

Sub Nocolor1()
   Range("Tableau1").Interior.Color = Nocolor
End Sub

Sub Nocolor2()
   Range("Tableau2").Interior.Color = Nocolor
End Sub
 

Pièces jointes

Re : Sélection puis suppression lignes dans des tableaux

Bonjour le Forum, Mapomme,

Merci de ta réponse rapide que je découvre au réveille...
Je n'ai sans doute pas été suffisamment précis :
1 - Je souhaite que le bouton supprime les lignes sélectionnées (pas seulement les couleurs)
2 - Les tableaux sont de longueur variable (ça je ne l'avais pas précisé!)
3 - Est-il possible que ça fonctionne en cliquant sur une cellule activée (Par exemple, si je sélectionne la ligne C16:F16 par un clic sur C16, pour la déselectionner, un clic sur la cellule C16 ne fonctionne)
Souhaitant avoir été suffisamment précis, et pas trop exigeant...
Cdlt,

Ivan
 
Re : Sélection puis suppression lignes dans des tableaux

(re)Bonjour ivan27,

3 - Est-il possible que ça fonctionne en cliquant sur une cellule activée (Par exemple, si je sélectionne la ligne C16:F16 par un clic sur C16, pour la déselectionner, un clic sur la cellule C16 ne fonctionne)
Pour gérer le clique simple, j'ai utilisé l'évènement SelectionChange qui se déclenche quand on change la selection sur la feuille 'Feuil1'. Si on clique une 2ième fois sur la cellule déjà sélectionnée, l'évènement ne se déclenche pas (puisque la cellule sélectionnée ne change pas!).
Si entre deux cliques sur C16 on sélectionne une autre cellule (ex A1) alors le couleur de la ligne est bien modifiée.
Pour éviter cela, j'ai remplacé l'évènement 'SelectionChange' par l'évènement 'BeforeDoubleClick' qui se produit quand on double-clique sur une cellule.
==> Les changements de couleurs sont donc maintenant déclenchés dans le fichier joint par un double-clique.

2 - Les tableaux sont de longueur variable (ça je ne l'avais pas précisé!)
Pour cela, on a défini Tableau1 et Tableau2 comme deux noms dynamiques (j'ai supposé qu'il n'y avait aucune donnée sous chacun des tableaux)
Tableau1 ==> =DECALER(Feuil1!$C$7;0;0;NBVAL(Feuil1!$C$7:$C$1048576);4)
Tableau2 ==> =DECALER(Feuil1!$H$7;0;0;NBVAL(Feuil1!$H$7:$H$1048576);4)

1 - Je souhaite que le bouton supprime les lignes sélectionnées (pas seulement les couleurs)
Demandé! Fait! (du moins je l'espère...)

Code:
Option Explicit
Const Nocolor = 16777215, OrangeColor = 49407

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   If Range("Tableau1").Rows.Count > 1 Then
      If Not Intersect(Target(1, 1), Range("Tableau1").Offset(1).Resize(Range("Tableau1").Rows.Count - 1)) Is Nothing Then
         Cancel = True
         With Range(Cells(Target(1, 1).Row, Range("Tableau1").Column), _
               Cells(Target(1, 1).Row, Range("Tableau1").Column + Range("Tableau1").Columns.Count - 1)).Interior
            If .Color = OrangeColor Then .Color = Nocolor Else .Color = OrangeColor
         End With
      End If
   End If
   
   If Range("Tableau2").Rows.Count > 1 Then
      If Not Intersect(Target(1, 1), Range("Tableau2").Offset(1).Resize(Range("Tableau2").Rows.Count - 1)) Is Nothing Then
         Cancel = True
         With Range(Cells(Target(1, 1).Row, Range("Tableau2").Column), _
               Cells(Target(1, 1).Row, Range("Tableau2").Column + Range("Tableau2").Columns.Count - 1)).Interior
            If .Color = OrangeColor Then .Color = Nocolor Else .Color = OrangeColor
         End With
      End If
   End If

End Sub

Sub SupprimeLignes(xTableau As String)
Dim i As Long, Debut As Long, Fin As Long, PremCol As Long, NbrCol As Long
   Debut = Range(xTableau).Row + 1
   Fin = Range(xTableau).Row + Range(xTableau).Rows.Count - 1
   PremCol = Range(xTableau).Column
   NbrCol = Range(xTableau).Columns.Count
   For i = Fin To Debut Step -1
      If Cells(i, PremCol).Interior.Color = OrangeColor Then
         Cells(i, PremCol).Resize(, NbrCol).Delete Shift:=xlUp
      End If
   Next i
End Sub

Sub Delete1()
SupprimeLignes "Tableau1"
End Sub

Sub Delete2()
SupprimeLignes "Tableau2"
End Sub
 

Pièces jointes

Dernière édition:
Re : Sélection puis suppression lignes dans des tableaux

Bonjour mapomme,

Ce second exemple correspond exactement à ce que j'attendais.
Merci beaucoup pour le travail accompli.
Cdlt,
Ivan
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
358
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…