J'ai une petite question par rapport =E0 Evaluate.
Si je suis positionn=E9 sur une feuille autre de celle o=F9 j'ai d=E9fini m=
a
plage, le r=E9sultat est incorrect puisqu'il prend dans le calcul la
plage de donn=E9es de la feuille active. En revanche, par formule voire
en pr=E9cisant la feuille, =E7a marche.
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
michdenis
Bonjour,
Essaie ceci : Si ton code est dans un module feuille autre que la "feuil1", utilise ceci si tu veux additionner la plage de la feuil1!A1:A10
'------------------------------ With Sheets("Feuil2") MsgBox Evaluate("SUM(Feuil1!" & MaR.Address(0, 0) & ")") End With '------------------------------
Il ne faut jamais oublier que les plages désignées dans un module de classe "Feuille" sont réputées appartenir à la feuille d'où le code est écrit sauf si on prend soin de faire référence à la feuille d'où la plage provient.
"DesseJ" a écrit dans le message de groupe de discussion :
Bonjour chers Excelliens,
J'ai une petite question par rapport à Evaluate. Si je suis positionné sur une feuille autre de celle où j'ai défini ma plage, le résultat est incorrect puisqu'il prend dans le calcul la plage de données de la feuille active. En revanche, par formule voire en précisant la feuille, ça marche.
Est-ce normal ou suis-je étourdi/inculte;o))) ?
Merci et bonne journée Stéphane
'======================== Dim FeuilleCalc As Worksheet Dim MaR As Range
Set FeuilleCalc = Worksheets("Feuil1") Set MaR = FeuilleCalc.Range("A1:A10") With Sheets("Feuil2") MsgBox Evaluate("SUM(" & MaR.Address(0, 0) & ")") '========> Faux MsgBox Evaluate("SUM(Feuil1!" & MaR.Address(0, 0) & ")") '========> Faux .[B2].FormulaLocal = "=SOMME(" & MaR.Address(0, 0) & ")" '========> Faux End With
Bonjour,
Essaie ceci : Si ton code est dans un module feuille autre que
la "feuil1", utilise ceci si tu veux additionner la plage de
la feuil1!A1:A10
'------------------------------
With Sheets("Feuil2")
MsgBox Evaluate("SUM(Feuil1!" & MaR.Address(0, 0) & ")")
End With
'------------------------------
Il ne faut jamais oublier que les plages désignées dans un module de classe "Feuille"
sont réputées appartenir à la feuille d'où le code est écrit sauf si on prend soin
de faire référence à la feuille d'où la plage provient.
"DesseJ" <DesseJ@caramail.com> a écrit dans le message de groupe de discussion :
af2b0bd8-e4d2-4f36-a4e4-9e1c1274c09e@o10g2000yqa.googlegroups.com...
Bonjour chers Excelliens,
J'ai une petite question par rapport à Evaluate.
Si je suis positionné sur une feuille autre de celle où j'ai défini ma
plage, le résultat est incorrect puisqu'il prend dans le calcul la
plage de données de la feuille active. En revanche, par formule voire
en précisant la feuille, ça marche.
Est-ce normal ou suis-je étourdi/inculte;o))) ?
Merci et bonne journée
Stéphane
'========================
Dim FeuilleCalc As Worksheet
Dim MaR As Range
Set FeuilleCalc = Worksheets("Feuil1")
Set MaR = FeuilleCalc.Range("A1:A10")
With Sheets("Feuil2")
MsgBox Evaluate("SUM(" & MaR.Address(0, 0) & ")") '========>
Faux
MsgBox Evaluate("SUM(Feuil1!" & MaR.Address(0, 0) & ")")
'========> Faux
.[B2].FormulaLocal = "=SOMME(" & MaR.Address(0, 0) & ")"
'========> Faux
End With
Essaie ceci : Si ton code est dans un module feuille autre que la "feuil1", utilise ceci si tu veux additionner la plage de la feuil1!A1:A10
'------------------------------ With Sheets("Feuil2") MsgBox Evaluate("SUM(Feuil1!" & MaR.Address(0, 0) & ")") End With '------------------------------
Il ne faut jamais oublier que les plages désignées dans un module de classe "Feuille" sont réputées appartenir à la feuille d'où le code est écrit sauf si on prend soin de faire référence à la feuille d'où la plage provient.
"DesseJ" a écrit dans le message de groupe de discussion :
Bonjour chers Excelliens,
J'ai une petite question par rapport à Evaluate. Si je suis positionné sur une feuille autre de celle où j'ai défini ma plage, le résultat est incorrect puisqu'il prend dans le calcul la plage de données de la feuille active. En revanche, par formule voire en précisant la feuille, ça marche.
Est-ce normal ou suis-je étourdi/inculte;o))) ?
Merci et bonne journée Stéphane
'======================== Dim FeuilleCalc As Worksheet Dim MaR As Range
Set FeuilleCalc = Worksheets("Feuil1") Set MaR = FeuilleCalc.Range("A1:A10") With Sheets("Feuil2") MsgBox Evaluate("SUM(" & MaR.Address(0, 0) & ")") '========> Faux MsgBox Evaluate("SUM(Feuil1!" & MaR.Address(0, 0) & ")") '========> Faux .[B2].FormulaLocal = "=SOMME(" & MaR.Address(0, 0) & ")" '========> Faux End With
DesseJ
Merci MichDenis pour les précisions.
je n'avais pas été assez explicite, le code était dans une feuille Module et non de Feuille et j'essayais de corriger la dernière ligne du code plus bas
Merci Stéphane
Sub MonTest() Dim FeuilleCalc As Worksheet Dim MaR As Range Set FeuilleCalc = Worksheets("Feuil1") Set MaR = FeuilleCalc.Range("A1:A10") With Sheets("Feuil2") .Activate MsgBox Evaluate("SUM(Feuil1!" & MaR.Address(0, 0) & ")") '========> OK [B2].FormulaLocal = "=SOMME(" & MaR.Address(0, 0) & ")" '========> OK MsgBox Evaluate("SUM(" & MaR.Address(0, 0) & ")") '===== ===> Faux End With End Sub
Merci MichDenis pour les précisions.
je n'avais pas été assez explicite, le code était dans une feuille
Module et non de Feuille et j'essayais de corriger la dernière ligne
du code plus bas
Merci Stéphane
Sub MonTest()
Dim FeuilleCalc As Worksheet
Dim MaR As Range
Set FeuilleCalc = Worksheets("Feuil1")
Set MaR = FeuilleCalc.Range("A1:A10")
With Sheets("Feuil2")
.Activate
MsgBox Evaluate("SUM(Feuil1!" & MaR.Address(0, 0) & ")")
'========> OK
[B2].FormulaLocal = "=SOMME(" & MaR.Address(0, 0) & ")"
'========> OK
MsgBox Evaluate("SUM(" & MaR.Address(0, 0) & ")") '===== ===>
Faux
End With
End Sub
je n'avais pas été assez explicite, le code était dans une feuille Module et non de Feuille et j'essayais de corriger la dernière ligne du code plus bas
Merci Stéphane
Sub MonTest() Dim FeuilleCalc As Worksheet Dim MaR As Range Set FeuilleCalc = Worksheets("Feuil1") Set MaR = FeuilleCalc.Range("A1:A10") With Sheets("Feuil2") .Activate MsgBox Evaluate("SUM(Feuil1!" & MaR.Address(0, 0) & ")") '========> OK [B2].FormulaLocal = "=SOMME(" & MaR.Address(0, 0) & ")" '========> OK MsgBox Evaluate("SUM(" & MaR.Address(0, 0) & ")") '===== ===> Faux End With End Sub
michdenis
Si la commande est dans un module standard, elle additionnera la plage A1:A10 de la feuil1, comme tu as défini tes variables même si la feuille active n'est pas la Feuil1 MsgBox Evaluate("SUM(" & MaR.Address(0, 0) & ")")
Cependant, si tu veux que "MaR.Address(0, 0)" fasse référence à la feuil2 et de ce fait tienne compte du With Sheets("Feuil2") il te faut écrire quelque chose comme :
With Sheets("Feuil2") MsgBox Evaluate("SUM(" & .Name & "!" & MaR.Address(0, 0) & ")") End With
"DesseJ" a écrit dans le message de groupe de discussion :
Merci MichDenis pour les précisions.
je n'avais pas été assez explicite, le code était dans une feuille Module et non de Feuille et j'essayais de corriger la dernière ligne du code plus bas
Merci Stéphane
Sub MonTest() Dim FeuilleCalc As Worksheet Dim MaR As Range Set FeuilleCalc = Worksheets("Feuil1") Set MaR = FeuilleCalc.Range("A1:A10") With Sheets("Feuil2") .Activate MsgBox Evaluate("SUM(Feuil1!" & MaR.Address(0, 0) & ")") '========> OK [B2].FormulaLocal = "=SOMME(" & MaR.Address(0, 0) & ")" '========> OK MsgBox Evaluate("SUM(" & MaR.Address(0, 0) & ")") '========> Faux End With End Sub
Si la commande est dans un module standard, elle
additionnera la plage A1:A10 de la feuil1, comme
tu as défini tes variables même si la feuille active
n'est pas la Feuil1
MsgBox Evaluate("SUM(" & MaR.Address(0, 0) & ")")
Cependant, si tu veux que "MaR.Address(0, 0)" fasse référence
à la feuil2 et de ce fait tienne compte du With Sheets("Feuil2")
il te faut écrire quelque chose comme :
With Sheets("Feuil2")
MsgBox Evaluate("SUM(" & .Name & "!" & MaR.Address(0, 0) & ")")
End With
"DesseJ" <DesseJ@caramail.com> a écrit dans le message de groupe de discussion :
ea3fc3e2-a1fd-41c6-820e-cb95a002fb64@r24g2000yqd.googlegroups.com...
Merci MichDenis pour les précisions.
je n'avais pas été assez explicite, le code était dans une feuille
Module et non de Feuille et j'essayais de corriger la dernière ligne
du code plus bas
Merci Stéphane
Sub MonTest()
Dim FeuilleCalc As Worksheet
Dim MaR As Range
Set FeuilleCalc = Worksheets("Feuil1")
Set MaR = FeuilleCalc.Range("A1:A10")
With Sheets("Feuil2")
.Activate
MsgBox Evaluate("SUM(Feuil1!" & MaR.Address(0, 0) & ")")
'========> OK
[B2].FormulaLocal = "=SOMME(" & MaR.Address(0, 0) & ")"
'========> OK
MsgBox Evaluate("SUM(" & MaR.Address(0, 0) & ")") '========>
Faux
End With
End Sub
Si la commande est dans un module standard, elle additionnera la plage A1:A10 de la feuil1, comme tu as défini tes variables même si la feuille active n'est pas la Feuil1 MsgBox Evaluate("SUM(" & MaR.Address(0, 0) & ")")
Cependant, si tu veux que "MaR.Address(0, 0)" fasse référence à la feuil2 et de ce fait tienne compte du With Sheets("Feuil2") il te faut écrire quelque chose comme :
With Sheets("Feuil2") MsgBox Evaluate("SUM(" & .Name & "!" & MaR.Address(0, 0) & ")") End With
"DesseJ" a écrit dans le message de groupe de discussion :
Merci MichDenis pour les précisions.
je n'avais pas été assez explicite, le code était dans une feuille Module et non de Feuille et j'essayais de corriger la dernière ligne du code plus bas
Merci Stéphane
Sub MonTest() Dim FeuilleCalc As Worksheet Dim MaR As Range Set FeuilleCalc = Worksheets("Feuil1") Set MaR = FeuilleCalc.Range("A1:A10") With Sheets("Feuil2") .Activate MsgBox Evaluate("SUM(Feuil1!" & MaR.Address(0, 0) & ")") '========> OK [B2].FormulaLocal = "=SOMME(" & MaR.Address(0, 0) & ")" '========> OK MsgBox Evaluate("SUM(" & MaR.Address(0, 0) & ")") '========> Faux End With End Sub
DesseJ
Merci Denis pour tes explications comme d'habitude très claires.
Bonne journée Stéphane
Merci Denis pour tes explications comme d'habitude très claires.