Mettre à jour des prix dans un onglet masqué à partir d'un onglet visible

Bonjour,

Pour la mise à jour de nos tarifs 2026, mon collègue a travaillé sur un support Excel qui reprend tout l'historique des tarifs sur chaque produit depuis plusieurs années, l'idée étant de savoir ce qui a été fait produit par produit (renta, prix public, volumes ventes...) pour adapter le bon tarif pour 2026.

Nous avons donc, (cf ci joint) créé un fichier avec l'onglet Graph qui reprend article par article, visuellement les prix, la renta, le CA... de chaque article et nous souhaiterions pouvoir, sans changer d'onglet, à chaque article pouvoir alimenter l'onglet base avec les tarifs par client, par code article pour chaque code article (colonnes en beige) pour visualiser rapidement les graphiques à jour avec ce nouveau prix.

mais nous bloquons sur une solution pour le faire sans avoir à changer d'onglet à chaque article (il y a plus de 500 articles)

j'avais pensé à un microsoft form qui alimenterai notre tableau mais cela fait ouvrir microsoft form à chaque fois sur un écran différent et tous les prix sont convertis en texte :(.

Avez vous une solution rapide et simple à laquelle nous n'aurions pas pensé ? (VBA ? Power Query ?)

merci de votre aide

ps : je joins un exemple avec des articles fictifs

19tdb-md.zip (471.04 Ko)

Bonjour à tous,
Voici ton classeur en retour avec une macro VBA. N'oublie pas d'activer la macro.

12tdb-md.zip (478.31 Ko)

Pour toute fin utile, je joins le code

Sub RenseignerValeurs()
    Dim wsBase As Worksheet
    Dim wsGraph As Worksheet
    Dim annee As Variant
    Dim client As String
    Dim produit As String
    Dim PVente, PVP As Variant
    Dim lastRow As Long
    Dim i As Long
    ' Définition des feuilles
    Set wsBase = ThisWorkbook.Sheets("Base")
    Set wsGraph = ThisWorkbook.Sheets("Graph")

    ' Définition des critères et des valeurs à renseigner
    annee = wsGraph.Range("K2").Value
    client = wsGraph.Range("B2").Value
    produit = wsGraph.Range("D2").Value
    PVente = wsGraph.Range("L2").Value
    PVP = wsGraph.Range("M2").Value

    ' Déterminer la dernière ligne utilisée dans la feuille Base
    lastRow = wsBase.Cells(wsBase.Rows.Count, "A").End(xlUp).Row

    ' Parcourir les lignes de la feuille Base
    For i = 2 To lastRow
        If wsBase.Cells(i, "A").Value = annee _
            And wsBase.Cells(i, "B").Value = client _
            And wsBase.Cells(i, "E").Value = produit Then
            ' Écrire les valeurs dans les cellules adéquates colonne M et Colonne N
            wsBase.Cells(i, "M").Value = PVente
            wsBase.Cells(i, "N").Value = PVP
            Exit Sub
        End If
    Next i
    MsgBox "Aucune ligne correspondante trouvée.", vbInformation
End Sub
capture

Merci beaucoup Kingfadhel pour le temps passé

Tout cela m'a l'air top. je le mets en place en interne et je reviens vite ici pour confirmer si tout fonctionne

Encore merci

Encore merci Kingfadhel

Tout fonctionne parfaitement,

je clôture le sujet,

et te souhaite un bon week end

Rechercher des sujets similaires à "mettre jour prix onglet masque partir visible"