Selection de données et affichage

→ Comme ça, je dirais que sur la 1ere feuille on aurait la sélection à faire et un bouton "Valider" qui nous amenerais sur la feuille 2 avec le resultat

→ Est-il possible de faire apparaitre 2 colonnes (selection de aa et dd) ?

9test-03.zip (30.78 Ko)
tibo.v1 a écrit :

→ Comme ça, je dirais que sur la 1ere feuille on aurait la sélection à faire et un bouton "Valider" qui nous amenerais sur la feuille 2 avec le resultat

Ça doit pouvoir se faire. Envoie-moi juste le fichier (ou un bout) sur lequel faire la macro. Lors de ta sélection, tu veux colorer la cellule ou laisser le petit V vert que j'avais fait ?
tibo.v1 a écrit :

→ Est-il possible de faire apparaitre 2 colonnes (selection de aa et dd) ?

Oui.

ma préférence serait d'avoir les cases colorées et les 2 colonnes ou plus, je penses qu'il ne faudrait pas être bloquer par le nombre de choix de colonne

merci encore

13test-v3.zip (91.61 Ko)

Ce n'est pas le fichier contenant le résultat que je veux mais le fichier contenant les données car j'adapte la macro à la structure réelle des données.

Quand tu dis 2 colonnes ou plus c'est-à-dire des colonnes en plus de AAA, BBB, CCC... et aa, bb, cc ? Si oui, quel est l'impact des choix suivants sur le tableau ?

sur le fichier que j'ai mis en lien, les donées sont sur la feuil 1 et 2 :

→ sur la feuil1, la partie sélection (B1:D11)

→ sur la feuil2 le resultat de la selection

pour les 2 colonnes ou plus, c'est pouvoir sélectionner dans la partie D2:D11 plusieurs choix

ce qui ferai qu'on selectionnerai AAA (là 1 seul choix possible) et après bb + dd puis valider pour passer a la feuil2

ou on aurai le resultat que je t'ai mis sur la feuil1

Bonjour tibo,

Pourquoi ne pas avoir dis tout ça depuis le début

Ça change pas mal de truc.

Un code à mettre dans le code de la feuille contenant la sélection. Il faudra peut-être l'adapter un peu (au niveau des noms de feuille peut-être... si ta 2è feuille ne s'appelle pas Feuil2).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim plage1 As Range, plage2 As Range, c As Range, champ As Range, cel As Range
    Dim rouge As Long, bleu&, vert&
    Dim FeuilDonnee As Worksheet

    Set plage1 = Range([b2], [b2].End(xlDown))    'première plage de données
    Set plage2 = Range([d2], [d2].End(xlDown))    'deuxième plage de données
    rouge = 5066944
    bleu = 14857357
    vert = 5880731

    With Application
        If .Intersect(Target, Range(plage1, plage2)) Is Nothing _
           And .Intersect(Target, [A11]) Is Nothing And .Intersect(Target, [G5]) Is Nothing Then Exit Sub
    End With

    If Not Application.Intersect(Target, plage1) Is Nothing And Target.Count = 1 Then Target.Interior.Color = rouge
    If Not Application.Intersect(Target, plage2) Is Nothing And Target.Count = 1 Then Target.Interior.Color = rouge

    Set FeuilDonnee = Sheets("Feuil2")
    With FeuilDonnee
        If Target.Address = "$A$11" Then    'si clic sur cellule A11 on affiche tout
            plage1.Interior.Color = bleu
            plage2.Interior.Color = vert
            .Cells.EntireColumn.Hidden = False: .Cells.EntireRow.Hidden = False
            Exit Sub
        End If

        If Not Application.Intersect(Target, [G5]) Is Nothing Then    'si clic sur G5 (valider)
            'traitement de la plage 1
            Set champ = Nothing
            .Cells.EntireRow.Hidden = False
            For Each cel In plage1
                If cel.Interior.Color = rouge Then
                    Set c = .Range("a4:a" & .Range("a" & Rows.Count).End(xlUp).Row).Find(cel, lookat:=xlWhole)
                    Set c = .Range(.Range(c.Address), c.End(xlDown).Offset(-1))
                    If champ Is Nothing Then
                        Set champ = c
                    Else
                        Set champ = Union(champ, c)
                    End If
                End If
            Next cel
            If Not champ Is Nothing Then
                .Rows("4:164").Hidden = True
                champ.EntireRow.Hidden = False
            End If

            'traitement de la plage 2
            Set champ = Nothing
            .Cells.EntireColumn.Hidden = False
            For Each cel In plage2
                If cel.Interior.Color = rouge Then
                    Set c = .Range("e1:x2").Find(cel, lookat:=xlWhole)
                    If champ Is Nothing Then
                        Set champ = c
                    Else
                        Set champ = Union(champ, c)
                    End If
                End If
            Next cel
            If Not champ Is Nothing Then
                .Range("F:Y").EntireColumn.Hidden = True
                champ.EntireColumn.Hidden = False
            End If
            .Select
        End If
    End With
End Sub
19test-v3-1.zip (90.11 Ko)
vba-new a écrit :

Pourquoi ne pas avoir dis tout ça depuis le début

Parce que c'est une chose que je n'avais pas pensé au départ

c'est en utilisant ce que tu m'as fait que je me suis aperçu des demandes que j'aurai pu avoir après

donc autant les anticiper

j'etais partie sur un truc simple et vu ou on en est il aurai fallut pousser la reflexion plus loin

merci pour ton travail et pour le temps passé

Tu as répondu a mes demandes avec talent

Ah ok, tu m'as fait peur

Bonjour,

je reviens sur le sujet

il y a t'-il un moyen de proteger la feuilles contre toutes modification sans que cela n'empeche la macro de fonctionner ?

Rechercher des sujets similaires à "selection donnees affichage"