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

Macro pour additionner un chiffre

3 réponses
Avatar
Érico
Bonjour,

Ma macro fonctionne dans un fichier, et dans un autre fichier, il ne
fonctionne pas, il bloque à la ligne suivante:
"c.Offset(0, 1).Value = c.Offset(0, 1).Value + c.Value"
Pourquoi?



Voici ma macro:

_____________________________________________
Private Sub Worksheet_Change(ByVal Target As Range)

Const iMin As Long = 17 'A ajuster
Const iMax As Long = 169 'A ajuster
Const iCol As Long = 57 'A ajuster

Dim Rg As Range
Set Rg = Intersect(Target, Range("BD" & iMin & ":BD" & iMax)) 'colonne BD

If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each c In Rg
If c <> "" Then
If IsNumeric(c) Then
If c.Offset(, 1).Value + c.Value > c.Offset(, -2).Value +
c.Offset(, -1).Value Then
MsgBox "Le montant est supérieur à vos disponibilités."
c.Select
Application.EnableEvents = True
Set Rg1 = Target
Exit Sub
Else
c.Offset(0, 1).Value = c.Offset(0, 1).Value + c.Value
' ------il bloque ici
End If
Else
c.Value = ""
End If
End If
Next
Set Rg1 = Target
Application.EnableEvents = True
Else
Set Rg = Nothing
End If

End Sub

3 réponses

Avatar
MichDenis
Comme ce sont des opérations mathématiques, tu dois
t'assurer que toutes les colonnes impliquées dans la ligne
de code que tu mentionnes sont au format standard et
que leur contenu est numérique.


"Érico" a écrit dans le message de news:
%23$
Bonjour,

Ma macro fonctionne dans un fichier, et dans un autre fichier, il ne
fonctionne pas, il bloque à la ligne suivante:
"c.Offset(0, 1).Value = c.Offset(0, 1).Value + c.Value"
Pourquoi?



Voici ma macro:

_____________________________________________
Private Sub Worksheet_Change(ByVal Target As Range)

Const iMin As Long = 17 'A ajuster
Const iMax As Long = 169 'A ajuster
Const iCol As Long = 57 'A ajuster

Dim Rg As Range
Set Rg = Intersect(Target, Range("BD" & iMin & ":BD" & iMax)) 'colonne BD

If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each c In Rg
If c <> "" Then
If IsNumeric(c) Then
If c.Offset(, 1).Value + c.Value > c.Offset(, -2).Value +
c.Offset(, -1).Value Then
MsgBox "Le montant est supérieur à vos disponibilités."
c.Select
Application.EnableEvents = True
Set Rg1 = Target
Exit Sub
Else
c.Offset(0, 1).Value = c.Offset(0, 1).Value + c.Value
' ------il bloque ici
End If
Else
c.Value = ""
End If
End If
Next
Set Rg1 = Target
Application.EnableEvents = True
Else
Set Rg = Nothing
End If

End Sub
Avatar
Érico
Mais pourquoi, des fois il ne fonctionne pas et je dois redémarrer l'ordi et
là ça fonctionne?

Merci


"MichDenis" a écrit dans le message de news:

Comme ce sont des opérations mathématiques, tu dois
t'assurer que toutes les colonnes impliquées dans la ligne
de code que tu mentionnes sont au format standard et
que leur contenu est numérique.


"Érico" a écrit dans le message de news:
%23$
Bonjour,

Ma macro fonctionne dans un fichier, et dans un autre fichier, il ne
fonctionne pas, il bloque à la ligne suivante:
"c.Offset(0, 1).Value = c.Offset(0, 1).Value + c.Value"
Pourquoi?



Voici ma macro:

_____________________________________________
Private Sub Worksheet_Change(ByVal Target As Range)

Const iMin As Long = 17 'A ajuster
Const iMax As Long = 169 'A ajuster
Const iCol As Long = 57 'A ajuster

Dim Rg As Range
Set Rg = Intersect(Target, Range("BD" & iMin & ":BD" & iMax)) 'colonne BD

If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each c In Rg
If c <> "" Then
If IsNumeric(c) Then
If c.Offset(, 1).Value + c.Value > c.Offset(, -2).Value +
c.Offset(, -1).Value Then
MsgBox "Le montant est supérieur à vos disponibilités."
c.Select
Application.EnableEvents = True
Set Rg1 = Target
Exit Sub
Else
c.Offset(0, 1).Value = c.Offset(0, 1).Value + c.Value
' ------il bloque ici
End If
Else
c.Value = ""
End If
End If
Next
Set Rg1 = Target
Application.EnableEvents = True
Else
Set Rg = Nothing
End If

End Sub





Avatar
Érico
Je viens d'ouvrir mon fichier ce matin et ça fonctionne.
Sauf après 2-3 tentatives, ça ne fonctionne plus.

Surement une erreur dans la macro?

J'apprécie votre aide.
Merci

"Érico" a écrit dans le message de news:

Mais pourquoi, des fois il ne fonctionne pas et je dois redémarrer l'ordi
et là ça fonctionne?

Merci


"MichDenis" a écrit dans le message de news:

Comme ce sont des opérations mathématiques, tu dois
t'assurer que toutes les colonnes impliquées dans la ligne
de code que tu mentionnes sont au format standard et
que leur contenu est numérique.


"Érico" a écrit dans le message de news:
%23$
Bonjour,

Ma macro fonctionne dans un fichier, et dans un autre fichier, il ne
fonctionne pas, il bloque à la ligne suivante:
"c.Offset(0, 1).Value = c.Offset(0, 1).Value + c.Value"
Pourquoi?



Voici ma macro:

_____________________________________________
Private Sub Worksheet_Change(ByVal Target As Range)

Const iMin As Long = 17 'A ajuster
Const iMax As Long = 169 'A ajuster
Const iCol As Long = 57 'A ajuster

Dim Rg As Range
Set Rg = Intersect(Target, Range("BD" & iMin & ":BD" & iMax)) 'colonne BD

If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each c In Rg
If c <> "" Then
If IsNumeric(c) Then
If c.Offset(, 1).Value + c.Value > c.Offset(, -2).Value +
c.Offset(, -1).Value Then
MsgBox "Le montant est supérieur à vos
disponibilités."
c.Select
Application.EnableEvents = True
Set Rg1 = Target
Exit Sub
Else
c.Offset(0, 1).Value = c.Offset(0, 1).Value + c.Value
' <------il bloque ici
End If
Else
c.Value = ""
End If
End If
Next
Set Rg1 = Target
Application.EnableEvents = True
Else
Set Rg = Nothing
End If

End Sub