Recopier cellules sur une autre feuille en fonction de la cellule précédent

Bonjour à toutes et à tous,

Je me permet de vous solliciter car je bloque sur un code en vba (je précise que je débute dans ce langage de programmation).

Je vous explique mon problème :

Je dois faire un document excel pour avoir un suivi des réparations effectuées sur des chariots (c'est pour le travail), j'ai une première feuille sur laquelle une personne lambda peut faire une demande de réparation dans laquelle elle doit indiquer la date de demande, son nom, son équipe, son numéro de téléphone, le numéro du chariot (KIT dans le document joint) à réparer ainsi que la criticité (de 1 à 3, 1 étant la criticité la plus forte).

Je dois ensuite faire une synthèse de l'état de chaque chariot sur une seconde feuille et c'est là que je bloque; lorsqu'une personne fait une demande de réparation, il faut que la valeur de la criticité ainsi que la couleur associée se reporte dans la case correspondante (la case en dessous de celle contenant le numéro du chariot) sur la feuille de synthès; s'il y a eu plusieurs demande pour le même chariot, c'est la criticté de la dernière demande qui doit s'afficher dans la synthèse.

J'ai essayé plusieurs code et rien y fait , je n'arrive pas à afficher la valeur de la criticité et la couleur correspondante dans la bonne case sr la synthèse.

(Je précse que j'ai déjà recherché sur google et sur le forum mais je n'ai trouvé aucune solution à mon problème).

Pourriez-vous m'aider svp ?

Cordialement, Pilou.

Bonjours à toi,

J'ai essayé de faire un truc qui conrespondrait à tes attentes, j'espère avoir résolu ton problème sinon n'hésite pas à me soliciter d'avantage

Cordialement,

Merci de ton aide tu m'as bien avancé

Je voudrai également recopier la couleur de la case criticité (rouge si c'est 1, orange si c'est 2 et jaune si c'est 3) dans la synthèse, pourrais-tu m'aider là dessus aussi stp

Cordialement

Bonjour le fil, bonjour le forum,

Bien en retard !... Je propose quand même...

Pour la couleur j'ai utilisé la même mise en forme conditionnelle que dans l'onglet Réparations :

Sub Macro1()
Dim R As Worksheet 'déclare la variable R (onglet Réparations)
Dim E As Worksheet 'déclare la variable E (onglet Etat des KITs)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim CR As Integer 'déclare la variable CR (Criticité de Référence)
Dim Dt As Long 'déclare la variable Dt (Date)
Dim DtM As Long 'déclare la variable DtM (Date Maxi)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set R = Worksheets("Réparations") 'définit l'onglet R
Set E = Worksheets("Etat des KITs") 'définit l'onglet E
TV = R.Range("A4").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    D(TV(I, 5)) = "" 'alimente le dictionnaire D avec les éléments de la colonne 5 du tableau des valeurs TV (Numéro du Kit)
Next I 'prochaine ligne de la boucle
TMP = D.Keys 'récupère dans le tableau temporaire TMP la liste des éléments du dictionnaire D sans doublon
For J = 0 To UBound(TMP) 'boucle 1 : sur tous les éléments J du tableau temporaire TMP
    For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
        If TV(I, 5) = TMP(J) Then 'condition 1 : si la donnée ligne I colonne 5 de TV (boucle 2) correspond à l'élément TMP(J) de la boucle 1
            Dt = CLng(TV(I, 1)) 'définit la date dt (en entier long)
            If Dt > DtM Then 'condition 2: si la date Dt est supérieure à la date DtM
                DtM = Dt 'DtM devient Dt
                CR = TV(I, 6) 'la criticité de référence CR devient la donnée ligne I, colonne 6 de la boucle 2
            End If 'fin de la condition 2
        End If 'fin de la condition 1
    Next I 'prochaine ligne de la boucle 2
    'définit la cellule de destination DEST (recherche le numéro de kit de la boucle 1 dans la plage A2:J18 de l'onglet E)
    Set DEST = E.Range("A2:J18").Find(TMP(J), , xlValues, xlWhole)
    DEST.Offset(1, 0).Value = CR 'renvoie une ligne au-dessous de DEST la criticité de référence CR
Next J 'prochain élément de la boucle 1
End Sub

Ensuite pour la couleur une simple mise en forme conditionnelle suffit.

Merci à vous, vous me retirez une belle épine du pied.

J'ai juste une dernière requête à laquelle je viens de penser (j'arrête de vous embêter après c'est promis ), j'aimerai que lorsque le chariot à été réparé (lorsqu'une date de réparation a été rentrée dans la cellule correspondante), la criticité disparaisse de la synthèse.

Merci d'avance

Voila pour toi

Si tu souhaites des explications sur les formules je suis à ta disposition ^^

Rechercher des sujets similaires à "recopier feuille fonction precedent"