Lien vers ligne par liste déroulante

Bonjour,

Je souhaite savoir s'il est possible de créer un lien vers une colonne de liste déroulante ?

Je m'explique, dans le fichier suivant on a des opérations qui correspondent à un même numéro colonne B. L'idée serait de créer un code qui fait que lorsque je sélectionne EV dans la colonne D. Cela transpose EV dans les autre cellules de la colonne D corrzspondant au même numéro de CT (colonne B)

Ex : si on passe la cellule D4 en EV, les cellules D9 et D13 passe en EV parce qu'elle ont le même numéro de CT "4" en colonne B

Est ce possible ?

Bonsoir,

oui c'est possible en passant le fichier en xlsM afin d'être compatible avec les macros, puis en insérant un petit code VBA sur la surveillance événementiel "change" de la colonne D, le fichier ainsi modifié :

@ bientôt

LouReeD

Bonjour,

Une autre proposition.

Les données sont sous forme de tableau (structuré et dynamique).

Cdlt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim v, v2, Cell As Range

    On Error GoTo errHandler
    Application.EnableEvents = False

    If Not Intersect(Target, Range("Data").Columns(4)) Is Nothing And Target.Count = 1 Then
        v = Target.Value: v2 = Target.Offset(, -2).Value
        For Each Cell In Range("Data").Columns(2).Cells
            If Cell.Value = v2 Then Cell.Offset(, 2).Value = v
        Next Cell
    End If

exitHandler:
    Application.EnableEvents = True
    Exit Sub
errHandler:
    MsgBox "Erreur : " & Err.Number & Chr(10) & Err.Description
    Resume exitHandler
End Sub

Bonjour,

Merci pour vos réponses. pour le tableau croisé dynamique je ne pourrais pas l'adapter sur l'outil existant. la solution de Loureed a l'air intéressante !

Serait il possible de m'indiquer comment la macro marche ? pour que je puisse l'appliquer à mon fichier beaucoup plus gros pour le coup en terme de ligne et de colonne..

J'ai du mal à comprendre toutes les étapes.

Aussi petite question pour anticiper un éventuel problème :

- Si je veux que la source du target vient d'un autre onglet ? et s'il est caché ? est ce que ca marchera ?

Avec le rajout type lct = Sheets(Tableau1).Cells(Target.Row, 2).Value par exemple ?

Cordialement

Ne vous y trompez pas, Jean-Eric n'a pas parlé de TCD, mais de tableau structuré sous Excel, c'est à dire "transformer une plage de donnée" en tableau avec l'outil "insertion tableau" par exemple.

L'avantage c'est qu'au niveau du code VBA on peut facilement faire référence à une colonne de ce tableau, soit par le nom de son entête, soit par l'index de sa colonne. Il y a énormément d'avantage d'utiliser ce type de tableau !

Et son code est équivalent au mien, mais il est "plus pro" au niveau de l'écriture et de la gestion des erreurs et surtout il a mis sous forme de tableau structuré vos données. Ce type de transformation ne gênera en rien votre fichier, même s'il a déjà divers codes qui tournent sur ces données.

Vous pouvez toujours faire un test sur une copie de votre fichier, ensuite pour insérer le tableau c'est simple : Cliquez sur une cellule quelconque de la plage de cellules de vos données, menu insertion, puis tableau, puis vérifiez la proposition d'Excel en ce qui concerne sa taille, cochez ou décochez s'il y a ou pas une ligne d'entête, puis [OK]. Votre tableau est créé, il porte un nom "automatique" qu'Excel lui a donné, vous pouvez le modifier en mettant comme Jean-Eric l'a écrit dans son code "Data", pour ce faire, il faut être sous le ruban "outil de tableau" et sur la gauche il y a une zone Texte "nom du tableau"

@ bientôt

LouReeD

Ah d'accord ! Je prend note, merci pour l'information. Je voudrais faire le point avec cet macro pour essayer de la comprendre parce que j'ai du mal à m'y retrouver.

Dans un premier lieu comme je l'ai dis, l'adaptation sur mon autre outil mènera à ce que la données "systématique / Eventuel" apparaisse via la base de données d'un autre onglet. Si je comprends bien avec les petites connaissances que j'ai en Codage. Il ne faudrait pas la déplacer en temps que macro Module ? ou je peux par une macro d'une feuille spécifique aller chercher dans une autre ?

je met des messages ci dessous pour poser mes questions :)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim v, v2, Cell As Range

    On Error GoTo errHandler
    Application.EnableEvents = False

    If Not Intersect(Target, Range("Data").Columns(4)) Is Nothing And Target.Count = 1 Then 
                'Data étant le tableau on  se réfère à la colonne 4 correspondant à la cible.
        v = Target.Value: v2 = Target.Offset(, -2).Value        'A quoi correspond le "Target.Offset(, -2)" ? je n'arrive pas cibler l'information.
        For Each Cell In Range("Data").Columns(2).Cells            'On récupère la valeur de la colonne 2 pour savoir comment impacter un changement sys/EV. Je me pose la question de si dans le cas où je souhaite récupérer l'information d'un autre tableau ca reste possible avec cette macro ?
            If Cell.Value = v2 Then Cell.Offset(, 2).Value = v        'A quoi correspond le "Target.Offset(, -2)" ? je n'arrive pas cibler l'information.
        Next Cell
    End If

exitHandler:
    Application.EnableEvents = True
    Exit Sub
errHandler:
    MsgBox "Erreur : " & Err.Number & Chr(10) & Err.Description
    Resume exitHandler
End Sub

En gros, l'adaptation devrait se faire de la manière suivante.

On a l'onglet BDD qui regroupe beaucoup de colonnes et d'informations et l'onglet Résultat. La liste déroulante sera sur l'onglet résultat mais devra dépendre des valeurs de la BDD pour la raison suivante :

L'outil vient créer un ordonnancement d'opérations en fonction de plusieurs critères. On aura donc des doublons correspondant à plusieurs fois la même opération pour des raisons différentes ( pour accéder à la dépose de plusieurs équipements demandant cette opération spécifique dans les deux cas) qui n'apparaitront pas dans l'onglet résultat.

Prenant en compte seulement la première ligne d'un doublon. il faut donc forcément se répercuter à la BDD pour trouver les lignes concernés qui passeront en EV ou SYS, pour éviter des pertes d'informations.

J'essaie ci dessous d'illustrer mes propos. Dans ce cas là, j'imagine qu'il faut rester sur un lien entre les deux qui resterait la colonne 2 Numéro CT.

Ex : on modifie dans l'onglet Résultat la liste déroulante en EV

51Inspection Eqpt ASYS

On récupère la valeur "1" en colonne 2 "numéro de CT" et on modifie toutes les valeurs de l'onglet BDD en passant donc 5lignes du numéro de CT en EV.

Suis-je clair ?

Merci pour votre temps :)

Rechercher des sujets similaires à "lien ligne liste deroulante"