pb definir une formule à une cellule

walker59

XLDnaute Junior
Bonsoir , voila mon petit pb et que j'ai definis une plage de cellule b3:v3 qui est egale à 12:15 au format heure ,chaque cellule à la même formule, mais voila parfois il y'a un jour ou il y'a une heure supplementaire, donc une cellule par exemple c3 aura la valeur 13:15 ,au momment du changement la formule de cette cellule disparait , ce que j'aimerais c'est que si je reviens à 12:15 sur c3 il me remet la formule de depart bon courage
 

job75

XLDnaute Barbatruc
Re : pb definir une formule à une cellule

Bonjour walker59,

Mais c'est qu'il est amusant ce petit problème !

Du moins si j'ai bien compris :)

Dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim h As Double, plage As Range, cel As Range
Static flag As Boolean
h = TimeValue("12:15")
Set plage = [B3:V3]
Set Target = Intersect(Target, plage)
If flag Or Target Is Nothing Then Exit Sub
Target.Select 'facultatif
'---recherche de la formule---
For Each cel In plage
  If cel.HasFormula Then GoTo 1
Next
MsgBox "Y a plus de formule !", 48: Exit Sub
'---remise en place de la formule---
1 flag = True
For Each Target In Target
  If Target = h Then Target.FormulaR1C1 = cel.FormulaR1C1
Next
flag = False
End Sub
Fichier joint.

Edit : si la formule était matricielle, il faudrait autre chose...

A+
 

Pièces jointes

  • Restauration de formule(1).xls
    36 KB · Affichages: 50
Dernière édition:

walker59

XLDnaute Junior
Re : pb definir une formule à une cellule

super job75 cela fonctionne ,je te remercie ton code en vba et pour moi du charabia mais sa fonctionne , dis moi toi qui est sans conteste un expert par rapport à moi tu n'a pas quelque chose de plus simple , sinon te prends pas la tête je ferais avec , merci encore à toi
 

job75

XLDnaute Barbatruc
Re : pb definir une formule à une cellule

Re,

Ben si, on peut faire un peu plus simple.

On peut se passer de la variable flag avec un test supplémentaire :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim h As Double, plage As Range, cel As Range
h = TimeValue("12:15")
Set plage = [B3:V3]
Set Target = Intersect(Target, plage)
If Target Is Nothing Then Exit Sub
Target.Select 'facultatif
'---recherche de la formule---
For Each cel In plage
  If cel.HasFormula Then GoTo 1
Next
MsgBox "Y a plus de formule !", 48: Exit Sub
'---remise en place de la formule---
1 For Each Target In Target
  If Not Target.HasFormula And Target = h Then _
    Target.FormulaR1C1 = cel.FormulaR1C1
Next
End Sub
J'utilisais flag un peu par habitude...

Fichier (2).

A+
 

Pièces jointes

  • Restauration de formule(2).xls
    36 KB · Affichages: 40

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 019
dernier inscrit
BenKmc