Insertion & enregistrement prix aujourd'hui

Bonjour,

je travail sur une tableau composé d'une colonne DATE et d'une colonne Prix

chaque jour, on a un nouveau prix, je souhaite insérer le prix de chaque jour dans mon tableau et ainsi de suite pour les jours à venir, bien sur le lendemain il devrait passer au prix du jour d'après, et le prix d' aujourd’hui devrait être enregistré dans le tableau

ci joint un excel

merci

8pj.xlsx (280.34 Ko)

Bonjour,

Un essai à tester (et à adapter à votre vrai fichier)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D20")) Is Nothing Then 'cellule pour le prix à adapter
Dim dat As Date
dat = Range("C" & Target.Row).Value 'a adapter au besoin
Dim cel As Range
Set cel = Range("C4").End(xlDown).Offset(1, 0) 'cellule C4 à adapter
Dim exist As Range
Set exist = Range("C4:C" & cel.Row).Cells.Find(dat) 'cellule C4 à adapter
If exist Is Nothing Then
cel.Value = dat
cel.Offset(0, 1) = Target.Value
msg = MsgBox("nouveau prix enregistré", vbInformation)
Else
If MsgBox("Le prix du " & dat & "existe déjà ! Voulez-vous le remplacer ? ", vbCritical + vbYesNo) = vbYes Then
exist.Offset(0, 1).Value = Target.Value
End If
End If
End If
End Sub

voici le fichier

Cordialement

11pj.xlsm (286.83 Ko)

Bonjour,

j'ai la nette impression que le fichier joint n'est pas représentatif !...

Et d'où provient le nouveau prix ?

Cdlt

Bonjour Eric,

le nouveau prix provient d'une table requête power query du site yahoo finance, je travail sur les prix des devises, affichant les prix quotidiens, après avoir affiché le prix d'aujourd'hui je souhaite l'enregistrer dans mon tableau

merci

Bonjour,

Un essai à tester (et à adapter à votre vrai fichier)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D20")) Is Nothing Then 'cellule pour le prix à adapter
Dim dat As Date
dat = Range("C" & Target.Row).Value 'a adapter au besoin
Dim cel As Range
Set cel = Range("C4").End(xlDown).Offset(1, 0) 'cellule C4 à adapter
Dim exist As Range
Set exist = Range("C4:C" & cel.Row).Cells.Find(dat) 'cellule C4 à adapter
If exist Is Nothing Then
cel.Value = dat
cel.Offset(0, 1) = Target.Value
msg = MsgBox("nouveau prix enregistré", vbInformation)
Else
If MsgBox("Le prix du " & dat & "existe déjà ! Voulez-vous le remplacer ? ", vbCritical + vbYesNo) = vbYes Then
exist.Offset(0, 1).Value = Target.Value
End If
End If
End If
End Sub

voici le fichier

Cordialement

merci pour votre réponse, mais pourriez vous m'indiquer où est ce que vous avez inséré le code ?

Re,

dsl, je n'avait pas vu que vous aviez répondu

Je l'ai mis dans le code de la feuille 1 --> elle se lance automatiquement lorsque l'on modifie la cellule D20

Cordialement

Re,

dsl, je n'avait pas vu que vous aviez répondu

Je l'ai mis dans le code de la feuille 1 --> elle se lance automatiquement lorsque l'on modifie la cellule D20

Cordialement

merci encore

mais je n'arrive pas à trouver le code, je suis sur le fichier,

est ce qu'on peut ajouter une fonction recherche de telle sorte à faire une recherche sur la colonne C, si je ne trouve pas la date d'aujourd'hui je fais un copier/coller de la date d'aujourd'hui et du prix qui lui est affecté

en ce qui concerne la marcro j'ai pas pu trouver la macro, ci joint une capture d'écran

capture

Re,

C'est normal, elle n'apparait pas dans les macro traditionnelles

pour la trouver:

Dans le VBE (Alt+F11), il y a une fenêtre à gauche intitulée "Projet - VBAProject"

Ouvrir le code de la feuille 1

Si jamais le fait que la macro se lance automatiquement te gène (moi je trouve cela plus pratique mais bon c'est mon avais),

place ce code dans un module standart

Dim Target as range
set Target = Range("D20")
Dim dat As Date
dat = Range("C" & Target.Row).Value 'a adapter au besoin
Dim cel As Range
Set cel = Range("C4").End(xlDown).Offset(1, 0) 'cellule C4 à adapter
Dim exist As Range
Set exist = Range("C4:C" & cel.Row).Cells.Find(dat) 'cellule C4 à adapter
If exist Is Nothing Then
cel.Value = dat
cel.Offset(0, 1) = Target.Value
msg = MsgBox("nouveau prix enregistré", vbInformation)
Else
If MsgBox("Le prix du " & dat & "existe déjà ! Voulez-vous le remplacer ? ", vbCritical + vbYesNo) = vbYes Then
exist.Offset(0, 1).Value = Target.Value
End If
End If

Ps : pour avoir un module standart

Dans le VBE (Alt+F11), il y a une fenêtre à gauche intitulée "Projet - VBAProject"

Faire un clic droit dedans, insertion>module

Cordialement

RE

oui je l'ai cette fois, sauf que quand je modifie la cellule du prix ou la date rien ne se produit dans mon fichier, c'est comme si le code est en mode OFF

merci

Sur la ligne 20 ?

bonjour

oui sur la ligne 20

Re,

A tout hasard, le code que je vous ai transmis doit être encadré par sub... end sub comme ceci

sub nomdetamacro()
Dim Target as range
set Target = Range("D20")
Dim dat As Date
dat = Range("C" & Target.Row).Value 'a adapter au besoin
Dim cel As Range
Set cel = Range("C4").End(xlDown).Offset(1, 0) 'cellule C4 à adapter
Dim exist As Range
Set exist = Range("C4:C" & cel.Row).Cells.Find(dat) 'cellule C4 à adapter
If exist Is Nothing Then
cel.Value = dat
cel.Offset(0, 1) = Target.Value
msg = MsgBox("nouveau prix enregistré", vbInformation)
Else
If MsgBox("Le prix du " & dat & "existe déjà ! Voulez-vous le remplacer ? ", vbCritical + vbYesNo) = vbYes Then
exist.Offset(0, 1).Value = Target.Value
End If
End If
end sub

De fait, celui ci n'est plus automatique mais se lance depuis un bouton commande

Concernant la date, elle n'est pas comprise dans le code mais c'est faisable si tu le souhaite.

Donc, si je résume mes propos : code automatique --> Pj plus haut

Code lancé depuis un bouton commande --> cette macro

Cordialement

merci beaucoup pour votre aide c'est vraiment gentil de votre part

AS

Re,

A tout hasard, le code que je vous ai transmis doit être encadré par sub... end sub comme ceci

sub nomdetamacro()
Dim Target as range
set Target = Range("D20")
Dim dat As Date
dat = Range("C" & Target.Row).Value 'a adapter au besoin
Dim cel As Range
Set cel = Range("C4").End(xlDown).Offset(1, 0) 'cellule C4 à adapter
Dim exist As Range
Set exist = Range("C4:C" & cel.Row).Cells.Find(dat) 'cellule C4 à adapter
If exist Is Nothing Then
cel.Value = dat
cel.Offset(0, 1) = Target.Value
msg = MsgBox("nouveau prix enregistré", vbInformation)
Else
If MsgBox("Le prix du " & dat & "existe déjà ! Voulez-vous le remplacer ? ", vbCritical + vbYesNo) = vbYes Then
exist.Offset(0, 1).Value = Target.Value
End If
End If
end sub

De fait, celui ci n'est plus automatique mais se lance depuis un bouton commande

Concernant la date, elle n'est pas comprise dans le code mais c'est faisable si tu le souhaite.

Donc, si je résume mes propos : code automatique --> Pj plus haut

Code lancé depuis un bouton commande --> cette macro

Cordialement

juste j'ai besoin de répéter cette tâche sur presque 70 colonne, est ce que je dois écrire ce code pour les 70 colonnes ou bien est ce qu'll y'a une boucle qui me permet d'appliquer ce code par exemple de la colonne C jusqu'à Z

merci

Rechercher des sujets similaires à "insertion enregistrement prix aujourd hui"