Afficher entête de tableau par rapport à une valeur

Bonjour,

Je dispose d'un tableaux de plusieurs colonnes (Marques) et pour chaque marque j'ai des références.

Via une macro j'ai mis toutes les références dans une seule colonne et je cherche à afficher les marques correspondantes aux références dans la colonne adjacente.

Ci-joint un fichier qui expliquera mieux ce que je souhaite réaliser.

Bonjour

Remplaces ta macro par celle-ci

Private Sub CommandButton1_Click()
  [L2:M1000].ClearContents
  Set champ = [A2].CurrentRegion.Offset(1)
  For i = 1 To champ.Columns.Count
    Range("L65000").End(xlUp).Offset(1).Resize(champ.Rows.Count - 1) = Application.Index(champ.Value, , i)
    Range("M65000").End(xlUp).Offset(1).Resize(champ.Rows.Count - 1) = champ.Cells(0, i)
  Next i
End Sub

Merci Banzai64,

la macro fonctionne mais uniquement si tout les champs sont remplis.

Si je supprime des références ça créer des cellules vides, la liste des références se mets bien à jour, mais pas celle des marques.

Bonjour

J'avais trouvé une solution si la fin de la colonne n'était pas complète mais pas s'il y avait des trous dans la colonne

A voir

Pas mieux ---> Peut-être passer par un tableau

Private Sub CommandButton1_Click()
Dim NbLigne As Long

  [L2:M1000].ClearContents
  Set champ = [A2].CurrentRegion.Offset(1)
  For i = 1 To champ.Columns.Count
    NbLigne = champ.Rows.Count - 1
    If champ.Cells(NbLigne, i) = "" Then
      NbLigne = champ.Cells(NbLigne, i).End(xlUp).Row - 1
    End If
    If NbLigne > 0 Then
      Range("L65000").End(xlUp).Offset(1).Resize(NbLigne) = Application.Index(champ.Value, , i)
      Range("M65000").End(xlUp).Offset(1).Resize(NbLigne) = champ.Cells(0, i)
    End If
  Next i
End Sub

Il n'y aura pas de trou Bonzai64, si je supprime une référence je fais un tri par ordre alphabétique derrière pour justement éviter les trous.

Je test ta solutions et reviens vers toi

C'est pile poil ce que je cherchais

Merci beaucoup

Petite question, j'ai mis un bouton parce que je ne sais pas faire autrement, mais serait il possible de supprimer ce bouton et que les listes se mettent à jour dès qu'une cellule du tableau est validée ?

Si pas possible pas grave, en même temps ca m'enlève une belle épine du pied

Bonjour

Essayes cette macro à placer dans le module de la feuille

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect([A2].CurrentRegion, Target) Is Nothing And Target.Count = 1 Then
    CommandButton1_Click
  End If
End Sub

Tout fonctionne, c'est parfait, en rajoutant le dernier code, sa rame sévère à chaque saisie lorsque je travail avec un tableau plus grand.

Ma feuille à déjà ce code :

Private Sub Worksheet_Deactivate()
    Sheets("Feuille3").Protect Password:="mdp"
    Sheets("Feuille3").Visible = False
End Sub

Je pense qu'il serait préférable que la mise à jour se fasse lorsque je quitte la feuille.

Du coup j'ai mis comme ça :

Private Sub Worksheet_Deactivate()
    CommandButton1_Click    
    Sheets("Feuille3").Protect Password:="mdp"
    Sheets("Feuille3").Visible = False
End Sub

C'est fonctionnel mais est ce correct comme écriture ?

Bonsoir

Tu auras toujours le temps

Mais le code me parait correct

Juste indicatif : le tableau combien de lignes et de colonnes ?

50 lignes et 20 colonnes

Bonsoir

Je viens de faire des essais avec 56 colonnes et 58 lignes et cela ne rame pas

Tu dois avoirs d'autres formules (fonctions) dans ton fichier

Cela mériterait un Application.ScreenUpdating = False car on voit le flash

C'est quoi ce code ?

Application.ScreenUpdating = False

Oui il y a beaucoup de formules car ces références et marques servent de base de données, elles sont reprises dans pas mal de feuilles.

Bonjour

Ce code sert à figer le rafraichissement écran donc à accélérer la réalisation de la macro

Rechercher des sujets similaires à "afficher entete tableau rapport valeur"