Bonjour à tous !
Quelle richesse ce forum ... J'apprend, j'apprends ...
Je me permets de poser une nouvelle fois un problème qui me soucie en ce
moment en espérant que l'un ou l'une d'entre vous pourra me donner un coup
de main. Là, je sèche ...
Je vais tâcher d'être le plus explicite possible.
Je souhaiterais faire apparaître un solde budgétaire dans un msgbox.
Ce solde budgétaire représente la différence entre un budget et la somme des
engagements.
Une feuille appelée "BDD" recense toutes les lignes de ces engagements et
ces budgets par compte.
Pour parvenir à mes fins, j'ai donc utilisé la fonction sommeprod, qui
fonctionne parfaitement dans une colonne d'Excel, cependant en passant par
le vba, comme je débute, le résultat m'affiche 0 à chaque fois ... il doit y
avoir, comme qui dirait, un problème.
Voici le code que j'ai conçu :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget * (Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
MsgBox résultat
End Sub
Merci d'avance à ceux qui prendront le temps de lire mon message et y
apporteront quelques pistes de réflexion.
À bientôt !
Bonjour à tous !
Quelle richesse ce forum ... J'apprend, j'apprends ...
Je me permets de poser une nouvelle fois un problème qui me soucie en ce
moment en espérant que l'un ou l'une d'entre vous pourra me donner un coup
de main. Là, je sèche ...
Je vais tâcher d'être le plus explicite possible.
Je souhaiterais faire apparaître un solde budgétaire dans un msgbox.
Ce solde budgétaire représente la différence entre un budget et la somme des
engagements.
Une feuille appelée "BDD" recense toutes les lignes de ces engagements et
ces budgets par compte.
Pour parvenir à mes fins, j'ai donc utilisé la fonction sommeprod, qui
fonctionne parfaitement dans une colonne d'Excel, cependant en passant par
le vba, comme je débute, le résultat m'affiche 0 à chaque fois ... il doit y
avoir, comme qui dirait, un problème.
Voici le code que j'ai conçu :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget * (Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
MsgBox résultat
End Sub
Merci d'avance à ceux qui prendront le temps de lire mon message et y
apporteront quelques pistes de réflexion.
À bientôt !
Bonjour à tous !
Quelle richesse ce forum ... J'apprend, j'apprends ...
Je me permets de poser une nouvelle fois un problème qui me soucie en ce
moment en espérant que l'un ou l'une d'entre vous pourra me donner un coup
de main. Là, je sèche ...
Je vais tâcher d'être le plus explicite possible.
Je souhaiterais faire apparaître un solde budgétaire dans un msgbox.
Ce solde budgétaire représente la différence entre un budget et la somme des
engagements.
Une feuille appelée "BDD" recense toutes les lignes de ces engagements et
ces budgets par compte.
Pour parvenir à mes fins, j'ai donc utilisé la fonction sommeprod, qui
fonctionne parfaitement dans une colonne d'Excel, cependant en passant par
le vba, comme je débute, le résultat m'affiche 0 à chaque fois ... il doit y
avoir, comme qui dirait, un problème.
Voici le code que j'ai conçu :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget * (Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
MsgBox résultat
End Sub
Merci d'avance à ceux qui prendront le temps de lire mon message et y
apporteront quelques pistes de réflexion.
À bientôt !
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Évidemment, seule la " première formule " de Résultat représente ce que tu
désires !
Attention, si des lignes sont coupées par le service de messagerie !
Bonjour ,
essaie ça :
'--------------------------------
Sub Solde_budgétaire()
Dim A As String, B As String, C As String
Dim Résultat As Variant
Dim Compte As String
A = "BDD!" & Range("Base_Budget").Address
B = "BDD!" & Range("Base_Comptes").Address
C = "BDD!" & Range("Base_Engagements").Address
Compte = "10a" ' à déterminer selon ton application
Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))")
End Sub
'--------------------------------
Salutations!
"Apprenti.xls" a écrit dans le
message de news:
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Évidemment, seule la " première formule " de Résultat représente ce que tu
désires !
Attention, si des lignes sont coupées par le service de messagerie !
Bonjour ,
essaie ça :
'--------------------------------
Sub Solde_budgétaire()
Dim A As String, B As String, C As String
Dim Résultat As Variant
Dim Compte As String
A = "BDD!" & Range("Base_Budget").Address
B = "BDD!" & Range("Base_Comptes").Address
C = "BDD!" & Range("Base_Engagements").Address
Compte = "10a" ' à déterminer selon ton application
Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))")
End Sub
'--------------------------------
Salutations!
"Apprenti.xls" <Apprenti.xls@discussions.microsoft.com> a écrit dans le
message de news:
32427BF4-57FF-491B-BBE7-D585FF0FFD0B@microsoft.com...
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Évidemment, seule la " première formule " de Résultat représente ce que tu
désires !
Attention, si des lignes sont coupées par le service de messagerie !
Bonjour ,
essaie ça :
'--------------------------------
Sub Solde_budgétaire()
Dim A As String, B As String, C As String
Dim Résultat As Variant
Dim Compte As String
A = "BDD!" & Range("Base_Budget").Address
B = "BDD!" & Range("Base_Comptes").Address
C = "BDD!" & Range("Base_Engagements").Address
Compte = "10a" ' à déterminer selon ton application
Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))")
End Sub
'--------------------------------
Salutations!
"Apprenti.xls" a écrit dans le
message de news:
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Évidemment, seule la " première formule " de Résultat représente ce que tu
désires !
Attention, si des lignes sont coupées par le service de messagerie !
Bonjour ,
essaie ça :
'--------------------------------
Sub Solde_budgétaire()
Dim A As String, B As String, C As String
Dim Résultat As Variant
Dim Compte As String
A = "BDD!" & Range("Base_Budget").Address
B = "BDD!" & Range("Base_Comptes").Address
C = "BDD!" & Range("Base_Engagements").Address
Compte = "10a" ' à déterminer selon ton application
Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))")
End Sub
'--------------------------------
Salutations!
"Apprenti.xls" a écrit dans le
message de news:
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Évidemment, seule la " première formule " de Résultat représente ce que tu
désires !
Attention, si des lignes sont coupées par le service de messagerie !
Bonjour ,
essaie ça :
'--------------------------------
Sub Solde_budgétaire()
Dim A As String, B As String, C As String
Dim Résultat As Variant
Dim Compte As String
A = "BDD!" & Range("Base_Budget").Address
B = "BDD!" & Range("Base_Comptes").Address
C = "BDD!" & Range("Base_Engagements").Address
Compte = "10a" ' à déterminer selon ton application
Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))")
End Sub
'--------------------------------
Salutations!
"Apprenti.xls" <Apprenti.xls@discussions.microsoft.com> a écrit dans le
message de news:
32427BF4-57FF-491B-BBE7-D585FF0FFD0B@microsoft.com...
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Évidemment, seule la " première formule " de Résultat représente ce que tu
désires !
Attention, si des lignes sont coupées par le service de messagerie !
Bonjour ,
essaie ça :
'--------------------------------
Sub Solde_budgétaire()
Dim A As String, B As String, C As String
Dim Résultat As Variant
Dim Compte As String
A = "BDD!" & Range("Base_Budget").Address
B = "BDD!" & Range("Base_Comptes").Address
C = "BDD!" & Range("Base_Engagements").Address
Compte = "10a" ' à déterminer selon ton application
Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))")
End Sub
'--------------------------------
Salutations!
"Apprenti.xls" a écrit dans le
message de news:
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Bonjour Apprenti,
Qu'est-ce que ceci : [$?-1]_ dans ton format... qu'est-ce qui doit
s'afficher dans ta cellule... donne nous un exemple !
P.S. pour ce qui est de l'arrondi ... pourquoi n'avoir pas arrondi que la
section Round(Evaluate( ....),2)
En passant, tu devrait utiliser la fonction "Arrondi de la feuille de
calcul et non celle de VBA, elle a un petit bug bien connu, tu
obtiendrais
Résultat = WorksheetFunction.Round(Evaluate(....),2)
Salutations!
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message de news:
Bonsoir (France) à tous !
À partir de combien de messages, utilise-t-on les superlatifs ?
Tout simplement, merci, Denis ! Ça marche très bien. Finalement, grâce à
Isabelle et à ton code, je crois deviner qu'il faut couper en plusieurs
morceaux toute la programmation pour que cela fonctionne mieux. J'ai
essayé
d'alourdir encore un peu plus le code en ajoutant un arrondi, et ça marche
!
round( Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))"),2)
Pendant que j'y étais, j'ai tenté de mettre en forme le résultat au format
?, mais cela ne passe pas.
Erreur de syntaxe encore une fois ?
Résultat.NumberFormat = "#,##0.00 [$?-1]_ ;-#,##0.00 [$?-1] "
Si quelqu'un a la gentillesse de s'intéresser encore à mon problème ...
J'apprends, j'apprends ...
"michdenis" a écrit dans le message de news:Évidemment, seule la " première formule " de Résultat représente ce que
tu
désires !
Attention, si des lignes sont coupées par le service de messagerie !
Bonjour ,
essaie ça :
'--------------------------------
Sub Solde_budgétaire()
Dim A As String, B As String, C As String
Dim Résultat As Variant
Dim Compte As String
A = "BDD!" & Range("Base_Budget").Address
B = "BDD!" & Range("Base_Comptes").Address
C = "BDD!" & Range("Base_Engagements").Address
Compte = "10a" ' à déterminer selon ton application
Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))")
End Sub
'--------------------------------
Salutations!
"Apprenti.xls" a écrit dans le
message de news:
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de
type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Bonjour Apprenti,
Qu'est-ce que ceci : [$?-1]_ dans ton format... qu'est-ce qui doit
s'afficher dans ta cellule... donne nous un exemple !
P.S. pour ce qui est de l'arrondi ... pourquoi n'avoir pas arrondi que la
section Round(Evaluate( ....),2)
En passant, tu devrait utiliser la fonction "Arrondi de la feuille de
calcul et non celle de VBA, elle a un petit bug bien connu, tu
obtiendrais
Résultat = WorksheetFunction.Round(Evaluate(....),2)
Salutations!
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message de news: e1VmcCmrFHA.3392@TK2MSFTNGP11.phx.gbl...
Bonsoir (France) à tous !
À partir de combien de messages, utilise-t-on les superlatifs ?
Tout simplement, merci, Denis ! Ça marche très bien. Finalement, grâce à
Isabelle et à ton code, je crois deviner qu'il faut couper en plusieurs
morceaux toute la programmation pour que cela fonctionne mieux. J'ai
essayé
d'alourdir encore un peu plus le code en ajoutant un arrondi, et ça marche
!
round( Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))"),2)
Pendant que j'y étais, j'ai tenté de mettre en forme le résultat au format
?, mais cela ne passe pas.
Erreur de syntaxe encore une fois ?
Résultat.NumberFormat = "#,##0.00 [$?-1]_ ;-#,##0.00 [$?-1] "
Si quelqu'un a la gentillesse de s'intéresser encore à mon problème ...
J'apprends, j'apprends ...
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
egc6qhWrFHA.3640@tk2msftngp13.phx.gbl...
Évidemment, seule la " première formule " de Résultat représente ce que
tu
désires !
Attention, si des lignes sont coupées par le service de messagerie !
Bonjour ,
essaie ça :
'--------------------------------
Sub Solde_budgétaire()
Dim A As String, B As String, C As String
Dim Résultat As Variant
Dim Compte As String
A = "BDD!" & Range("Base_Budget").Address
B = "BDD!" & Range("Base_Comptes").Address
C = "BDD!" & Range("Base_Engagements").Address
Compte = "10a" ' à déterminer selon ton application
Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))")
End Sub
'--------------------------------
Salutations!
"Apprenti.xls" <Apprenti.xls@discussions.microsoft.com> a écrit dans le
message de news:
32427BF4-57FF-491B-BBE7-D585FF0FFD0B@microsoft.com...
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de
type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Bonjour Apprenti,
Qu'est-ce que ceci : [$?-1]_ dans ton format... qu'est-ce qui doit
s'afficher dans ta cellule... donne nous un exemple !
P.S. pour ce qui est de l'arrondi ... pourquoi n'avoir pas arrondi que la
section Round(Evaluate( ....),2)
En passant, tu devrait utiliser la fonction "Arrondi de la feuille de
calcul et non celle de VBA, elle a un petit bug bien connu, tu
obtiendrais
Résultat = WorksheetFunction.Round(Evaluate(....),2)
Salutations!
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message de news:
Bonsoir (France) à tous !
À partir de combien de messages, utilise-t-on les superlatifs ?
Tout simplement, merci, Denis ! Ça marche très bien. Finalement, grâce à
Isabelle et à ton code, je crois deviner qu'il faut couper en plusieurs
morceaux toute la programmation pour que cela fonctionne mieux. J'ai
essayé
d'alourdir encore un peu plus le code en ajoutant un arrondi, et ça marche
!
round( Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))"),2)
Pendant que j'y étais, j'ai tenté de mettre en forme le résultat au format
?, mais cela ne passe pas.
Erreur de syntaxe encore une fois ?
Résultat.NumberFormat = "#,##0.00 [$?-1]_ ;-#,##0.00 [$?-1] "
Si quelqu'un a la gentillesse de s'intéresser encore à mon problème ...
J'apprends, j'apprends ...
"michdenis" a écrit dans le message de news:Évidemment, seule la " première formule " de Résultat représente ce que
tu
désires !
Attention, si des lignes sont coupées par le service de messagerie !
Bonjour ,
essaie ça :
'--------------------------------
Sub Solde_budgétaire()
Dim A As String, B As String, C As String
Dim Résultat As Variant
Dim Compte As String
A = "BDD!" & Range("Base_Budget").Address
B = "BDD!" & Range("Base_Comptes").Address
C = "BDD!" & Range("Base_Engagements").Address
Compte = "10a" ' à déterminer selon ton application
Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))")
End Sub
'--------------------------------
Salutations!
"Apprenti.xls" a écrit dans le
message de news:
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de
type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Bonjour Apprenti,
Qu'est-ce que ceci : [$?-1]_ dans ton format... qu'est-ce qui doit
s'afficher dans ta cellule... donne nous un exemple !
P.S. pour ce qui est de l'arrondi ... pourquoi n'avoir pas arrondi que la
section Round(Evaluate( ....),2)
En passant, tu devrait utiliser la fonction "Arrondi de la feuille de
calcul et non celle de VBA, elle a un petit bug bien connu, tu
obtiendrais
Résultat = WorksheetFunction.Round(Evaluate(....),2)
Salutations!
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message de news:
Bonsoir (France) à tous !
À partir de combien de messages, utilise-t-on les superlatifs ?
Tout simplement, merci, Denis ! Ça marche très bien. Finalement, grâce à
Isabelle et à ton code, je crois deviner qu'il faut couper en plusieurs
morceaux toute la programmation pour que cela fonctionne mieux. J'ai
essayé
d'alourdir encore un peu plus le code en ajoutant un arrondi, et ça marche
!
round( Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))"),2)
Pendant que j'y étais, j'ai tenté de mettre en forme le résultat au format
?, mais cela ne passe pas.
Erreur de syntaxe encore une fois ?
Résultat.NumberFormat = "#,##0.00 [$?-1]_ ;-#,##0.00 [$?-1] "
Si quelqu'un a la gentillesse de s'intéresser encore à mon problème ...
J'apprends, j'apprends ...
"michdenis" a écrit dans le message de news:Évidemment, seule la " première formule " de Résultat représente ce que
tu
désires !
Attention, si des lignes sont coupées par le service de messagerie !
Bonjour ,
essaie ça :
'--------------------------------
Sub Solde_budgétaire()
Dim A As String, B As String, C As String
Dim Résultat As Variant
Dim Compte As String
A = "BDD!" & Range("Base_Budget").Address
B = "BDD!" & Range("Base_Comptes").Address
C = "BDD!" & Range("Base_Engagements").Address
Compte = "10a" ' à déterminer selon ton application
Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))")
End Sub
'--------------------------------
Salutations!
"Apprenti.xls" a écrit dans le
message de news:
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de
type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Bonjour Apprenti,
Qu'est-ce que ceci : [$?-1]_ dans ton format... qu'est-ce qui doit
s'afficher dans ta cellule... donne nous un exemple !
P.S. pour ce qui est de l'arrondi ... pourquoi n'avoir pas arrondi que la
section Round(Evaluate( ....),2)
En passant, tu devrait utiliser la fonction "Arrondi de la feuille de
calcul et non celle de VBA, elle a un petit bug bien connu, tu
obtiendrais
Résultat = WorksheetFunction.Round(Evaluate(....),2)
Salutations!
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message de news: e1VmcCmrFHA.3392@TK2MSFTNGP11.phx.gbl...
Bonsoir (France) à tous !
À partir de combien de messages, utilise-t-on les superlatifs ?
Tout simplement, merci, Denis ! Ça marche très bien. Finalement, grâce à
Isabelle et à ton code, je crois deviner qu'il faut couper en plusieurs
morceaux toute la programmation pour que cela fonctionne mieux. J'ai
essayé
d'alourdir encore un peu plus le code en ajoutant un arrondi, et ça marche
!
round( Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))"),2)
Pendant que j'y étais, j'ai tenté de mettre en forme le résultat au format
?, mais cela ne passe pas.
Erreur de syntaxe encore une fois ?
Résultat.NumberFormat = "#,##0.00 [$?-1]_ ;-#,##0.00 [$?-1] "
Si quelqu'un a la gentillesse de s'intéresser encore à mon problème ...
J'apprends, j'apprends ...
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
egc6qhWrFHA.3640@tk2msftngp13.phx.gbl...
Évidemment, seule la " première formule " de Résultat représente ce que
tu
désires !
Attention, si des lignes sont coupées par le service de messagerie !
Bonjour ,
essaie ça :
'--------------------------------
Sub Solde_budgétaire()
Dim A As String, B As String, C As String
Dim Résultat As Variant
Dim Compte As String
A = "BDD!" & Range("Base_Budget").Address
B = "BDD!" & Range("Base_Comptes").Address
C = "BDD!" & Range("Base_Engagements").Address
Compte = "10a" ' à déterminer selon ton application
Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))")
End Sub
'--------------------------------
Salutations!
"Apprenti.xls" <Apprenti.xls@discussions.microsoft.com> a écrit dans le
message de news:
32427BF4-57FF-491B-BBE7-D585FF0FFD0B@microsoft.com...
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de
type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...
Bonjour Apprenti,
Qu'est-ce que ceci : [$?-1]_ dans ton format... qu'est-ce qui doit
s'afficher dans ta cellule... donne nous un exemple !
P.S. pour ce qui est de l'arrondi ... pourquoi n'avoir pas arrondi que la
section Round(Evaluate( ....),2)
En passant, tu devrait utiliser la fonction "Arrondi de la feuille de
calcul et non celle de VBA, elle a un petit bug bien connu, tu
obtiendrais
Résultat = WorksheetFunction.Round(Evaluate(....),2)
Salutations!
"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le
message de news:
Bonsoir (France) à tous !
À partir de combien de messages, utilise-t-on les superlatifs ?
Tout simplement, merci, Denis ! Ça marche très bien. Finalement, grâce à
Isabelle et à ton code, je crois deviner qu'il faut couper en plusieurs
morceaux toute la programmation pour que cela fonctionne mieux. J'ai
essayé
d'alourdir encore un peu plus le code en ajoutant un arrondi, et ça marche
!
round( Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))"),2)
Pendant que j'y étais, j'ai tenté de mettre en forme le résultat au format
?, mais cela ne passe pas.
Erreur de syntaxe encore une fois ?
Résultat.NumberFormat = "#,##0.00 [$?-1]_ ;-#,##0.00 [$?-1] "
Si quelqu'un a la gentillesse de s'intéresser encore à mon problème ...
J'apprends, j'apprends ...
"michdenis" a écrit dans le message de news:Évidemment, seule la " première formule " de Résultat représente ce que
tu
désires !
Attention, si des lignes sont coupées par le service de messagerie !
Bonjour ,
essaie ça :
'--------------------------------
Sub Solde_budgétaire()
Dim A As String, B As String, C As String
Dim Résultat As Variant
Dim Compte As String
A = "BDD!" & Range("Base_Budget").Address
B = "BDD!" & Range("Base_Comptes").Address
C = "BDD!" & Range("Base_Engagements").Address
Compte = "10a" ' à déterminer selon ton application
Résultat = Evaluate("(SumProduct((" & A & ") * (" & B & " = """ & _
Compte & """))) - (SumProduct((" & C & ") * (" & B & " = """ & Compte &
""")))")
End Sub
'--------------------------------
Salutations!
"Apprenti.xls" a écrit dans le
message de news:
Bonjour Isabelle et bonjour à tous,
Je te remercie une nouvelle fois de t'intéresser à mon problème.
J'ai encore quelques difficultés, cependant ...
Voici ce que j'ai fait :
- Remplacement de ma ligne sumproduct par ton code (plus facile à lire
effectivement avec les 3 formules)
- Déclaration des variables x et y as long
- J'obtiens le message d'erreur d'exécution '13' "Incompatibilité de
type"
Le code complet :
Sub Solde_budgétaire()
Dim résultat As Long
Dim ligne As Long
Dim compte As String
Dim x As Long
Dim y As Long
ActiveWorkbook.Names.Add Name:="Base_Budget", RefersToR1C1:= _
"=INDIRECT(""BDD!$m$2:$m$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Comptes", RefersToR1C1:= _
"=INDIRECT(""BDD!$C$2:$C$""&COUNTA(BDD!C3))"
ActiveWorkbook.Names.Add Name:="Base_Engagements", RefersToR1C1:= _
"=INDIRECT(""BDD!$AY$2:$AY$""&COUNTA(BDD!C3))"
ligne = ActiveCell.Row
compte = Range("C" & ligne)
'Ancienne formule
'résultat = ActiveCell.FormulaR1C1 = "SumProduct(Base_Budget *
(Base_Comptes
= compte)) - SumProduct(Base_Engagements * (Base_Comptes = compte))"
'
x = Evaluate("SumProduct(" & Range("Base_Budget").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
y = Evaluate("SumProduct(" & Range("Base_Engagements").Address & _
" * (" & Range("Base_Comptes").Address & " = " & compte & "))")
résultat = x - y
MsgBox résultat
End Sub
Qu'ai-je oublié ? Qu'est-ce qui peut bien clocher ?
J'ai par ailleurs une question : faut-il impérativement que je nomme les
plages dans mon code vba, si elles sont déjà nommées dans la feuille ?
Je te remercie par avance Isabelle si tu veux bien encore te pencher sur
mes
questions.
Toute autre aide est bien entendue la bienvenue.
J'apprends, j'apprends ...