Tableau Excel, colonne catégories, revenir en arrière

Bonjour à tous !

J'ai un petit soucis qui n'est pas un soucis mais qui me faciliterait la vie.

Je vous explique, j'ai crée un tableau excel type :

Clients / Activité

Tartampion / Bâtiment

Crevette / Restauration

Tarte / Coiffure

Il faut imaginer ça avec plusieurs activites mais plusieurs clients correspondant à une activité.

Et donc quand je veux mon client dont je ne sais pas le nom, je clique sur Activité -> Restauration, ce qui me donne mon client Crevette, mais du coup pour retourner à mon grand tableau avec tout mes clients marqué, il faut que je recoche la case Activité -> Sélectionner tout. Cependant mon problème est là, je voudrais éviter cette étape, et voir avec vous si il est possible, de directement retourner sur mon tableau en entier sans passé cette étape.

Je vous remercie beaucoup

Bonjour et bienvenu(e),

1 - Merci de joindre un fichier représentatif de tes données.

2 - Sinon, tu mets tes données sous forme de tableau. Tu insères un segment 'Activité'.

Tu pourras alors filtrer sur ce champ.

Si ce n'est pas clair, on revient au point 1.

Cdlt.

Bonjour Floriane, Jean-Éric, bonjour le forum,

En pièce jointe une proposition VBA.

• Clique avec le bouton droit sur n'importe quelle cellule non vide.

• La boite de dialogue Recherche s'ouvre.

• Dans le champ Rechercher tape le texte recherché.

• Au fur et à mesure que tu ajoutes des caractères la LisTbox1 t'affiche les éléments qui contiennent le texte édité.

• Double-clique dans l'élément qui correspond à ta recherche

• La ListBox1 se ferme

• La première cellule de la ligne de l'élément recherchée est sélectionnée...

Le code se trouve dans le composant Feuil1(Feui1) pour lancer l'UserForm au clic du bouton droit :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 'au clic du bouton droit dans l'onglet
Dim PL As Range 'déclare la variable PL (PLage)

Set PL = Range("A1").CurrentRegion 'définit la plage PL
'si le bouton droit a lieu ailleurs que dans la lplage PL, sort de la procédure
If Application.Intersect(PL, Target) Is Nothing Then Exit Sub
Cancel = True 'évite le menu contextuel lié au clic du bouton droit
UserForm1.Show 'affiche l'UserForm1
End Sub

Et dans l'UserForm1 :

Private O As Worksheet 'déclare la variable O (Onglet)
Private TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Private NL As Integer 'déclare la variable NL (Nombre de Lignes)
Private NC As Byte 'déclare la variable NC (Nombre de Colonnes)

Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
NL = UBound(TV, 1) 'définit le nombre de lignes NL du tableau des valeurs
NC = UBound(TV, 2) 'définit le nombre de colonnes NC du tableau des valeurs
Me.ListBox1.ColumnCount = NC + 1 'définit le nombre de colonnes de la ListBox1 (une de plus que le nombre de colonne de TV)
Me.ListBox1.ColumnWidths = "0" 'masque la première colonne de la ListBox1 (la colonne 0)
End Sub

Private Sub TextBox1_Change() 'au changement dans la TextBox1
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim L As Byte 'déclare la variable L (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)

Me.ListBox1.Clear 'efface le contenu de la ListBox1
If Me.TextBox1.Value = "" Then Exit Sub 'si la TextBox1 est effacée, sort de la procédure
K = 1 'initialise la variable K
For I = 2 To NL 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    For J = 1 To NC 'boucle 2 : sur toutes les colonnes J du tableau des valeurs TV
        'condition : si la donnée ligne I colonne J de TV (convertie en texte) contient le texte éditée dans la TextBox1
        If InStr(1, CStr(TV(I, J)), Me.TextBox1.Value, vbTextCompare) > 0 Then
            ReDim Preserve TL(1 To NC + 1, 1 To K) 'redimensionne le tableau des lignes TL (NC + 1 lignes, K colonnes)
            TL(1, K) = I 'récupère dans la ligne 1 de TL le numéro de ligne I (sera masqué dans la ListBox1)
            For L = 1 To NC 'boucle 3 : sur toutes les colonnes L du tableau des valeurs TV
                TL(L + 1, K) = TV(I, L) 'récupère dans la ligne L+1 de TL la donnée en colonne L de TV (= Transposition)
            Next L 'prochaine colonne de la boucle 3
            K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL)
            Exit For 'sort de la boucle 2
        End If 'fin de la condition
    Next J 'prochaine colonne de la boucle 2
Next I 'prochaine ligne de la boucle 1
If K > 1 Then Me.ListBox1.Column = TL 'si K est supérieure à 1, alimente la ListBox1 avec le tableau TL
End Sub

Private Sub ListBox1_Click() 'au double-clic dans la Listbox1
Dim LI As Integer 'déclare la variable LI (LI)

LI = Me.ListBox1.Column(0, Me.ListBox1.ListIndex) 'récupère le numéro de ligne stocké dans la colonne 0 (masquée) de la ListBox1
O.Activate 'active l'onglet O (au cas où)
O.Cells(LI, "A").Select 'sélectionne la cellule en ligne LI colonne A
Unload Me 'vide et ferme l'userForm
End Sub

Tu peux ajouter des lignes ou des colonnes, le code s'adapte...

Le fichier :

66recherche.xlsm (21.23 Ko)

Bonjour,

Merci pour vos réponses,

Voici en vidéo ce que je veux faire : https://youtu.be/8zXCy5fjoZM

C'est juste éviter l'étape de re-sélectionner tout mes caté du tableau

Re,

Oui je crois que nous avions compris et je ne sais pas pourquoi une vidéo plutôt que le fichier lui-même ?!...

Quoi qu'il en soit, ce que je t'ai proposé, n'utilise pas de filtre. Ton tableau reste entier et la recherche est simplifiée. L'as-tu, au moins, testé ?

Oui je l'ai testé, et oui la recherche est simplifié mais ça ne me permet pas de retourner sur mon tableau en entier, seulement voir les clients qui ont une certaine caté

Re,

je ne comprends pas : ça ne me permet pas de retourner sur mon tableau en entier, puisque le tableau reste entier...

Et ça ne permet que pas de voir les clients d'une certaine catégorie mais de lister tous les clients/catégories commençants par une lettre ou contenant un certain mot, etc.

Rechercher des sujets similaires à "tableau colonne categories revenir arriere"