Evolution d'infos en fonction d'une cellule

Bonjour,

J'aimerais pouvoir quand je change le nom d'une personne dans une liste déroulante, attribué les informations qui lui corresponde. Je ne sais pas si on peut avoir des fonctions qui relie des listes pour aller chercher des informations dans une autre feuille.

Je pensais plutôt à quand le contenu de la cellule en l'occurence "D14" change alors on va chercher les infos dans la feuille "Ressources"

J'utiliserais la formule ci dessous mais je n'arrive pas a l'appliquer :

"Private Sub Worksheet_Change(ByVal Target As Range)"

Il y a un bout de code aussi dans la feuille planning mais j'ai du mal à l'exprimer.

Si vous avez des idées je suis preneur

Amitiés

5exemple.xlsm (49.21 Ko)

Bonjour MPETIT, bonjour le forum,

Pour t'aider il faudrait comprendre ton tableau. Les équipements sont en ligne (ligne 8 de L à AN) et en colonne (colonne K de 9 à 35). Du coup, en cellule L12, par exemple, on ne sait pas si c est la maintenance de L8 ou de K12.

Le tableau Préventif à 3 colonnes :

  • Nº Équipement : je n'ai vu aucun numéro, uniquement des descriptifs
  • Opérations de maintenance : Ok je crois avoir deviné ce que c'était
  • Date pro intervention : aucune date n'apparaît ?!...

Bref, en l'état je vois mal comment on pourrait t'aider...

C'est vrai tu as totalement raison et je m'en excuse !

Ce fichier ne contient que les informations dont j'ai besoin et les feuilles proviennent d'un autre fichier assez lourd et complexe.

C'est pourquoi j'ai voulu sortir que les feuilles qui m’intéressait s'en penser à vous pour les comprendre.

Le voici-ci dessous modifier avec donc chaque opérateur attribué à sa machine donc "Équipement" et les "Opérations de maintenances" qui sont juste en dessous. Il y a donc plusieurs techniciens pour un équipement parfois

Équipement = ligne 8

Opérations de maintenances = ligne 9 à ligne 13(max)

La seul liste déroulante qu'il y a est celle des "Technicien".

Désolé pour le manque d'informations

Amitiés

3exemple.xlsm (46.37 Ko)

Voici le fichier avec un exemple d'application concret !

1exemple.xlsm (46.72 Ko)

Bonjour,

ci-jointe une proposition

2exemple2.xlsm (57.34 Ko)

Merci beaucoup déja j'analyserais le code pour bien comprendre ta méthode !

Mais n'est il pas possible de faire ceux-ci (voir photo)

En gros ne pas répéter le nom de l'équipement à chaque ligne mais juste pour la première...

Amitiés

amelioration

Mais n'est il pas possible de faire ceci (voir photo)

ci-jointe modification

3exemple3.xlsm (57.40 Ko)

Merci beaucoup !

Re,

En pièce jointe ton fichier modifié. J'ai remplacé le tableau [ListObject] par des cellules normales car sinon je ne sais pas gérer.

Le code :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim TV As Variant 'déclare la variable OS (Onglet Source)
Dim TL() As Variant 'déclare la variable OS (Onglet Source)
Dim NL As Integer 'déclare la variable NL (Nombre de Lignes)
Dim NC As Integer 'déclare la variable NC (Nombre de Colonnes)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim L As Integer 'déclare la variable L (incrément)

If Target.Address <> "$D$14" Then Exit Sub 'si la changement a lieu ailleurs qu'en D14, sort de la procédure
Set OS = Worksheets("Ressources") 'définit l'onglet OS
Range("I6").CurrentRegion.Offset(1, 0).ClearContents 'éfface d'éventuelle anciennes données
TV = OS.Range("A7").CurrentRegion 'définit la tableau des valeurs TV
NL = UBound(TV, 1) 'définit le nombre de lignes NL du tableau des valeurs TV
NC = UBound(TV, 2) 'définit le nombre de colonnes NC du tableau des valeurs TV
K = 1 'initialise la variable K
For J = 1 To NC 'boucle 1 sur toutes les colonne du tableau des valeurs
    If TV(1, J) = Target.Value Then 'condition 1 : si la données ligne 1 colonne J de TV est égale à D14
        For L = 3 To NL 'boucle 2 : sur toutes les lignes du tableau ds valeurs TV (en partant de la troisième)
            If TV(L, J) <> "" Then 'condition 2 : si la donnée ligne L colonne J de TV n'est pas vide
                ReDim Preserve TL(1 To 2, 1 To K) 'redimensionne le tableau des lignes TL(2 lignes, K colonnes)
                TL(1, K) = TV(2, J) 'récupère l'équipement dans la ligne 1 de TL
                TL(2, K) = TV(L, J) 'récupère la maintenance dans la ligne 2 de TL
                K = K + 1 'incrément K (ajoute une colonne au tableau des lignes TL)
            End If 'fin de la condition 2
        Next L 'prochaine ligne de la boucle 2
    End If 'fin de la condition 1
Next J 'prochaine colonne J
'si K est supérieure à 1, renvoie dans la cellule I7 redimensionnée le tableau TL transposé
If K > 1 Then Range("I7").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
End Sub

Le fichier :

5mpetit-ep-v01.xlsm (44.80 Ko)

Merci aussi !

Rechercher des sujets similaires à "evolution infos fonction"