Garder ancienne valeur

Bonjour

Dans la feuille Frais, je calcule mes frais de carburant en tenant compte de la valeur du prix du gas-oil la plus

récente contenue en J3 de la feuille données.

Le problème est que a chaque nouvelle valeure les calculs précédents prennent cette valeur aussi.

Je ne sais pas comment faire., et cela est-il possible?

Merci

Edit Amadéus: Correction du titre. Valeure > valeur sans e..

52test01.xlsx (15.05 Ko)

Salut Will,

Tu sélectionnes le groupe de cellules dans lesquelles tu as des formules, tu les copies, tu cliques droit sur le carré scintillant, tu choisis successivement "Collage spécial" puis "Valeurs", tu confirmes et tu finis en tapant la touche "Esc". Tes valeurs sont ainsi figées à tout jamais

A te relie.

Salut Yvouille

Merci de ta réponse rapide

Ca marche très bien avec ta solution

Je suis peut-etre gourmand mais si ces cellules pouvaient se figer

automatiquement des qu'elles sont remplies ca serait parfait.

Est-ce possible ?

Cordialement

A tester

116test01-v1.xlsm (21.79 Ko)

Bonjour

Comme j'étais penché dessus je laisse aussi ma version qui est sensiblement pareille que celle d'Yvouille

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B:B]) Is Nothing Then
If Target.Count > 1 Then Exit Sub
    If Target <> "" Then
        Target.Offset(, 2).FormulaLocal = "=C" & Target.Row & "*Données!$J$3"
        Target.Offset(, 2) = Target.Offset(, 2).Value
    End If
End If
End Sub

Bonne Journée

Sur le fichier test c'est bon.

Je vais adapter la macro sur mon fichier réel pour voir (pas aujourdhui).

Bonjour DL-13 et merci de te pencher sur mon cas, je vais essayer aussi ta solution.

Je donne réponse dès que adaptation faite, soit de l'une ou de l'autre solution.

Merci a tous deux

Bonne journée a tous

Bonjour

basé sur la solution de Yvouille

Un code un peu plus court

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Count > 1 Then Exit Sub

  If Not Application.Intersect(Target, Range("B2:B65000")) Is Nothing Then
      With Range("C" & Target.Row & ":D" & Target.Row)
        .Value = .Value
      End With
  End If

End Sub

Bonne journée

Bonjour et merci Banzai64

Je test aussi ta solution

Réponse dans la semaine.

Encore merci a tous

Cordialement

Bonjour à tous,

Autre façon d'écrire le code,

il faudra voir pour définir le mois , si un onglet par mois ou autre ?

ici on reste en Avril !

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lg%
    If Target.Count > 1 Then Exit Sub
    Lg = Target.Row
    If Not Application.Intersect(Target, Range("b2:b" & [a65000].End(xlUp).Row)) Is Nothing Then
        Range("c" & Lg) = Sheets("Données").Range("a2") / 100 * Target
        Range("d" & Lg) = Range("c" & Lg) * Sheets("Données").Range("j3")
    End If
End Sub

Amicalement

Claude

Bonjour et merci dubois

En effet j'ais un onglet par mois, cela pose t-il un problème?

Sur un fichier test avec la macro de Yvouille sur chaque feuille a priori pas de problème, (pas encore essayé sur le fichier réel et pas encore non plus les autres propositions).

Je dois juste adapter les colonnes, ca je crois pouvoir faire,(vieux restes de programmation en basic et en z80).

Amicalement

re,

ici, on tient compte du mois affiché en "A1" et des tarifs relatifs à ce mois (feuille "Données")

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lg%, Mois%
    If Target.Count > 1 Then Exit Sub
    Mois = Application.Match(Range("a1"), Sheets("Données").Range("c:c"), 0)
    Lg = Target.Row
    If Not Application.Intersect(Target, Range("b2:b" & [a65000].End(xlUp).Row)) Is Nothing Then
        Range("c" & Lg) = Sheets("Données").Range("a2") / 100 * Target
        Range("d" & Lg) = Range("c" & Lg) * Sheets("Données").Range("j" & Mois)
    End If
End Sub

Amicalement

Claude

25consocarburant.xlsm (27.92 Ko)

Bonjour

J'ai choisi la dernière solution de Dubois qui fonctionne bien si on entre manuellement en colonne B le nombre de km.

Mon problème c'est que dans mon classeur final cette valeur(sans e, merci Amadeus) qui reste située a gauche de la colonne conso est le résultat d'une formule, et du coup ca ne va plus.

Je pense que c'est le "target.row" qui me gêne,mais ca je ne sais pas y remédier.

Si tu pouvais ajuster la macro ca serait sympa.

Par contre je ne pourrais plus répondre après 11h30 et pas avant demain matin.

merci d'avance.

Amicalement

Bonjour,

Fais-nous voir la feuille réelle pour ajuster (avec la formule)

Amicalement

Claude

Voici une partie du fichier réel

Merci d'avoior répondu rapidement

Amicalement

re,

C'est donc en sélectionnant un "Horaire effectué" (colonne"E")

que l'on déclenche la macro et le calcul en colonnes "X" et "Y" ?

On ne s'occupe pas du reste

Confirme s.t.p

Claude

re,

Tout a fait

Will

re,

à tester sur Avril,

Attention les formules !

en colonne "W" mettre "C14" en absolu ($C$14)

Si tu efface la colonne "E", çà effacera "X" et "Y"

pareil si "W" = "" (selon ta formule)

Code à copier sur chaque feuille mois

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lg%
    If Not Application.Intersect(Target, Range("e3:e33")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
            Lg = Target.Row
        If Target = "" Or Range("w" & Lg) = "" Then
            Range("x" & Lg & ":y" & Lg).ClearContents
            Exit Sub
        End If

        Range("x" & Lg) = Sheets("Données").Range("c16") / 100 * Range("w" & Lg)
        Range("y" & Lg) = Range("x" & Lg) * Sheets("Données").Range("L15")
    End If
End Sub

Bonne journée

Claude

Bonjour

Ca marche impeccable

Un grand merci

Amicalement

Will

Rechercher des sujets similaires à "garder ancienne valeur"