Choix colonnes à afficher depuis un tableau

  • 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
Bonjour à tous,

Après maintes recherches qui sont restées vaines, je me permets de solliciter votre aide.

Dans le classeur ci-joint, une liste de données est présente feuil1

Une procédure me permet de faire une recherche multicritères et de présenter le résultat de cette recherche feuil2 avec des lignes complètes.

Je souhaiterai afficher uniquement certaines colonnes (pas toujours les mêmes et pas nécessairement dans l’ordre de la liste de données) comme cela est précisé dans mon exemple feuil3.

Merci d’avance pour votre aide.

Bien cordialement,

Ivan
 

Pièces jointes

Re : Choix colonnes à afficher depuis un tableau

Bonjour Ivan, bonjour le forum,

Maîtrisant très mal les tableaux fait de plages, je te propose une solution qui utilise le filtre automatique avec le code ci-dessous :

Code:
Sub Macro1()
Dim O1 As Object 'déclare la variable O1 (Onglet 1)
Dim O2 As Object 'déclare la variable O2 (Onglet 2)
Dim PL As Range 'déclare la variable PL (PLage)
Dim PLV As Range 'déclare la variable PLV (PLage Visible)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set O1 = Sheets("Feuil1") 'définit l'onglet O1
Set O2 = Sheets("Feuil3") 'définit l'onglet O2
Set PL = O1.Range("A1").CurrentRegion 'définit la palge PL
O1.Range("A1").AutoFilter Field:=2, Criteria1:="Camion" 'filtre a colonne 2 (=B) de l'onglet O1 avec "Camion" comme critère
O1.Range("A1").AutoFilter Field:=4, Criteria1:="<50" 'filtre a colonne 4 (=D) de l'onglet O1 avec "<50" comme critère
O1.Range("A1").AutoFilter Field:=5, Criteria1:=1 'filtre a colonne 5 (=E) de l'onglet O1 avec "1" comme critère
O1.Range("A1").AutoFilter Field:=12, Criteria1:="Essai" 'filtre a colonne 12 (=L) de l'onglet O1 avec "Essai" comme critère
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante
Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit la plage PLV des cellules visibles (non filtrées) de la plage PL (génère une erreur si aucune ligne visible)
If Err <> 0 Then 'condition : si une erreur a été genérée
    Err.Clear 'supprime l'erreur
    MsgBox "Aucune ligne ne correspond au critères !" 'message
    Exit Sub 'sort de la procédure
End If 'fin de la condition
Set dest = O2.Range("B3") 'définit la cellule de destination DEST
dest.CurrentRegion.ClearContents 'supprime d'éventuelles anciennes données
Application.Intersect(PLV, O1.Columns(1)).Copy dest 'place les cellules visibles de la colonne 1 (=A) dans DEST
Application.Intersect(PLV, O1.Columns(5)).Copy dest.Offset(0, 1) 'place les cellules visibles de la colonne 5 (=E) dans DEST décalée d'une cellule à droite
Application.Intersect(PLV, O1.Columns(7)).Copy dest.Offset(0, 2) 'place les cellules visibles de la colonne 7 (=G) dans DEST décalée de deux cellules à droite
Application.Intersect(PLV, O1.Columns(4)).Copy dest.Offset(0, 3) 'place les cellules visibles de la colonne 4 (=D) dans DEST décalée de trois cellules à droite
Application.Intersect(PLV, O1.Columns(11)).Copy dest.Offset(0, 4) 'place les cellules visibles de la colonne 4 (=K) dans DEST décalée de quatre cellules à droite
O1.Range("A1").AutoFilter 'supprime le filtre automatique
Application.ScreenUpdating = False 'affiche les rafraîchissements d'écran
End Sub
 
Re : Choix colonnes à afficher depuis un tableau

Bonsoir Robert, le forum,

Merci beaucoup pour ta proposition.
Tu maîtrises peut-être mal les tableaux mais en tout cas, tu maîtrises très bien ce que tu fais contrairement à moi...
J'ai mis un timer sur ton code. Il traite 10000 lignes en 0,42 alors que mon tableau (qui en plus de ne pas faire le travail souhaité) traite les mêmes 10000 lignes en 37 secondes. 😕
Aussi, dans l'attente de parfaire mon apprentissage, je réitère mes remerciements et valide ta solution.
A bientôt

Ivan
 
Re : Choix colonnes à afficher depuis un tableau

Bonjour
Coucou Robert 😉

Un solution par filtre avancé avec une feuille de critère et une feuille d'extraction.

A adapter si le tableau extrait fait plus de 26 colonnes.
 

Pièces jointes

Re : Choix colonnes à afficher depuis un tableau

Bonsoir Chris, Re-bonsoir le forum,
Chris, tu soumets une alternative intéressante. Cependant, pour des raisons ergonomiques, je préfère ne pas avoir de feuille intermédiaire et que les titres des colonnes soient extraits automatiquement.
Merci pour cette proposition.
Bonne fin de soirée
Ivan
 
Re : Choix colonnes à afficher depuis un tableau

Re

J'ai du louper un truc !

Dans ton exemple les critères sont en VBA, ce qui ne semble pas souple : dans ce que je propose tu choisis les critères (colonnes au choix) et les colonnes souhaitées (colonnes au choix) et n'a donc pas à modifier le VBA pour chaque choix.

Si je n'ai pas compris, reprécise...
 
Re : Choix colonnes à afficher depuis un tableau

Bonjour, Chris, le forum,

Non Chris tu n’as rien loupé.
Ta proposition est effectivement plus souple et les modifications des critères sont à la portée de tout utilisateur.
Cependant, comme précisé dans mon précédent post, je souhaite éviter les étapes intermédiaires. Cela n’a rien à voir avec la qualité de ta solution qui est indiscutable.
Mon choix est d’ailleurs plus stratégique qu’ergonomique. (il est parfois utile, en milieu professionnel, d’être le seul en mesure d’effectuer certaines tâches…)

Par ailleurs, je laisse le post ouvert dans l’attente d’une éventuelle proposition avec tableaux mais là, c’est plus par curiosité technique puisque mon problème est bien évidemment résolu.

Bonne journée à tous
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

  • Question Question
Microsoft 365 Triage de listes
Réponses
5
Affichages
680
R
Réponses
20
Affichages
4 K
RaVenSs
R
T
Réponses
2
Affichages
1 K
Tava94
T
Retour