Tableau automatique

Bonjour,

Aujourd'hui ma question porte sur les tableaux automatiques.

J'ai eu une fois une personne qui m'a fait ça mais impossible de trouver comment faire.

Je vous ai joins mon fichier exemple qui explique tout.

En gros l'idée est de sélectionner un nom dans une liste déroulante (ça je sais faire ^^) et en fonction du nom, tous les "stage à prévoir" (pour mon exemple) sont rappatriés et mis en forme de tableau.

Je vous invite à télécharger le fichier exemple qui est plus parlant.

Merci !!!

5exemple.xls (20.00 Ko)

Bonjour,

Une proposition

A+

frangy a écrit :

Bonjour,

Une proposition

A+

Salut Frangy merci c'est pile poils ce dont j'ai besoin !! Est ce que tu peux m'indiquer dans le code VBA où est ce que je peux changer les plages de données (source et restitution) ? Je ne suis qu'au stade débrouille en VBA du coup là c'est chaud patate ^^

Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
Dim LigC As Long
Dim ColS As Integer, DerColS As Integer
    If Target.Count > 1 Then Exit Sub
    If Target.Address = "$A$2" Then
        Range("A5", Range("A5").End(xlDown)).Clear
        LigC = 5
        With Worksheets("Feuil1")
            Set C = .Columns(1).Find(Target.Value, , xlValues, xlWhole)
            If Not C Is Nothing Then
                DerColS = .Cells(C.Row, Columns.Count).End(xlToLeft).Column
                If DerColS > 1 Then
                    For ColS = 2 To DerColS
                        Cells(LigC, 1) = .Cells(C.Row, ColS).Value
                        LigC = LigC + 1
                    Next ColS
                End If
            End If
        End With
    End If
End Sub

Merci !!

Feuille source

La référence à la feuille source est indiquée avec l'instruction

With Worksheets("Feuil1").

La recherche de nom est effectuée dans la colonne A avec l'instruction

Set C = .Columns(1).Find(Target.Value, , xlValues, xlWhole)

La colonne qui contient la première formation est la colonne 2,

et celle qui contient la dernière formation est déterminée avec l'instruction

DerColS = .Cells(C.Row, Columns.Count).End(xlToLeft).Column

Le relevé des formations est effectué par un balayage des colonnes avec l'instruction

For ColS = 2 To DerColS

Feuille cible

La référence à la feuille cible est implicite (Feuil2), c'est la feuille active.

La ligne cible est LigC.

La colonne cible est la colonne A.

La cellule cible est indiquée par l'instruction

Cells(LigC, 1)

A+

Merci beaucoup frangy !!! Ta solution est exactement ce dont j'ai besoin !!

En plus tu as bien expliqué et tu as été très rapide !!

Merci beaucoup !!!

Re !!

Désolé je viens d'avori le tableau sur lequel je dois adapter ton code. et pour l'instant il ressemble à ça (il marche bien sûr ^^)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
Dim LigC As Long
Dim ColS As Integer, DerColS As Integer
    If Target.Count > 1 Then Exit Sub
    If Target.Address = "$D$5" Then
        Range("A8", Range("A8").End(xlDown)).Clear
        LigC = 8
        With Worksheets("RECAP.")
            Set C = .Columns(3).Find(Target.Value, , xlValues, xlWhole)
            If Not C Is Nothing Then
                DerColS = .Cells(C.Row, Columns.Count).End(xlToLeft).Column
                If DerColS > 1 Then
                    For ColS = 5 To DerColS
                        Cells(LigC, 1) = .Cells(C.Row, ColS).Value
                        LigC = LigC + 1
                    Next ColS
                End If
            End If
        End With
    End If
End Sub

Le soucis que j'ai est qu'il faudrait que la scrutation s'effectue une colonne sur 3 donc à chaque fois prendre la première donnée en colonne 5 puis 3 colonne plus loing, et ainsi de suite.

Sauf que !! A la première colonne vide il faudrait que la scrutation s'arrète car j'ai un total qui s'effectue en bout de ligne que je ne veux pas rappatrier.

Merci !!

Bonjour,

Si j'ai bien compris, il suffit d'utiliser l'instruction suivante :

For ColS = 5 To DerColS Step 3

Sinon, envoie un fichier exemple.

A+

Rechercher des sujets similaires à "tableau automatique"