Copier la valeur encodée dans une cellule définie par recherchev

Fermé
Kabref Messages postés 2 Date d'inscription mercredi 22 mars 2017 Statut Membre Dernière intervention 2 avril 2017 - Modifié par Kabref le 22/03/2017 à 05:45
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 2 avril 2017 à 14:57
Bonjour à tous et déjà merci pour votre lecture,

J'ai un peu d'expérience avec Excel dans lequel j'ai déjà fait pas mal de tableaux de bord divers, mais là je suis confronté à, à mon avis, un souci que je ne peux régler que par une macro. Or, je n'ai encore jamais utilisé de code vba.

Voici ma question, résumée le plus simplement possible j'espère:

J'ai un fichier avec deux feuilles :

Première feuille avec les colonnes suivantes
- Référence
- Date
- Référence-Date (ma clé primaire)
- Quantité provisoire calculée
- Quantité encodée
- Quantité définitive (Q provisoire si Q encodée est vide, sinon Q encodée)

Seconde feuille (un tableau de bord)
Paramètres utilisateur
- Référence
- Semaine d'analyse -> génère l'affichage de 7 dates
Données
- Quantité définitive (basée sur une recherchev de ma clé primaire)

Objectif
Lorsque l'utilisateur encode une valeur dans "quantité définitive, copier cette valeur dans le premier onglet dans la colonne "quantité encodée" puis inscrire à nouveau la meme formule initiale dans la cellule. L'utilitaire ne voit rien puisque la valeur reste la meme, mais elle est venue s'encoder dans la feuille 2.

Exemple :
Feuille 1
Référence-Date-Q Calc-Q Enco-Q Def
2233-15/04/17-45-""-45
Feuille 2
Paramètre Ref=2233 Semaine=10/04/17
Quantité affichée = 45 (recherchev qdef de 2233-150417)
Lorsque l'utilisateur encode 50 dans la cellule, aller mettre cette valeur dans Q Enco en fonction de la clé primaire et remettre la formule initiale. La valeur affichée reste 50, mais elle vient à nouveau de la feuille 1
Nouvelle feuille 1
2233-15/04/17-45-50-50

Je suis désolé pour mon explication longue et compliquée mais c'est toujours délicat d'être clair et synthétique quand on parle d'excel :).

Merci d'avance pour votre retour et bonne journée!

Kabref
A voir également:

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
22 mars 2017 à 09:43
Bonjour,

Dans ta feuille 2 tu peux copier le code VBA suivant (mode d'emploi) et tu devrais obtenir ce que tu veux
Option Explicit
Dim avant As Variant
Private Sub Worksheet_SelectionChange(ByVal sel As Range)
    If sel.CountLarge > 1 Then Exit Sub
    If Intersect(sel, Range("C:C")) Is Nothing Then Exit Sub
    avant = sel.Formula
End Sub
Private Sub Worksheet_Change(ByVal sel As Range)
    If sel.CountLarge > 1 Then Exit Sub
    If Intersect(sel, Range("C:C")) Is Nothing Then Exit Sub
    Dim cel As Range
    Set cel = Sheets(1).Columns(1).Find(Cells(sel.Row, 1), [A1], xlValues, xlWhole)
    cel.Offset(0, 5).Value = sel.Value
    Application.EnableEvents = False
    sel.Formula = avant
    Application.EnableEvents = True
End Sub


0
Kabref Messages postés 2 Date d'inscription mercredi 22 mars 2017 Statut Membre Dernière intervention 2 avril 2017
2 avril 2017 à 08:09
Bonjour,

Avec un peu de retard, désolé, je voulais te remercier pour ta réponse.
Malheureusement je n'ai pas su faire fonctionner ta macro, et vu l'urgence et l'importance de la situation, j'ai fait quelque chose de manuel pour l'instant.

J'essayerai de décortiquer ça par la suite quand le reste de mon fichier sera plus abouti.

Merci encore et bon weekend.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
2 avril 2017 à 14:57
Bonjour,

Malheureusement je n'ai pas su faire fonctionner ta macro
Normalement, il te suffit de la copier dans ta feuille 2 pour que cela fonctionne, bien sûr, à condition que les macros soient autorisées dans excel.
0