XL 2021 Comment préserver la première valeur d'une cellule uniquement si

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Alamyr

XLDnaute Nouveau
Supporter XLD
Bonjour,
Je suis un utilisateur modeste d'excel de longue date mais je bute devant ce problème que je schématise :

J'ai tableau dans lequel on peut choisir les produits et noter les quantités demandées
Produit / prix unitaire / quantité commandée / valeur calculée de la ligne
Trois gestionnaires de commandes vont noter leur liste chacun leur tour alimentant une cellule contenant le "montant total de la commande"

Je souhaite récupérer et mémoriser le prix total de la commande passée par chacun d'eux

J'utilise une cellule "Gestionnaire" dans laquelle chacun introduit son initiale
J'alimente un tableau
Pierre P =valeur de la cellule "montant total" SI cellule "gestionnaire" ="p"
Robert R valeur de la cellule "montant total" si cellule "gestionnaire" ="r"
Michel M valeur de la cellule "montant total" si cellule "gestionnaire" ="m"

Le problème : Après le passage de Pierre, le tableau des produits va devoir être réinitialisé pour le passage de Robert et la valeur de Pierre va passer à "0" puisque la condition =P n'est plus remplie. On perd donc la mémoire du montant de sa commande

Après ce préambule peut être un peu long, j'en viens donc à la question :
Comment serait il possible de bloquer la valeur de la cellule du montant de Pierre
Une fonction SI qui réaliserait =SI(Gestionnaire=P;total commande;conservation de l'ancienne valeur)
Cette ancienne valeur ne serait à 0 que si Pierre n'a pas encore introduit sa commande

Merci d'avance
 
RE,
Edit Si sujet résolu c'est bien.
Nous allons commencer par supprimer le code de wDog66 (Qui fonctionne bien...)
La procédure de wDog66 est dans le module : Module1 pour y accéder :
ALT + F11 (pour passer dans l’environnement VBE).
Dans le menu Affichage cliquer sur Explorateur de projet.
1758367694808.png

Là vous pouvez voir le module Module. Faites un double clic ou bien sélectionnez-le puis cliquez sur l’icône de code (Celui de gauche en haut de la fenêtre)
Vous aurez accès au code. Vous sélectionnez tout [CTRL + A] puis vous faites [Suppr]
Vous pouvez aussi supprimer directement le module celui-ci ne servira plus

Ensuite retournez sur le code de la feuille (Sous Excel clic droit sur l'onglet de la feuille, puis, Visualiser le code.)
Remplacer le code existant par celui ci-dessous :
VB:
Option Explicit

'@Description "Code pour le bouton effacer données de la feuille."
Private Sub CommandButton1_Click()
    Dim rangeToClear As Excel.Range
    On Error Resume Next
    Set rangeToClear = Me.Range("vr_Répartitions")
    On Error GoTo 0
    If Not rangeToClear Is Nothing Then
        rangeToClear.ClearContents
    Else
        MsgBox "Oupss... Impossible de trouver le champ nommé : ""vr_Répartitions"""
    End If
End Sub

'@Description "
Private Sub SauvDonnées(ByVal LigSel As Long)
    Dim PlgD As Range
    With Me
        ' On sauvegarde les valeurs
        .Range("D" & LigSel).Value = .Range("E13")
        .Range("F" & LigSel).Value = .Range("F14")
        .Range("G" & LigSel).Value = .Range("F23")
        .Range("H" & LigSel).Value = .Range("F30")
    End With
    ' Petit message
    MsgBox "Valeurs sauvegardées !"
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' Vérifier si on change la sélection dans les cellules A4 à A7
    If Not Intersect(Me.Range("A4:A7"), Target) Is Nothing Then
        ' Tu as sélectionné une cellule verte = on lance l'inscrition des résultats
        SauvDonnées (Target.Row)
    End If
End Sub

Concernant la remise à zéro du formulaire nous allons créer un champ Nommé.
Pour créer le champ nommé sélectionnez les cellules qui devront être effacées; Puis donnez leurs un nom comme sur l'image (vr_Répartitions)
1758368108317.png

Il ne vous reste plus qu'a ajouter un bouton Onglet Développeur/Groupe Contrôles/Insérer/Contrôle activeX/Bouton.
Je n'ai pas renommer le bouton celui-ci se nomme 'CommandButton1 par défaut.
 

Pièces jointes

RE,
Edit Si sujet résolu c'est bien.
Nous allons commencer par supprimer le code de wDog66 (Qui fonctionne bien...)
La procédure de wDog66 est dans le module : Module1 pour y accéder :
ALT + F11 (pour passer dans l’environnement VBE).
Dans le menu Affichage cliquer sur Explorateur de projet.
Regarde la pièce jointe 1222680
Là vous pouvez voir le module Module. Faites un double clic ou bien sélectionnez-le puis cliquez sur l’icône de code (Celui de gauche en haut de la fenêtre)
Vous aurez accès au code. Vous sélectionnez tout [CTRL + A] puis vous faites [Suppr]
Vous pouvez aussi supprimer directement le module celui-ci ne servira plus

Ensuite retournez sur le code de la feuille (Sous Excel clic droit sur l'onglet de la feuille, puis, Visualiser le code.)
Remplacer le code existant par celui ci-dessous :
VB:
Option Explicit

'@Description "Code pour le bouton effacer données de la feuille."
Private Sub CommandButton1_Click()
    Dim rangeToClear As Excel.Range
    On Error Resume Next
    Set rangeToClear = Me.Range("vr_Répartitions")
    On Error GoTo 0
    If Not rangeToClear Is Nothing Then
        rangeToClear.ClearContents
    Else
        MsgBox "Oupss... Impossible de trouver le champ nommé : ""vr_Répartitions"""
    End If
End Sub

'@Description "
Private Sub SauvDonnées(ByVal LigSel As Long)
    Dim PlgD As Range
    With Me
        ' On sauvegarde les valeurs
        .Range("D" & LigSel).Value = .Range("E13")
        .Range("F" & LigSel).Value = .Range("F14")
        .Range("G" & LigSel).Value = .Range("F23")
        .Range("H" & LigSel).Value = .Range("F30")
    End With
    ' Petit message
    MsgBox "Valeurs sauvegardées !"
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' Vérifier si on change la sélection dans les cellules A4 à A7
    If Not Intersect(Me.Range("A4:A7"), Target) Is Nothing Then
        ' Tu as sélectionné une cellule verte = on lance l'inscrition des résultats
        SauvDonnées (Target.Row)
    End If
End Sub

Concernant la remise à zéro du formulaire nous allons créer un champ Nommé.
Pour créer le champ nommé sélectionnez les cellules qui devront être effacées; Puis donnez leurs un nom comme sur l'image (vr_Répartitions)
Regarde la pièce jointe 1222681
Il ne vous reste plus qu'a ajouter un bouton Onglet Développeur/Groupe Contrôles/Insérer/Contrôle activeX/Bouton.
Je n'ai pas renommer le bouton celui-ci se nomme 'CommandButton1 par défaut.
Merci Valtrase
Je venais juste de signaler que j'étais parvenu à contourner le problème en repartant d'une nouvelle feuille vierge de macros. Tout fonctionne désormais.
Néanmoins, je vais suivre la première partie de vos conseils pour comprendre comment gérer ces macros qui apparaissent pour les unes (la mienne) et pas les autres
Encore merci à tous pour votre aide
 
Bonjour
Si Valtrase est toujours inscrit aux réponses à mon sujet, j'aurais besoin de ses lumières pour une question similaire.
J'ai essayé d'adapter la macro proposée dans ce sujet mais je n'y arrive pas.
La solution est-elle là aussi une macro ou un assemblage de fonctions ?
Voici ce que je cherche :
Sur une feuille :
A1 B1 C1
date du jour valeur calculée 1 valeur calculée 2
"Aujourd'hui"

Je voudrais remplir automatiquement le tableau mémorisant les valeurs calculées jour par jour
D1 E1 F1
jour1 valeur 1 de B1 valeur 2 de C1
jour2
jour3
.....
Mer ci d'avance
 
Bonjour à tous,
Alamyr vous notez : A1, B1, C1 date du jour puis D1, E1, F1 donc je présume que c'est sur le m^me tableau c'est cela ?
Bonjour Valtrase,
Il va falloir m'excuser mais je vous ai sollicité bêtement pour ce deuxième sujet.
Après ce dernier message, je me suis dit que faire une deuxième demande dans un même sujet n'était pas cohérent avec les règles habituelles d'un forum. J'ai donc trouvé préférable d'ouvrir un sujet distinct "création de tableau"
L'erreur est que j'ai oublié de revenir ici pour corriger et déclarer ce sujet clos.
En tout cas merci pour la première macro qui résout mon problème de départ.
Le second posté dans "création de tableau" vient d'être résolu lui aussi.
Ce forum est une merveille quant à la qualité et la rapidité des réponses pour un gars comme moi qui en est resté aux basiques d'Excel
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour