J'ai une petit problème sur le code ci-joint. Celui-ci sert à créer une
formule dans une cellule en tenant compte la valeur ou de la formule déjà
existante.
exemple :
en A1 j'ai 100 auquel je voudrais soustraire 10 alors cela me donne A1 =
100-10
en A2 j'ai =200-50 auquel je voudrais soustraire 10 alors cela me donne A2
=200-50-10
Il fonctionne très bien si j'ai dans une formule un entier ou par de formule
du tout.
Mais quand j'ai un montant décimal alors j'ai le message d'erreur suivant :
Erreur définie par l'application ou par l'objet
Et je n'arrive pas en m'en défaire.
Merci pour votre aide
Thierry
Code :
Sub Test_Operation_V8()
Dim i As Double
Dim Col_rep As String
Col_rep = InputBox("Colonne a modifier :")
If Col_rep = "" Then Exit Sub
Const Debut = 30, Col_ajust = "AG"
For i = Debut To ActiveSheet.Columns(Col_rep).Rows(65000).End(xlUp).Row
If Not IsEmpty(Range(Col_ajust & i).Value) Then
With Range(Col_rep & i)
' Teste s'il y avait une formule dans la cellule a mettre à jour :
If Left(Range(Col_rep & i).Formula, 1) = "=" Then
'Si c'est le cas alors cela tient compte de l'ancienne
formule et ajoute la suite de l'opération
.FormulaLocal = "" & Range(Col_rep & i).Formula & "-" &
Range(Col_ajust & i).Value
Else
'S'il ny en a pas alors création de la formule
.FormulaLocal = "=" & Range(Col_rep & i).Value & "-" &
Range(Col_ajust & i).Value
End If
.Font.ColorIndex = 5
End With
End If
Next i
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FFO
Salut à toi
n'as tu pas utilisé pour définir ta décimale une virgule au lieu d'un point ou l'inverse (voir le paramétrage des Options Régionales dans le panneau de configuration)
Vérifies et dis moi !!!!!
Salut à toi
n'as tu pas utilisé pour définir ta décimale une virgule au lieu d'un point
ou l'inverse (voir le paramétrage des Options Régionales dans le panneau de
configuration)
n'as tu pas utilisé pour définir ta décimale une virgule au lieu d'un point ou l'inverse (voir le paramétrage des Options Régionales dans le panneau de configuration)
Vérifies et dis moi !!!!!
ttcpp
Je viens de regarder les options et j'ai une virgule. Quand je fais une exécution pas à pas du code je vois que j'ai un point dans ma formule. Est-ce que c'est cela mon problème ? Si oui, comment le résoudre ? Car je n'ai pas envie de changer mes paramètre régionaux.
"FFO" wrote:
Salut à toi
n'as tu pas utilisé pour définir ta décimale une virgule au lieu d'un point ou l'inverse (voir le paramétrage des Options Régionales dans le panneau de configuration)
Vérifies et dis moi !!!!!
Je viens de regarder les options et j'ai une virgule.
Quand je fais une exécution pas à pas du code je vois que j'ai un point dans
ma formule.
Est-ce que c'est cela mon problème ? Si oui, comment le résoudre ?
Car je n'ai pas envie de changer mes paramètre régionaux.
"FFO" wrote:
Salut à toi
n'as tu pas utilisé pour définir ta décimale une virgule au lieu d'un point
ou l'inverse (voir le paramétrage des Options Régionales dans le panneau de
configuration)
Je viens de regarder les options et j'ai une virgule. Quand je fais une exécution pas à pas du code je vois que j'ai un point dans ma formule. Est-ce que c'est cela mon problème ? Si oui, comment le résoudre ? Car je n'ai pas envie de changer mes paramètre régionaux.
"FFO" wrote:
Salut à toi
n'as tu pas utilisé pour définir ta décimale une virgule au lieu d'un point ou l'inverse (voir le paramétrage des Options Régionales dans le panneau de configuration)
Vérifies et dis moi !!!!!
ttcpp
C'est bon, j'ai trouvé, il fallait juste : mettre Range(Col_rep & i).FormulaLocal au lieu de Range(Col_rep & i).Formula
"ttcpp" wrote:
Bonjour,
J'ai une petit problème sur le code ci-joint. Celui-ci sert à créer une formule dans une cellule en tenant compte la valeur ou de la formule déjà existante. exemple : en A1 j'ai 100 auquel je voudrais soustraire 10 alors cela me donne A1 = 100-10 en A2 j'ai 0-50 auquel je voudrais soustraire 10 alors cela me donne A2 0-50-10 Il fonctionne très bien si j'ai dans une formule un entier ou par de formule du tout. Mais quand j'ai un montant décimal alors j'ai le message d'erreur suivant : Erreur définie par l'application ou par l'objet
Et je n'arrive pas en m'en défaire. Merci pour votre aide
Thierry
Code : Sub Test_Operation_V8() Dim i As Double Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :") If Col_rep = "" Then Exit Sub Const Debut = 30, Col_ajust = "AG" For i = Debut To ActiveSheet.Columns(Col_rep).Rows(65000).End(xlUp).Row If Not IsEmpty(Range(Col_ajust & i).Value) Then With Range(Col_rep & i) ' Teste s'il y avait une formule dans la cellule a mettre à jour : If Left(Range(Col_rep & i).Formula, 1) = "=" Then 'Si c'est le cas alors cela tient compte de l'ancienne formule et ajoute la suite de l'opération .FormulaLocal = "" & Range(Col_rep & i).Formula & "-" & Range(Col_ajust & i).Value Else 'S'il ny en a pas alors création de la formule .FormulaLocal = "=" & Range(Col_rep & i).Value & "-" & Range(Col_ajust & i).Value End If .Font.ColorIndex = 5 End With End If Next i End Sub
C'est bon, j'ai trouvé, il fallait juste :
mettre Range(Col_rep & i).FormulaLocal
au lieu de Range(Col_rep & i).Formula
"ttcpp" wrote:
Bonjour,
J'ai une petit problème sur le code ci-joint. Celui-ci sert à créer une
formule dans une cellule en tenant compte la valeur ou de la formule déjà
existante.
exemple :
en A1 j'ai 100 auquel je voudrais soustraire 10 alors cela me donne A1 =
100-10
en A2 j'ai 0-50 auquel je voudrais soustraire 10 alors cela me donne A2
0-50-10
Il fonctionne très bien si j'ai dans une formule un entier ou par de formule
du tout.
Mais quand j'ai un montant décimal alors j'ai le message d'erreur suivant :
Erreur définie par l'application ou par l'objet
Et je n'arrive pas en m'en défaire.
Merci pour votre aide
Thierry
Code :
Sub Test_Operation_V8()
Dim i As Double
Dim Col_rep As String
Col_rep = InputBox("Colonne a modifier :")
If Col_rep = "" Then Exit Sub
Const Debut = 30, Col_ajust = "AG"
For i = Debut To ActiveSheet.Columns(Col_rep).Rows(65000).End(xlUp).Row
If Not IsEmpty(Range(Col_ajust & i).Value) Then
With Range(Col_rep & i)
' Teste s'il y avait une formule dans la cellule a mettre à jour :
If Left(Range(Col_rep & i).Formula, 1) = "=" Then
'Si c'est le cas alors cela tient compte de l'ancienne
formule et ajoute la suite de l'opération
.FormulaLocal = "" & Range(Col_rep & i).Formula & "-" &
Range(Col_ajust & i).Value
Else
'S'il ny en a pas alors création de la formule
.FormulaLocal = "=" & Range(Col_rep & i).Value & "-" &
Range(Col_ajust & i).Value
End If
.Font.ColorIndex = 5
End With
End If
Next i
End Sub
C'est bon, j'ai trouvé, il fallait juste : mettre Range(Col_rep & i).FormulaLocal au lieu de Range(Col_rep & i).Formula
"ttcpp" wrote:
Bonjour,
J'ai une petit problème sur le code ci-joint. Celui-ci sert à créer une formule dans une cellule en tenant compte la valeur ou de la formule déjà existante. exemple : en A1 j'ai 100 auquel je voudrais soustraire 10 alors cela me donne A1 = 100-10 en A2 j'ai 0-50 auquel je voudrais soustraire 10 alors cela me donne A2 0-50-10 Il fonctionne très bien si j'ai dans une formule un entier ou par de formule du tout. Mais quand j'ai un montant décimal alors j'ai le message d'erreur suivant : Erreur définie par l'application ou par l'objet
Et je n'arrive pas en m'en défaire. Merci pour votre aide
Thierry
Code : Sub Test_Operation_V8() Dim i As Double Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :") If Col_rep = "" Then Exit Sub Const Debut = 30, Col_ajust = "AG" For i = Debut To ActiveSheet.Columns(Col_rep).Rows(65000).End(xlUp).Row If Not IsEmpty(Range(Col_ajust & i).Value) Then With Range(Col_rep & i) ' Teste s'il y avait une formule dans la cellule a mettre à jour : If Left(Range(Col_rep & i).Formula, 1) = "=" Then 'Si c'est le cas alors cela tient compte de l'ancienne formule et ajoute la suite de l'opération .FormulaLocal = "" & Range(Col_rep & i).Formula & "-" & Range(Col_ajust & i).Value Else 'S'il ny en a pas alors création de la formule .FormulaLocal = "=" & Range(Col_rep & i).Value & "-" & Range(Col_ajust & i).Value End If .Font.ColorIndex = 5 End With End If Next i End Sub
FS
Bonjour,
Dans l'écriture de ta formule, tu mélanges Formula et FormulaLocal. Excel n'aime pas ça et provoque une erreur (avec des nombres décimaux uniquement en effet). Ne me demande pas pourquoi, je n'ai pas d'explication sous la main... Le code ci-dessous (qui corrige légèrement le tien) semble donner les résultats attendus :
'===================== Sub Test_Operation_V8() Dim i As Double Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :") If Col_rep = "" Then Exit Sub Const Debut = 30, Col_ajust = "AG" For i = Debut To ActiveSheet.Columns(Col_rep).Rows(65000).End(xlUp).Row If Not IsEmpty(Range(Col_ajust & i).Value) Then With Range(Col_rep & i) ' Teste s'il y avait une formule dans la cellule a mettre à jour : If Range(Col_rep & i).HasFormula Then 'Si c'est le cas alors cela tient compte de l'ancienne formule 'et ajoute la suite de l'opération .FormulaLocal = Range(Col_rep & i).FormulaLocal & "-" & _ Range(Col_ajust & i).Address(0, 0) Else 'S'il n'y en a pas alors création de la formule .FormulaLocal = "=" & Range(Col_rep & i).Value & "-" & _ Range(Col_ajust & i).Value End If .Font.ColorIndex = 5 End With End If Next i End Sub '===================== FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
ttcpp a écrit :
Bonjour,
J'ai une petit problème sur le code ci-joint. Celui-ci sert à créer une formule dans une cellule en tenant compte la valeur ou de la formule déjà existante. exemple : en A1 j'ai 100 auquel je voudrais soustraire 10 alors cela me donne A1 = 100-10 en A2 j'ai 0-50 auquel je voudrais soustraire 10 alors cela me donne A2 0-50-10 Il fonctionne très bien si j'ai dans une formule un entier ou par de formule du tout. Mais quand j'ai un montant décimal alors j'ai le message d'erreur suivant : Erreur définie par l'application ou par l'objet
Et je n'arrive pas en m'en défaire. Merci pour votre aide
Thierry
Code : Sub Test_Operation_V8() Dim i As Double Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :") If Col_rep = "" Then Exit Sub Const Debut = 30, Col_ajust = "AG" For i = Debut To ActiveSheet.Columns(Col_rep).Rows(65000).End(xlUp).Row If Not IsEmpty(Range(Col_ajust & i).Value) Then With Range(Col_rep & i) ' Teste s'il y avait une formule dans la cellule a mettre à jour : If Left(Range(Col_rep & i).Formula, 1) = "=" Then 'Si c'est le cas alors cela tient compte de l'ancienne formule et ajoute la suite de l'opération .FormulaLocal = "" & Range(Col_rep & i).Formula & "-" & Range(Col_ajust & i).Value Else 'S'il ny en a pas alors création de la formule .FormulaLocal = "=" & Range(Col_rep & i).Value & "-" & Range(Col_ajust & i).Value End If .Font.ColorIndex = 5 End With End If Next i End Sub
Bonjour,
Dans l'écriture de ta formule, tu mélanges Formula et FormulaLocal.
Excel n'aime pas ça et provoque une erreur (avec des nombres décimaux
uniquement en effet).
Ne me demande pas pourquoi, je n'ai pas d'explication sous la main...
Le code ci-dessous (qui corrige légèrement le tien) semble donner les
résultats attendus :
'===================== Sub Test_Operation_V8()
Dim i As Double
Dim Col_rep As String
Col_rep = InputBox("Colonne a modifier :")
If Col_rep = "" Then Exit Sub
Const Debut = 30, Col_ajust = "AG"
For i = Debut To ActiveSheet.Columns(Col_rep).Rows(65000).End(xlUp).Row
If Not IsEmpty(Range(Col_ajust & i).Value) Then
With Range(Col_rep & i)
' Teste s'il y avait une formule dans la cellule a mettre à jour :
If Range(Col_rep & i).HasFormula Then
'Si c'est le cas alors cela tient compte de l'ancienne formule
'et ajoute la suite de l'opération
.FormulaLocal = Range(Col_rep & i).FormulaLocal & "-" & _
Range(Col_ajust & i).Address(0, 0)
Else
'S'il n'y en a pas alors création de la formule
.FormulaLocal = "=" & Range(Col_rep & i).Value & "-" & _
Range(Col_ajust & i).Value
End If
.Font.ColorIndex = 5
End With
End If
Next i
End Sub
'=====================
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
ttcpp a écrit :
Bonjour,
J'ai une petit problème sur le code ci-joint. Celui-ci sert à créer une
formule dans une cellule en tenant compte la valeur ou de la formule déjà
existante.
exemple :
en A1 j'ai 100 auquel je voudrais soustraire 10 alors cela me donne A1 =
100-10
en A2 j'ai 0-50 auquel je voudrais soustraire 10 alors cela me donne A2
0-50-10
Il fonctionne très bien si j'ai dans une formule un entier ou par de formule
du tout.
Mais quand j'ai un montant décimal alors j'ai le message d'erreur suivant :
Erreur définie par l'application ou par l'objet
Et je n'arrive pas en m'en défaire.
Merci pour votre aide
Thierry
Code :
Sub Test_Operation_V8()
Dim i As Double
Dim Col_rep As String
Col_rep = InputBox("Colonne a modifier :")
If Col_rep = "" Then Exit Sub
Const Debut = 30, Col_ajust = "AG"
For i = Debut To ActiveSheet.Columns(Col_rep).Rows(65000).End(xlUp).Row
If Not IsEmpty(Range(Col_ajust & i).Value) Then
With Range(Col_rep & i)
' Teste s'il y avait une formule dans la cellule a mettre à jour :
If Left(Range(Col_rep & i).Formula, 1) = "=" Then
'Si c'est le cas alors cela tient compte de l'ancienne
formule et ajoute la suite de l'opération
.FormulaLocal = "" & Range(Col_rep & i).Formula & "-" &
Range(Col_ajust & i).Value
Else
'S'il ny en a pas alors création de la formule
.FormulaLocal = "=" & Range(Col_rep & i).Value & "-" &
Range(Col_ajust & i).Value
End If
.Font.ColorIndex = 5
End With
End If
Next i
End Sub
Dans l'écriture de ta formule, tu mélanges Formula et FormulaLocal. Excel n'aime pas ça et provoque une erreur (avec des nombres décimaux uniquement en effet). Ne me demande pas pourquoi, je n'ai pas d'explication sous la main... Le code ci-dessous (qui corrige légèrement le tien) semble donner les résultats attendus :
'===================== Sub Test_Operation_V8() Dim i As Double Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :") If Col_rep = "" Then Exit Sub Const Debut = 30, Col_ajust = "AG" For i = Debut To ActiveSheet.Columns(Col_rep).Rows(65000).End(xlUp).Row If Not IsEmpty(Range(Col_ajust & i).Value) Then With Range(Col_rep & i) ' Teste s'il y avait une formule dans la cellule a mettre à jour : If Range(Col_rep & i).HasFormula Then 'Si c'est le cas alors cela tient compte de l'ancienne formule 'et ajoute la suite de l'opération .FormulaLocal = Range(Col_rep & i).FormulaLocal & "-" & _ Range(Col_ajust & i).Address(0, 0) Else 'S'il n'y en a pas alors création de la formule .FormulaLocal = "=" & Range(Col_rep & i).Value & "-" & _ Range(Col_ajust & i).Value End If .Font.ColorIndex = 5 End With End If Next i End Sub '===================== FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
ttcpp a écrit :
Bonjour,
J'ai une petit problème sur le code ci-joint. Celui-ci sert à créer une formule dans une cellule en tenant compte la valeur ou de la formule déjà existante. exemple : en A1 j'ai 100 auquel je voudrais soustraire 10 alors cela me donne A1 = 100-10 en A2 j'ai 0-50 auquel je voudrais soustraire 10 alors cela me donne A2 0-50-10 Il fonctionne très bien si j'ai dans une formule un entier ou par de formule du tout. Mais quand j'ai un montant décimal alors j'ai le message d'erreur suivant : Erreur définie par l'application ou par l'objet
Et je n'arrive pas en m'en défaire. Merci pour votre aide
Thierry
Code : Sub Test_Operation_V8() Dim i As Double Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :") If Col_rep = "" Then Exit Sub Const Debut = 30, Col_ajust = "AG" For i = Debut To ActiveSheet.Columns(Col_rep).Rows(65000).End(xlUp).Row If Not IsEmpty(Range(Col_ajust & i).Value) Then With Range(Col_rep & i) ' Teste s'il y avait une formule dans la cellule a mettre à jour : If Left(Range(Col_rep & i).Formula, 1) = "=" Then 'Si c'est le cas alors cela tient compte de l'ancienne formule et ajoute la suite de l'opération .FormulaLocal = "" & Range(Col_rep & i).Formula & "-" & Range(Col_ajust & i).Value Else 'S'il ny en a pas alors création de la formule .FormulaLocal = "=" & Range(Col_rep & i).Value & "-" & Range(Col_ajust & i).Value End If .Font.ColorIndex = 5 End With End If Next i End Sub