Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PB de référence

2 réponses
Avatar
Bonjour,

Je vais faire appel à vos lumières! En effet, j'ai découvert le vba il y a
environ 15 jours, et là, je sèche.
Heu, le plus simple est sans doute de vous recopier tout (cf à la fin).

Je m'explique: la colonne I prend le résultat d'un calcul (valeur d'un
produit en €) en fonction de plusieurs autres. Au début je ne parvenais à
prendre en compte que la variable de la colonne H. Maintenant j'y arrive avec
celle de la colonne F (càd que cela met à jour I dès que H ou F change).
SAUF QUE: qd F change, la valeur en € apparait en G!!!
Bref elle apparait selon l'instruction target.offset(0, 1) = blabla, et j'ai
bien compris que c'est de là que vient le pb.
Je souhaite que rien de soit inscrit dans G!!
Autrement dit: comment faire pour que les coordonnées (ou références, je ne
sais pas trop) de ma colonne de destination (I) ne soient plus relatives à H,
mais...absolues?

Désolée pour la longueur. Merci aux courageux qui liront tout et aux très
courageux qui souhaiterons me répondre.





:"
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("Multimédia").Activate
For i = 2 To 250
Dim Rng As String
Rng = Union(Range("H" & i), Range("F" & i)).Address
If Not Intersect(Target, Range(Rng)) Is Nothing Then
For Each c In Range("H" & i)
If c.Value = 0 Then Result = MsgBox("Veuillez saisir une durée
d'amortissement.", 0 + 48, "Erreur")
If Result = vbOK Then
c.Value = 1
Exit For
End If
Next c
With Worksheets("Multimédia")
Target.Offset(0, 1) = Range("D" & i) - ((Range("D" & i) *
(Application.Days360(Range("E" & i), Date, 1))) / (Range("H" & i) * 365))
Target.Offset(0, 1).NumberFormat = " 0.00€"
For Each c In Range("I" & i)
If c.Value < 0 Then c.Value = 0
Next c
For Each c In Range("F" & i)
If c.Value = "" Then Result = MsgBox("Veuillez saisir une quantité.", 0
+ 48, "Erreur")
If Result = vbOK Then
c.Value = 1
Exit For
End If
Next c
For Each c In Range("J" & i)
c.Value = Range("I" & i) * Range("F" & i)
c.NumberFormat = " 0.00€"
Next c
Worksheets("Multimédia").EnableCalculation = True
End With
End If
Next i
End Sub
" (fin de citation!) Ne m'en veuillez pas trop si certaines tournures vous
paraissent laborieuses, je débute! lol!
--

2 réponses

Avatar
Daniel
Bonjour.
Peux-tu poster ton code avec un exemple de ce que tu obtiens et de ce que tu
veux obtenir.
Cordialement.
Daniel
"Cé" a écrit dans le message de news:

Bonjour,

Je vais faire appel à vos lumières! En effet, j'ai découvert le vba il y a
environ 15 jours, et là, je sèche.
Heu, le plus simple est sans doute de vous recopier tout (cf à la fin).

Je m'explique: la colonne I prend le résultat d'un calcul (valeur d'un
produit en ?) en fonction de plusieurs autres. Au début je ne parvenais à
prendre en compte que la variable de la colonne H. Maintenant j'y arrive
avec
celle de la colonne F (càd que cela met à jour I dès que H ou F change).
SAUF QUE: qd F change, la valeur en ? apparait en G!!!
Bref elle apparait selon l'instruction target.offset(0, 1) = blabla, et
j'ai
bien compris que c'est de là que vient le pb.
Je souhaite que rien de soit inscrit dans G!!
Autrement dit: comment faire pour que les coordonnées (ou références, je
ne
sais pas trop) de ma colonne de destination (I) ne soient plus relatives à
H,
mais...absolues?

Désolée pour la longueur. Merci aux courageux qui liront tout et aux très
courageux qui souhaiterons me répondre.





:"
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("Multimédia").Activate
For i = 2 To 250
Dim Rng As String
Rng = Union(Range("H" & i), Range("F" & i)).Address
If Not Intersect(Target, Range(Rng)) Is Nothing Then
For Each c In Range("H" & i)
If c.Value = 0 Then Result = MsgBox("Veuillez saisir une durée
d'amortissement.", 0 + 48, "Erreur")
If Result = vbOK Then
c.Value = 1
Exit For
End If
Next c
With Worksheets("Multimédia")
Target.Offset(0, 1) = Range("D" & i) - ((Range("D" & i) *
(Application.Days360(Range("E" & i), Date, 1))) / (Range("H" & i) * 365))
Target.Offset(0, 1).NumberFormat = " 0.00?"
For Each c In Range("I" & i)
If c.Value < 0 Then c.Value = 0
Next c
For Each c In Range("F" & i)
If c.Value = "" Then Result = MsgBox("Veuillez saisir une quantité.", 0
+ 48, "Erreur")
If Result = vbOK Then
c.Value = 1
Exit For
End If
Next c
For Each c In Range("J" & i)
c.Value = Range("I" & i) * Range("F" & i)
c.NumberFormat = " 0.00?"
Next c
Worksheets("Multimédia").EnableCalculation = True
End With
End If
Next i
End Sub
" (fin de citation!) Ne m'en veuillez pas trop si certaines tournures
vous
paraissent laborieuses, je débute! lol!
--



Avatar
Salut Daniel, et merci de te pencher sur la question.
néanmoins (et je le promets, je ne suis pas blond(e)!!!) je ne sais pas ce
que tu entends par "poster" ???
--




Bonjour.
Peux-tu poster ton code avec un exemple de ce que tu obtiens et de ce que tu
veux obtenir.
Cordialement.
Daniel
"Cé" a écrit dans le message de news:

Bonjour,

Je vais faire appel à vos lumières! En effet, j'ai découvert le vba il y a
environ 15 jours, et là, je sèche.
Heu, le plus simple est sans doute de vous recopier tout (cf à la fin).

Je m'explique: la colonne I prend le résultat d'un calcul (valeur d'un
produit en ?) en fonction de plusieurs autres. Au début je ne parvenais à
prendre en compte que la variable de la colonne H. Maintenant j'y arrive
avec
celle de la colonne F (càd que cela met à jour I dès que H ou F change).
SAUF QUE: qd F change, la valeur en ? apparait en G!!!
Bref elle apparait selon l'instruction target.offset(0, 1) = blabla, et
j'ai
bien compris que c'est de là que vient le pb.
Je souhaite que rien de soit inscrit dans G!!
Autrement dit: comment faire pour que les coordonnées (ou références, je
ne
sais pas trop) de ma colonne de destination (I) ne soient plus relatives à
H,
mais...absolues?

Désolée pour la longueur. Merci aux courageux qui liront tout et aux très
courageux qui souhaiterons me répondre.





:"
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("Multimédia").Activate
For i = 2 To 250
Dim Rng As String
Rng = Union(Range("H" & i), Range("F" & i)).Address
If Not Intersect(Target, Range(Rng)) Is Nothing Then
For Each c In Range("H" & i)
If c.Value = 0 Then Result = MsgBox("Veuillez saisir une durée
d'amortissement.", 0 + 48, "Erreur")
If Result = vbOK Then
c.Value = 1
Exit For
End If
Next c
With Worksheets("Multimédia")
Target.Offset(0, 1) = Range("D" & i) - ((Range("D" & i) *
(Application.Days360(Range("E" & i), Date, 1))) / (Range("H" & i) * 365))
Target.Offset(0, 1).NumberFormat = " 0.00?"
For Each c In Range("I" & i)
If c.Value < 0 Then c.Value = 0
Next c
For Each c In Range("F" & i)
If c.Value = "" Then Result = MsgBox("Veuillez saisir une quantité.", 0
+ 48, "Erreur")
If Result = vbOK Then
c.Value = 1
Exit For
End If
Next c
For Each c In Range("J" & i)
c.Value = Range("I" & i) * Range("F" & i)
c.NumberFormat = " 0.00?"
Next c
Worksheets("Multimédia").EnableCalculation = True
End With
End If
Next i
End Sub
" (fin de citation!) Ne m'en veuillez pas trop si certaines tournures
vous
paraissent laborieuses, je débute! lol!
--