Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Remplir des listes à partir d'une base de données

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 !

chajmi

XLDnaute Occasionnel
Bonjour,
J'ai une base de données en feuille "A"
Comment renseigner automatiquement mes tableaux en feuille "B"

Merci de votre aide
 

Pièces jointes

Quand j'ouvre le fichier que vous avez modifié, j'ai 2 messages d'erreur. Et rien ne fonctionne
 

Pièces jointes

  • par défaut 2026-01-23 à 12.30.13.jpg
    23.8 KB · Affichages: 6
  • par défaut 2026-01-23 à 12.30.33.jpg
    19.3 KB · Affichages: 6
Bonjour le forum,

Ah oui merci François, j'avais complètement zappé les "x" en colonnes C D E F G de la feuille "BASE".

Maintenant ce fichier (3) en tient compte avec la macro dans ThisWorkbook :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim P As Range, Q As Range, lig&, r As Range, i&, refcol As Range, j As Variant
If Not IsNumeric(Sh.Name) Then Exit Sub
Application.ScreenUpdating = False
Sh.Protect "123", UserInterfaceOnly:=True 'la protection permet les modifications par macro
Sh.Rows.Hidden = False 'affiche tout
Sh.Rows("5:" & Sh.Rows.Count).ClearContents 'RAZ
On Error Resume Next 'si aucune SpecialCell
With Sheets("BASE")
    .Protect "123", UserInterfaceOnly:=True 'déprotection nécessaire avec les SpecialCells
    Select Case Val(Sh.Name)
        Case 1: Set P = .Columns("D:E") 'CA + Bureau
        Case 2: Set P = .Columns("C")
        Case 3: Set P = .Columns("G")
        Case 4: Set P = .Columns("F")
    End Select
    Set Q = Sh.Rows(4).SpecialCells(xlCellTypeConstants, 2)
    lig = 4
    For Each r In Intersect(P, P.SpecialCells(xlCellTypeConstants, 2).EntireRow).Rows 'ligne de 1 ou 2 cellules
        If Application.CountIf(r, "x") Then 'NB.SI
            lig = lig + 1
            i = r.Row
            Sh.Cells(lig, 2) = .Cells(i, 1)
            For Each refcol In Q
                j = Application.Match(refcol, .Rows(2), 0)
                If IsNumeric(j) Then Sh.Cells(lig, refcol.Column) = .Cells(i, j)
            Next refcol
        End If
    Next r
End With
Sh.Rows("4:" & lig).Sort Sh.Columns(3), xlAscending, Header:=xlYes 'tri sur les noms
i = Sh.Cells.SpecialCells(xlCellTypeLastCell).Row 'dernière ligne du UsedRange
If i > lig Then Sh.Rows(lig + 1 & ":" & i).Hidden = True 'masque les lignes vides
ActiveWindow.ScrollRow = 5 'cadrage
End Sub
Nota 1 : avec cette solution les doublons en colonne A de la feuille "BASE" sont possibles sans poser de problème..

Nota 2 : les formules avec la fonction LIEN_HYPERTEXTE étaient tarabiscotées, je les ai simplifiées.

A+
 

Pièces jointes

Dernière édition:
Cela dit @chajmi vous n'avez peut-être pas résolu le problème signalé au post #16.

Dans ce cas votre fichier est peut-être corrompu, il vous faut le reconstruire.

Edit : notez que j'ai revu tous les liens hypertextes, est-ce que le problème persiste ?
 
Dernière édition:
- 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

Réponses
7
Affichages
143
Réponses
2
Affichages
166
Réponses
2
Affichages
156
Réponses
5
Affichages
663
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…