IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Récupérer valeur d'une cellule avant modification


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mars 2020
    Messages : 5
    Par défaut Récupérer valeur d'une cellule avant modification
    Bonjour à toutes et à tous,

    j'ai essayé de trouver une solution sur ec forum, mais malheureusement en vain.
    Voilà, j'ai un fichier EXCEL (cf PJ) dans lequel je voudrais suivre des OFFRES/COMMANDES. Chaque offre est découpée en plusieurs sous-prix (AVP, PRO, ...). Nos travaux s'étalent sur plusieurs mois voire plusieurs années.
    L'idée est de noter dans chaque colonne "A FACTURER" (repérées en jaune exceptionnellement), le montant que je souhaite facturer. Exemple mois M sur N° d'affaire 17-089 (cf PJ, onglet "Avancement Affaires"), je veux facturer 5000 € en "AVP" (donc en T6 je note 5000).
    Le mois suivant, je vais encore facturer sur ce poste (T6) mais là que 1000 €, donc je remplace la valeur par 1000, ce qui me fait un cumulé facturé de 5000+1000 soit 6000 €.
    Et donc mon problème est comment récupérer, pour chaque colonne jaune, le montant à facturer (potentiellement sur une autre feuille), les répertorier et les additionner au fur et à mesure que le chantier évolue.

    Je ne sais pas si j'ai été clair, hésitez pas à me poser des questions, sachant que je suis novice de chez novice en VBA.

    Merci d'avance, et encore merci pour tout ce que vous faites.
    Suivi des Offres et Commandes.xlsm
    David

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 437
    Par défaut
    Bonjour,

    En bref, vous voudriez conserver un historique des montants facturés dans une feuille et avoir les montants totaux actualisés dans le tableau Avancement.

    Normal qu'il ait 5 lignes avec le même n° d'offre (21-082), même n° CDE et des montants différents?

    Cordialement.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mars 2020
    Messages : 5
    Par défaut
    En fait, le problème est que mon client "découpe" parfois 1 commande en plusieurs lignes comptables pour simplifier la vie à leur service, ce qui ne simplifie pas la mienne, mais le client est roi

    Et oui, sur le fond, ça revient à avoir un historique.

    Vous pensez que c'est faisable ? Sinon, je pensais à quelque chose de plus simple (éventuellement), à chaque ouverture du document, une macro s'exécute en arrière plan (donc avant modification) pour me récupérer l'ensemble des valeurs, comme ça j'ai l'ancienne + la nouvelle que je saisie si besoin.

    Qu'en pensez-vous ?


  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    je ne sais pas si j'ai compris la demande mais pourquoi ne pas penser Excel et sans VBA
    je crois une feuille servira comme base de données (pour le saisie) avec les onze premiers colonnes
    puis une douzième colonne nommée STATUT pour saisir REVUE DE CONCEPTION, AVP, PRO....ACT, VISA ...........
    et éviter toutes ces colonnes
    puis insérer un tableau dynamique croisé avec des segments et des filtres

  5. #5
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 437
    Par défaut
    Bonjour,

    Une piste: avoir une feuille "Histo" où l'on enregistre tous les changements effectués. Cela étant fait, on peut utiliser un filtre pour retrouver ce qui s'est passé au niveau d'une commande particulière. Ce n'est pas très pratique, c'est plutôt pour retrouver l'origine d'une erreur!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim vSaisie As Variant, r As Range
        Debug.Print "Worksheet_Change", Target; ""
        If Target.Count > 1 Or Target.Row < 4 Then Exit Sub '--- hors zone d'application
        Application.EnableEvents = False
        vSaisie = Target
        Application.Undo                '==> Target = ancienne valeur, celle avant la saisie
        If Target = vSaisie Then
            '--- pas de changement --- ne rien faire
        Else
            '--- enregistrer dans Histo
            Set r = Worksheets("Histo").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) '--- cellule sous la liste
            r = Now
            r.Offset(0, 1) = Range("A" & Target.Row)    '--- Code XLS
            r.Offset(0, 2) = Target.Column              '--- n° colonne de la cellule modifiée
            r.Offset(0, 3) = Target                     '--- valeur avant modification
            r.Offset(0, 4) = vSaisie                    '--- valeur après modification
        End If
        Target = vSaisie                    '--- réinscrit la dernière valeur saisie
        Application.EnableEvents = True
        Target.Offset(0, 1).Select
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Récupérer la valeur d'une cellule avant modification
    Par Stan_fr dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/11/2017, 13h16
  2. Récupérer la valeur d'une cellule avant sa modification
    Par Micke7 dans le forum Composants
    Réponses: 3
    Dernier message: 26/01/2016, 17h19
  3. [XL-2003] récupérer valeur d'une cellule, dans plusieurs fichiers placés dans des sous-dossiers
    Par greenfire15 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/08/2012, 09h42
  4. [Débutant] Récupérer valeur d'une cellule Excel
    Par Skice dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/07/2011, 09h44
  5. C# GridView Récupérer valeur d'une cellule
    Par Neodream dans le forum C#
    Réponses: 4
    Dernier message: 05/05/2010, 01h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo