Tout fonctionne mais y a t-il mieux à faire

un internaute

XLDnaute Impliqué
Bonjour le forum,
J'ai ajouter la partie en rouge à la macro pour faire la même chose mais en colonne H
Y a t-il mieux à faire pour la simplifier?
Merci d'avance
Bien cordialement


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("E4:E15"), Target) Is Nothing And Target.Count = 1 Then
If IsNumeric(Target) And Target <> "" Then
Application.EnableEvents = False
Target.Formula = "=" & Target & "+'Année 2016'!E16"
Application.EnableEvents = True
End If
End If
If Not Intersect(Range("H4:H15"), Target) Is Nothing And Target.Count = 1 Then
If IsNumeric(Target) And Target <> "" Then
Application.EnableEvents = False
Target.Formula = "=" & Target & "+'Année 2016'!H16"
Application.EnableEvents = True

End If
End If
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("E4:E15,H4:H15"), Target) Is Nothing And Target.Count = 1 Then
   If VarType(Target.Value) = vbDouble Then
      Application.EnableEvents = False
      Target.Formula = "=" & Target.Value & "+'Année 2016'!$E$16"
      Application.EnableEvents = True
      End If: End If
End Sub
 

Dranreb

XLDnaute Barbatruc
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("E4:E15,H4:H15"), Target) Is Nothing And Target.Count = 1 Then
   If VarType(Target.Value) = vbDouble Then
      Application.EnableEvents = False
      Target.Formula = "=" & Target.Value & "+'Année 2016'!" & Target.Address
      Application.EnableEvents = True
      End If: End If
End Sub
 

un internaute

XLDnaute Impliqué
Bonjour Dranreb,
C'est ta première macro qui fonctionne.
Car je fait des différences et je trouve 21 m3 au lieu de 20 m3 avec ma première macro.
J'ai repris ta première macro et ajouter -1
je ne sais pas si c'est très "catholique" mais ça tombe juste

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("E4:E15,H4:H15"), Target) Is Nothing And Target.Count = 1 Then
If VarType(Target.Value) = vbDouble Then
Application.EnableEvents = False
Target.Formula = "=" & Target.Value & "+'Année 2016'!$E$16-1" 'ajout -1 par moi
Application.EnableEvents = True
End If: End If
End Sub

Excuse le retard pour te répondre.
Bien cordialement
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je ne sais pas; tout ce que je n'avais pas vu du 1er coup c'est que dans vos lignes en rouge vous preniez H16 et plus E16. Alors j'en ai déduit qu'il fallait prendre Target.Address
Mais c'est peut être faux. Toujours très difficile sans voir le classeur ni pouvoir tester…
il faut peut être :
VB:
Target.FormulaR1C1 = "=" & Target.Value & "+'Année 2016'!R16C"
 
Dernière édition:

un internaute

XLDnaute Impliqué
Re-bonjour
Oui ça fonctionne avec ta nouvelle ligne.
Meme avec celle ci-dessous:
Target.Formula = "=" & Target.Value & "+'Année 2016'!H16"
Je conçois que sans le classeur c'est très difficile et comme je ne suis pas un as de l'explication!!!
If VarType(Target.Value) = vbDouble Then
La ligne ci-dessus est très interressante
En tout cas merci à toi d'avoir résolu mon problème.
Bonne fin de journée à toi
Bien cordialement
 

Discussions similaires

Statistiques des forums

Discussions
314 167
Messages
2 106 694
Membres
109 667
dernier inscrit
yael59