je cherche une formule

Commercial Caves Maurin 0 Points de réputation
2026-09-02T07:48:53.33+00:00

Bonjour.

Je dispose d'un catalogue de produits conséquent (lignes A15 à A215) et de nombreux clients (colonnes W3 à BJ3). Chaque client indique la quantité finale souhaitée dans la ligne 12 et peut choisir n'importe quel produit (de la ligne 15 à la ligne 215). Je souhaiterais que lorsqu'un client sélectionne un produit, il me suffise de saisir « ok » pour que ce « ok » soit automatiquement remplacé par la quantité indiquée dans la ligne 12.

Microsoft 365 et Office | Excel | Pour les entreprises | Windows
0 commentaires Aucun commentaire

2 réponses

  1. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2026-09-02T19:23:52.4033333+00:00

    Bonjour,

    Peux tu préciser :

    "et peut choisir n'importe quel produit (de la ligne 15 à la ligne 215)" => Comment ? Il peut en "choisir" plusieurs ?

    "il me suffise de saisir « ok »" => Saisir où ?

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire

  2. Ana Le 2,610 Points de réputation Conseiller indépendant
    2026-09-02T08:09:57.8666667+00:00

    Cette réponse a été traduite automatiquement. Elle peut donc contenir des erreurs grammaticales ou des expressions inhabituelles.

    Bonjour,

    En supposant que les saisies soient effectuées dans la plage W15:BJ215 et que la quantité de forfaits de chaque client figure à la ligne 12 de la même colonne, une formule ne peut pas remplacer « ok » dans la cellule où elle est saisie. Taper « ok » écraserait la formule présente dans cette cellule.

    Si une zone de résultat distincte vous convient, utilisez : =IF(LOWER(TRIM(W15))="ok",W$12,"")

    Copiez la formule vers la droite et vers le bas. Elle affichera la quantité figurant à la ligne 12 de la colonne correspondant au client, dès lors que la cellule de saisie contient « ok ».

    Pour remplacer « ok » directement dans la même cellule, utilisez plutôt un événement VBA « Worksheet_Change » :

    1/ Cliquez avec le bouton droit sur l’onglet de la feuille de calcul concernée et sélectionnez « Visualiser le code ».

    2/ Collez le code suivant dans la fenêtre de code de cette feuille :

    Private Sub Worksheet_Change(ByVal Target As Range)

        Dim ChangedCells As Range

        Dim Cell As Range

        Set ChangedCells = Intersect(Target, Me.Range("W15:BJ215"))

        If ChangedCells Is Nothing Then Exit Sub

        On Error GoTo CleanUp

        Application.EnableEvents = False

        For Each Cell In ChangedCells.Cells

            If Not IsError(Cell.Value2) Then

                If StrComp(Trim$(CStr(Cell.Value2)), "ok", vbTextCompare) = 0 Then

                    Cell.Value2 = Me.Cells(12, Cell.Column).Value2

                End If

            End If

        Next Cell

    CleanUp:

        Application.EnableEvents = True

    End Sub

    3/ Enregistrez le classeur au format « Classeur Excel prenant en charge les macros » (.xlsm).

    Le code accepte la mention « ok » (quelle que soit la casse) et la remplace par la valeur située à la ligne 12 de la même colonne. Si la plage de saisie réelle diffère, modifiez la référence W15:BJ215 dans le code.

    Références Microsoft :

    Je vous recommande d'effectuer un test sur une copie du classeur au préalable, car la macro écrase le texte saisi. Si un lien Microsoft ne s'ouvre pas, veuillez réessayer ultérieurement.

    Cette réponse a-t-elle été utile ?


Votre réponse

Les réponses peuvent être marquées comme « Acceptées » par l’auteur de la question et « Recommandées » par les modérateurs, ce qui aide les utilisateurs à savoir que la réponse a résolu le problème de l’auteur.