Condition à partir du choix d'un bouton de commande

D'accord je vais essayer de créer ce code pour voir si ce que je souhaite est réalisable, je vous renverrai ce fichier si j'ai des questions

Je vous remercie

Ok. C'est réalisable. J'ai le code prêt si vous voulez. Avec votre fichier modèle je peux vous le placer

Excusez moi je n'avais pas vu votre message du coup je ne sais pas si le code est possible avec des formes donc j'aimerais bien voir ce que vous avez fait en effet.

Sinon je me disais que si les formes sont trop embêtantes on peut alors la remplacer par l'en-tête du tableau sélectionné:

Ce que je veux dire c'est que lorsque toutes les lignes d'un tableau sont oranges alors son en-tête change de couleur

Ce qui veut dire que lorsqu'une de ses lignes rechange de couleur alors l'en-tête retourne à sa couleur d'origine

4test-2.xlsm (24.05 Ko)

Sinon je me disais que si les formes sont trop embêtantes on peut alors la remplacer par l'en-tête du tableau sélectionné:

Ce n'est pas embêtant de mettre des formes mais il faut faire en sorte qu'elles se déplace vers le bas si votre liste s'allonge. On peut le faire via un click droite sur l'objet puis aller dans les propriétés et cocher la case "deplacer sans dimensionner...."

Les deux solutions peuvent être choisies. Si on choisit de mettre la couleur sur la cellule de tête, elle changera en fonction bien entendu.
Dites moi ce que vous préférez dans votre usage quotidien

Oui je pense qu'il est mieux de continuer à partir des en-têtes ce serait plus facile à adapter, sur ce fichier j'ai mis un apriori de ce que j'imagine du code dans le feuille

3test-2.xlsm (25.49 Ko)

Bonjour

Oui je pense qu'il est mieux de continuer à partir des en-têtes ce serait plus facile à adapter, sur ce fichier j'ai mis un apriori de ce que j'imagine du code dans le feuille

Ah ok. Je vous avais préparé l'autre solution hier.
En fonction de votre message, voici le code à utiliser.
- Faites un click droite sur l'onglet concerné par les tableaux
- Choisir l'option "Visualiser le code"
- Dans la fenêtre coller le code ci-après

Const Couleur As Long = 6724095 'Couleur Rose
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Num As Byte, i As Byte, Nblig As Byte, j As Byte

Num = Right(Target.ListObject.HeaderRowRange, 1)
Nblig = ListObjects("Tableau" & Num).DataBodyRange.Rows.Count

If Not Intersect(Target, ListObjects("Tableau" & Num).DataBodyRange) Is Nothing Then
    Cancel = False
    With Target.Interior
        If .Pattern = xlNone Then
            .Color = Couleur
        Else: .Pattern = xlNone
        End If
    End With

    With ListObjects("Tableau" & Num)
        For i = 1 To Nblig
            If .DataBodyRange.Item(i).Interior.Color = Couleur Then j = j + 1
        Next i
        If j = Nblig Then
            .HeaderRowRange.Interior.Color = 52224 'Couleur verte
        Else: .HeaderRowRange.Interior.Pattern = xlNone
        End If
    End With
End If
Cancel = True
End Sub

- Il vous suffit de faire un double click dans les cellules. Une fois toutes les cellules coloriées (en rose), la cellule de tête se mettra en vert

Juste un rappel : tous vos tableaux structurés doivent comporter le "TABLEAU" + l'indice 1, 2, 3,... et la cellule de titre doit avoir le numero 1,2,3... (TAB1, TAB2,...) Votre fichier posté est correct sur ces points.

S'il vous faut la solution avec forme, je la garde sous le coude

Faites quelques tests
Cordialement

Super après pas mal de bidouillage sur mon autre fichier j'ai enfin réussi grâce à ton code.

Je vous remercie beaucoup c'est très gentil de m'avoir tant aidé pour apprendre à concevoir avec ce langage.

Le problème est donc résolu

Edit : Puisqu'il est déjà créé est-il possible de voir le code que vous avez fait avec les formes ? je trouve ça très instructif

Puisqu'il est déjà créé est-il possible de voir le code que vous avez fait avec les formes ? je trouve ça très instructif

OK faites ceci :

1. Dans le module 1, mettez cette instruction juste au dessus de SUB Suppr(). Attention c'est très important que ce soit en première ligne

Public Const Couleur As Long = 6724095

2. Toujours dans le module 1, mettez le code ci-dessous

Sub Color() 'colorier Forme
Dim i As Byte, j As Byte, k As Byte

With ActiveSheet
    For i = 1 To .ListObjects.Count
        With .ListObjects(i)
            For j = 0 To .DataBodyRange.Count
                If .ListColumns(1).DataBodyRange.Item(j).Interior.Color = Couleur Then k = k + 1
            Next j
        End With
        With .DrawingObjects(i + 1).ShapeRange.Fill.ForeColor
            If k = j - 1 Then
                .RGB = RGB(146, 208, 80)
            Else: .RGB = RGB(0, 141, 245)
            End If
            k = 0
        End With
    Next i
End With
End Sub

NB : J'ai supposé que votre bouton "supprimer" est toujours sur la feuille

3. Dans la feuille, mettez le code ci-dessous

- Faites un click droite sur l'onglet concerné par les tableaux
- Choisir l'option "Visualiser le code"
- Dans la fenêtre coller le code ci-après

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Num As Byte

Num = Right(Target.ListObject.HeaderRowRange, 1)
If Not Intersect(Target, ActiveSheet.ListObjects("Tableau" & Num).DataBodyRange) Is Nothing Then
    Cancel = False
    With Target.Interior
        If .Pattern = xlNone Then
            .Color = Couleur
        Else: .Pattern = xlNone
        End If
    End With
End If
Cancel = True
Call Color 'colorier les formes
End Sub

Comme je vois que vous avez eu quelques souci sur le post précédent, je vous poste le fichier

Cordialement

Super merci beaucoup c'est une très bonne façon de mettre en lien les tableaux avec des formes

Rechercher des sujets similaires à "condition partir choix bouton commande"