Affichage colonnes suivant liste déroulante

jp65

XLDnaute Junior
Bonjour le forum

Voici m'on besoin.
J'ai un classeur dans lequel les colonnes A à M sont figées, ce qui occupe déjà pas mal l'écran.
Dans les colonnes "mobiles" se trouve une série de fournisseurs que je souhaiterait visualiser juste après la dernière colonne fixe et donc M. La visualisation des colonnes portant le même nom de fournisseur se ferait après sélection dans la liste déroulante en F2.
Si possible il faudrait que les autres colonnes ne soient pas cachées et que je puisse toujours naviguer manuellement dans les colonnes avec le curseur en bas de feuille.

Je joins mon fichier (c'est le vrai fichier) pour essai.

Merci pour votre attention.

Bonne soirée
 

Pièces jointes

  • Essai 1.xlsx
    42.5 KB · Affichages: 32
  • Essai 1.xlsx
    42.5 KB · Affichages: 33
  • Essai 1.xlsx
    42.5 KB · Affichages: 34

jp65

XLDnaute Junior
Re : Affichage colonnes suivant liste déroulante

Re bonjour à tous

En complément du code précédent de mapomme, voici mes constatations.
Le code recherche le nom sélectionné par la liste déroulante et "colle" la première colonne contenant la sélection contre la colonne M. Comme en ligne 3 le nom des fournisseurs est groupé sur 10 colonnes on visualise donc d'un coup l'ensemble des colonnes du fournisseur sélectionné.
C'est exactement ce que j'avais demandé.

J'ai un peu modifié le code pour qu'il réagisse à une deuxième liste déroulante en F1.
Cette fois ci je cherche à regrouper les colonnes suivant les cellules en ligne 4 (Prix,.......,Référence).
Voici le code modifié:
Code:
Private Sub Worksheet_selectionchange(ByVal Target As Range)
Dim xrg As Range
Application.ScreenUpdating = False
If Target.Address = Range("f2").Address Then
  Set xrg = Range(Range("n3"), Cells(3, Columns.Count)).Find(Target, LookIn:=xlValues)
  If Not xrg Is Nothing Then
    Cells(3, Columns.Count).Select
    Application.Goto xrg, True
  End If
End If
If Target.Address = Range("f1").Address Then
  Set xrg = Range(Range("n4"), Cells(4, Columns.Count)).Find(Target, LookIn:=xlValues)
  If Not xrg Is Nothing Then
    Cells(4, Columns.Count).Select
    Application.Goto xrg, True
  End If
End If

End Sub

Avec ce code en l'état le choix dans la liste déroulante sélectionne la première colonne contenant la sélection choisie
et c'est tous.
Y a t'il moyen que le code regroupe toutes les colonnes contenant la sélection choisie.
Par exemple si je sélectionne "prix" je souhaiterais coller contre la colonne M toutes les colonnes qui contiennent "Prix".

Merci pour votre aide
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Affichage colonnes suivant liste déroulante

Bonjour jp65,

(...) J'ai un peu modifié le code pour qu'il réagisse à une deuxième liste déroulante en F1.
Cette fois ci je cherche à regrouper les colonnes suivant les cellules en ligne 4 (Prix,.......,Référence). (...)
Y a t'il moyen que le code regroupe toutes les colonnes contenant la sélection choisie.
Par exemple si je sélectionne "prix" je souhaiterais coller contre la colonne M toutes les colonnes qui contiennent "Prix".(...)

Changement de méthode -> seules les colonnes répondant aux critères des listes F1 et F2 sont affichées. le code est dans le module de la feuille Feuil1.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dercol&, xrg As Range, tablo, i&, j&

  Application.ScreenUpdating = False
  If Not Intersect(Target, Union(Range("f1"), Range("f2"))) Is Nothing Then
    Range(Cells(1, "n"), Cells(1, Columns.Count)).EntireColumn.Hidden = False
    Application.Goto Range("n3"), True
    dercol = Cells(3, Columns.Count).End(xlToLeft).Column
    tablo = Range(Cells(3, "n"), Cells(4, dercol)).Value

    If Range("F2") <> "*" Then
      For j = 1 To UBound(tablo, 2)
        If tablo(1, j) <> Range("F2") Then
          Cells(1, Range("m1").Column + j).EntireColumn.Hidden = True
        End If
      Next j
    End If

    If Range("F1") <> "*" Then
      For j = 1 To UBound(tablo, 2)
        If tablo(2, j) <> Range("F1") Then
          Cells(1, Range("m1").Column + j).EntireColumn.Hidden = True
        End If
      Next j
    End If
    Cells(Rows.Count, Columns.Count).Select
  End If
End Sub

edit : v2a (un peu plus rapide)
 

Pièces jointes

  • jp65-Essai-v2a.xlsm
    56.7 KB · Affichages: 28
Dernière édition:

jp65

XLDnaute Junior
Re : [Résolu] Affichage colonnes suivant liste déroulante

Ouaouuu

C'a marche super bien.
J'ai juste remplacé les "*" par des "Tout" pour ré afficher l'ensemble des colonnes.

Merci mapomme pour ce super boulot.

Bon weekend

Allez la France ce soir contre l'Argentine
 

Discussions similaires

Réponses
43
Affichages
2 K

Statistiques des forums

Discussions
312 391
Messages
2 087 983
Membres
103 690
dernier inscrit
LeDuc