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
Denis Michon
Bonjour Bourby,
Tu remplace "ThisWorkbook.Name" par le nom du classeur où se trouvent ces "Plages nommées"
Dim A As Double
With Workbooks(ThisWorkbook.Name) A = Intersect(Range(.Names("Plage1").RefersTo), Range(.Names("Plage3").RefersTo)) _ - Intersect(Range(.Names("Plage2").RefersTo), Range(.Names("Plage4").RefersTo)) End With
Attention aux coupures du service de messagerie !
Salutations!
"Bourby" a écrit dans le message de news: Bonjour,
j'ai un classeur1 avec deux plages nommées Plage1 et Plage2 ("verticales"), et deux autres Plage3 et Plage4 ("horizontales").
Dans un Classeur2, je voudrais récupérer grâce à une macro la valeur qu'on écrirait en Excel: = Plage1 Plage3 - Plage2 Plage4
Comment puis-je écrire cela proprement?
Merci d'avance pour votre aide.
Bourby
Bonjour Bourby,
Tu remplace "ThisWorkbook.Name" par le nom du classeur où se trouvent ces "Plages nommées"
Dim A As Double
With Workbooks(ThisWorkbook.Name)
A = Intersect(Range(.Names("Plage1").RefersTo), Range(.Names("Plage3").RefersTo)) _
- Intersect(Range(.Names("Plage2").RefersTo), Range(.Names("Plage4").RefersTo))
End With
Attention aux coupures du service de messagerie !
Salutations!
"Bourby" <nospam-jchfer@wanadoo.fr> a écrit dans le message de news:ewTWRxFiDHA.2500@TK2MSFTNGP09.phx.gbl...
Bonjour,
j'ai un classeur1 avec deux plages nommées Plage1 et Plage2 ("verticales"),
et deux autres Plage3 et Plage4 ("horizontales").
Dans un Classeur2, je voudrais récupérer grâce à une macro la valeur
qu'on écrirait en Excel:
= Plage1 Plage3 - Plage2 Plage4
Tu remplace "ThisWorkbook.Name" par le nom du classeur où se trouvent ces "Plages nommées"
Dim A As Double
With Workbooks(ThisWorkbook.Name) A = Intersect(Range(.Names("Plage1").RefersTo), Range(.Names("Plage3").RefersTo)) _ - Intersect(Range(.Names("Plage2").RefersTo), Range(.Names("Plage4").RefersTo)) End With
Attention aux coupures du service de messagerie !
Salutations!
"Bourby" a écrit dans le message de news: Bonjour,
j'ai un classeur1 avec deux plages nommées Plage1 et Plage2 ("verticales"), et deux autres Plage3 et Plage4 ("horizontales").
Dans un Classeur2, je voudrais récupérer grâce à une macro la valeur qu'on écrirait en Excel: = Plage1 Plage3 - Plage2 Plage4
La méthode Evaluate fonctionne très bien avec l'opérateur d'intersection : MsgBox [Plage1 Plage3 - Plage2 Plage4]
AV
"Bourby" a écrit dans le message news:
Bonjour,
j'ai un classeur1 avec deux plages nommées Plage1 et Plage2 ("verticales"), et deux autres Plage3 et Plage4 ("horizontales").
Dans un Classeur2, je voudrais récupérer grâce à une macro la valeur qu'on écrirait en Excel:> Comment puis-je écrire cela proprement?
Merci d'avance pour votre aide.
Bourby
Bourby
bonsoir,
merci beaucoup à AV et Denis Michon pour ces réponses.
Evaluate me plait bien, parce que le code est court et facile à lire; mais il me sempble que dans mon cas, il faudra écrire ....=[Classeur1!Plage1 Classeur1!Plage3 - Classeur1!Plage2 Classeur1!Plage4] et comme je fais ouvrir n classeurs dans une boucle, Classeur1 est en fait une variable texte contenant un nom de fichier, et là je commence à m'embrouiller dans des trucs du genre variableClasseur & "!" & "Plage3", ..... Ce n'est plus court ni facile, et en plus je me plante.
Donc je passe à intersect, mais ça fait tout de suite 3 lignes par formule, et j'ai un assez grand nombre de formules.
Je me demandais si il y avait moyen de rester avec Evaluate et un code à peu près compact et compréhensible ? ?
La méthode Evaluate fonctionne très bien avec l'opérateur d'intersection : MsgBox [Plage1 Plage3 - Plage2 Plage4]
AV
"Bourby" a écrit dans le message news:
Bonjour,
j'ai un classeur1 avec deux plages nommées Plage1 et Plage2 ("verticales"),
et deux autres Plage3 et Plage4 ("horizontales").
Dans un Classeur2, je voudrais récupérer grâce à une macro la valeur qu'on écrirait en Excel:> Comment puis-je écrire cela proprement?
Merci d'avance pour votre aide.
Bourby
bonsoir,
merci beaucoup à AV et Denis Michon pour ces réponses.
Evaluate me plait bien, parce que le code est court et facile à lire;
mais il me sempble que dans mon cas, il faudra écrire
....=[Classeur1!Plage1 Classeur1!Plage3 - Classeur1!Plage2 Classeur1!Plage4]
et comme je fais ouvrir n classeurs dans une boucle, Classeur1 est en fait
une
variable texte contenant un nom de fichier, et là je commence à
m'embrouiller dans des
trucs du genre variableClasseur & "!" & "Plage3", .....
Ce n'est plus court ni facile, et en plus je me plante.
Donc je passe à intersect, mais ça fait tout de suite 3 lignes par
formule,
et j'ai un assez grand nombre de formules.
Je me demandais si il y avait moyen de rester avec Evaluate et un code à peu
près
compact et compréhensible ? ?
Merci d'avance pour la suite de vos lumières.
JChF alias Bourby
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message news:
blg35n$vuv$1@news-reader5.wanadoo.fr...
merci beaucoup à AV et Denis Michon pour ces réponses.
Evaluate me plait bien, parce que le code est court et facile à lire; mais il me sempble que dans mon cas, il faudra écrire ....=[Classeur1!Plage1 Classeur1!Plage3 - Classeur1!Plage2 Classeur1!Plage4] et comme je fais ouvrir n classeurs dans une boucle, Classeur1 est en fait une variable texte contenant un nom de fichier, et là je commence à m'embrouiller dans des trucs du genre variableClasseur & "!" & "Plage3", ..... Ce n'est plus court ni facile, et en plus je me plante.
Donc je passe à intersect, mais ça fait tout de suite 3 lignes par formule, et j'ai un assez grand nombre de formules.
Je me demandais si il y avait moyen de rester avec Evaluate et un code à peu près compact et compréhensible ? ?
La méthode Evaluate fonctionne très bien avec l'opérateur d'intersection : MsgBox [Plage1 Plage3 - Plage2 Plage4]
AV
"Bourby" a écrit dans le message news:
Bonjour,
j'ai un classeur1 avec deux plages nommées Plage1 et Plage2 ("verticales"),
et deux autres Plage3 et Plage4 ("horizontales").
Dans un Classeur2, je voudrais récupérer grâce à une macro la valeur qu'on écrirait en Excel:> Comment puis-je écrire cela proprement?
Merci d'avance pour votre aide.
Bourby
Denis Michon
Bonjour Bourby,
Transforme ce que je t'ai donné en fonction que tu copies dans un module standard, et lorsque tu as besoin de la fonction, tu peux l'appeler dans n'importe quelle procédure de cette façon et aussi souvent que tu veux.
A = TrouverValeur("NomDuClasseur")
'---------------------- Function TrouverValeur(NomClasseur As String)
With Workbooks(NomClasseur) TrouverValeur = Intersect(Range(.Names("Plage1").RefersTo), Range(.Names("Plage3").RefersTo)) _ - Intersect(Range(.Names("Plage2").RefersTo), Range(.Names("Plage4").RefersTo)) End With
End Function '----------------------
Sinon, il y a toujours "Evaluate" ... c'est pas mal !
;-)
Salutations!
"Bourby" a écrit dans le message de news: bonsoir,
merci beaucoup à AV et Denis Michon pour ces réponses.
Evaluate me plait bien, parce que le code est court et facile à lire; mais il me sempble que dans mon cas, il faudra écrire ....=[Classeur1!Plage1 Classeur1!Plage3 - Classeur1!Plage2 Classeur1!Plage4] et comme je fais ouvrir n classeurs dans une boucle, Classeur1 est en fait une variable texte contenant un nom de fichier, et là je commence à m'embrouiller dans des trucs du genre variableClasseur & "!" & "Plage3", ..... Ce n'est plus court ni facile, et en plus je me plante.
Donc je passe à intersect, mais ça fait tout de suite 3 lignes par formule, et j'ai un assez grand nombre de formules.
Je me demandais si il y avait moyen de rester avec Evaluate et un code à peu près compact et compréhensible ? ?
La méthode Evaluate fonctionne très bien avec l'opérateur d'intersection : MsgBox [Plage1 Plage3 - Plage2 Plage4]
AV
"Bourby" a écrit dans le message news:
Bonjour,
j'ai un classeur1 avec deux plages nommées Plage1 et Plage2 ("verticales"),
et deux autres Plage3 et Plage4 ("horizontales").
Dans un Classeur2, je voudrais récupérer grâce à une macro la valeur qu'on écrirait en Excel:> Comment puis-je écrire cela proprement?
Merci d'avance pour votre aide.
Bourby
Bonjour Bourby,
Transforme ce que je t'ai donné en fonction que tu copies dans un module standard, et lorsque tu as besoin de la
fonction, tu peux l'appeler dans n'importe quelle procédure de cette façon et aussi souvent que tu veux.
A = TrouverValeur("NomDuClasseur")
'----------------------
Function TrouverValeur(NomClasseur As String)
With Workbooks(NomClasseur)
TrouverValeur = Intersect(Range(.Names("Plage1").RefersTo), Range(.Names("Plage3").RefersTo)) _
- Intersect(Range(.Names("Plage2").RefersTo), Range(.Names("Plage4").RefersTo))
End With
End Function
'----------------------
Sinon, il y a toujours "Evaluate" ... c'est pas mal !
;-)
Salutations!
"Bourby" <nospam-jchfer@wanadoo.fr> a écrit dans le message de news:eZgw9sQiDHA.3328@tk2msftngp13.phx.gbl...
bonsoir,
merci beaucoup à AV et Denis Michon pour ces réponses.
Evaluate me plait bien, parce que le code est court et facile à lire;
mais il me sempble que dans mon cas, il faudra écrire
....=[Classeur1!Plage1 Classeur1!Plage3 - Classeur1!Plage2 Classeur1!Plage4]
et comme je fais ouvrir n classeurs dans une boucle, Classeur1 est en fait
une
variable texte contenant un nom de fichier, et là je commence à
m'embrouiller dans des
trucs du genre variableClasseur & "!" & "Plage3", .....
Ce n'est plus court ni facile, et en plus je me plante.
Donc je passe à intersect, mais ça fait tout de suite 3 lignes par
formule,
et j'ai un assez grand nombre de formules.
Je me demandais si il y avait moyen de rester avec Evaluate et un code à peu
près
compact et compréhensible ? ?
Merci d'avance pour la suite de vos lumières.
JChF alias Bourby
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message news:
blg35n$vuv$1@news-reader5.wanadoo.fr...
Transforme ce que je t'ai donné en fonction que tu copies dans un module standard, et lorsque tu as besoin de la fonction, tu peux l'appeler dans n'importe quelle procédure de cette façon et aussi souvent que tu veux.
A = TrouverValeur("NomDuClasseur")
'---------------------- Function TrouverValeur(NomClasseur As String)
With Workbooks(NomClasseur) TrouverValeur = Intersect(Range(.Names("Plage1").RefersTo), Range(.Names("Plage3").RefersTo)) _ - Intersect(Range(.Names("Plage2").RefersTo), Range(.Names("Plage4").RefersTo)) End With
End Function '----------------------
Sinon, il y a toujours "Evaluate" ... c'est pas mal !
;-)
Salutations!
"Bourby" a écrit dans le message de news: bonsoir,
merci beaucoup à AV et Denis Michon pour ces réponses.
Evaluate me plait bien, parce que le code est court et facile à lire; mais il me sempble que dans mon cas, il faudra écrire ....=[Classeur1!Plage1 Classeur1!Plage3 - Classeur1!Plage2 Classeur1!Plage4] et comme je fais ouvrir n classeurs dans une boucle, Classeur1 est en fait une variable texte contenant un nom de fichier, et là je commence à m'embrouiller dans des trucs du genre variableClasseur & "!" & "Plage3", ..... Ce n'est plus court ni facile, et en plus je me plante.
Donc je passe à intersect, mais ça fait tout de suite 3 lignes par formule, et j'ai un assez grand nombre de formules.
Je me demandais si il y avait moyen de rester avec Evaluate et un code à peu près compact et compréhensible ? ?
La méthode Evaluate fonctionne très bien avec l'opérateur d'intersection : MsgBox [Plage1 Plage3 - Plage2 Plage4]
AV
"Bourby" a écrit dans le message news:
Bonjour,
j'ai un classeur1 avec deux plages nommées Plage1 et Plage2 ("verticales"),
et deux autres Plage3 et Plage4 ("horizontales").
Dans un Classeur2, je voudrais récupérer grâce à une macro la valeur qu'on écrirait en Excel:> Comment puis-je écrire cela proprement?
Merci d'avance pour votre aide.
Bourby
AV
|..... variable texte contenant un nom de fichier, et là je commence à | m'embrouiller dans des | trucs du genre variableClasseur & "!" & "Plage3", ..... | Ce n'est plus court ni facile, et en plus je me plante.
Avec le nom du classeur variable :
Sub zz_Intersect_Avec_Var() wbk = "Classeur2" MsgBox Evaluate(wbk & "!plage1 " & wbk & "!Plage3 - " & wbk & "!Plage2 " & wbk & "!Plage4") End Sub
AV
"Bourby" a écrit dans le message news:
bonsoir,
merci beaucoup à AV et Denis Michon pour ces réponses.
Evaluate me plait bien, parce que le code est court et facile à lire; mais il me sempble que dans mon cas, il faudra écrire ....=[Classeur1!Plage1 Classeur1!Plage3 - Classeur1!Plage2 Classeur1!Plage4] et comme je fais ouvrir n classeurs dans une boucle, Classeur1 est en fait une variable texte contenant un nom de fichier, et là je commence à m'embrouiller dans des trucs du genre variableClasseur & "!" & "Plage3", ..... Ce n'est plus court ni facile, et en plus je me plante.
Donc je passe à intersect, mais ça fait tout de suite 3 lignes par formule, et j'ai un assez grand nombre de formules.
Je me demandais si il y avait moyen de rester avec Evaluate et un code à peu près compact et compréhensible ? ?
La méthode Evaluate fonctionne très bien avec l'opérateur d'intersection : MsgBox [Plage1 Plage3 - Plage2 Plage4]
AV
"Bourby" a écrit dans le message news:
Bonjour,
j'ai un classeur1 avec deux plages nommées Plage1 et Plage2 ("verticales"),
et deux autres Plage3 et Plage4 ("horizontales").
Dans un Classeur2, je voudrais récupérer grâce à une macro la valeur qu'on écrirait en Excel:> Comment puis-je écrire cela proprement?
Merci d'avance pour votre aide.
Bourby
|..... variable texte contenant un nom de fichier, et là je commence à
| m'embrouiller dans des
| trucs du genre variableClasseur & "!" & "Plage3", .....
| Ce n'est plus court ni facile, et en plus je me plante.
Avec le nom du classeur variable :
Sub zz_Intersect_Avec_Var()
wbk = "Classeur2"
MsgBox Evaluate(wbk & "!plage1 " & wbk & "!Plage3 - " & wbk & "!Plage2 " & wbk &
"!Plage4")
End Sub
AV
"Bourby" <nospam-jchfer@wanadoo.fr> a écrit dans le message news:
eZgw9sQiDHA.3328@tk2msftngp13.phx.gbl...
bonsoir,
merci beaucoup à AV et Denis Michon pour ces réponses.
Evaluate me plait bien, parce que le code est court et facile à lire;
mais il me sempble que dans mon cas, il faudra écrire
....=[Classeur1!Plage1 Classeur1!Plage3 - Classeur1!Plage2 Classeur1!Plage4]
et comme je fais ouvrir n classeurs dans une boucle, Classeur1 est en fait
une
variable texte contenant un nom de fichier, et là je commence à
m'embrouiller dans des
trucs du genre variableClasseur & "!" & "Plage3", .....
Ce n'est plus court ni facile, et en plus je me plante.
Donc je passe à intersect, mais ça fait tout de suite 3 lignes par
formule,
et j'ai un assez grand nombre de formules.
Je me demandais si il y avait moyen de rester avec Evaluate et un code à peu
près
compact et compréhensible ? ?
Merci d'avance pour la suite de vos lumières.
JChF alias Bourby
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message news:
blg35n$vuv$1@news-reader5.wanadoo.fr...
|..... variable texte contenant un nom de fichier, et là je commence à | m'embrouiller dans des | trucs du genre variableClasseur & "!" & "Plage3", ..... | Ce n'est plus court ni facile, et en plus je me plante.
Avec le nom du classeur variable :
Sub zz_Intersect_Avec_Var() wbk = "Classeur2" MsgBox Evaluate(wbk & "!plage1 " & wbk & "!Plage3 - " & wbk & "!Plage2 " & wbk & "!Plage4") End Sub
AV
"Bourby" a écrit dans le message news:
bonsoir,
merci beaucoup à AV et Denis Michon pour ces réponses.
Evaluate me plait bien, parce que le code est court et facile à lire; mais il me sempble que dans mon cas, il faudra écrire ....=[Classeur1!Plage1 Classeur1!Plage3 - Classeur1!Plage2 Classeur1!Plage4] et comme je fais ouvrir n classeurs dans une boucle, Classeur1 est en fait une variable texte contenant un nom de fichier, et là je commence à m'embrouiller dans des trucs du genre variableClasseur & "!" & "Plage3", ..... Ce n'est plus court ni facile, et en plus je me plante.
Donc je passe à intersect, mais ça fait tout de suite 3 lignes par formule, et j'ai un assez grand nombre de formules.
Je me demandais si il y avait moyen de rester avec Evaluate et un code à peu près compact et compréhensible ? ?
La méthode Evaluate fonctionne très bien avec l'opérateur d'intersection : MsgBox [Plage1 Plage3 - Plage2 Plage4]
AV
"Bourby" a écrit dans le message news:
Bonjour,
j'ai un classeur1 avec deux plages nommées Plage1 et Plage2 ("verticales"),
et deux autres Plage3 et Plage4 ("horizontales").
Dans un Classeur2, je voudrais récupérer grâce à une macro la valeur qu'on écrirait en Excel:> Comment puis-je écrire cela proprement?
Merci d'avance pour votre aide.
Bourby
Bourby
bonjour,
merci à tous les deux; maintenant ça marche....
Bourby
"AV" a écrit dans le message news: blj10v$o0g$
|..... variable texte contenant un nom de fichier, et là je commence à | m'embrouiller dans des | trucs du genre variableClasseur & "!" & "Plage3", ..... | Ce n'est plus court ni facile, et en plus je me plante.
merci beaucoup à AV et Denis Michon pour ces réponses.
Evaluate me plait bien, parce que le code est court et facile à lire; mais il me sempble que dans mon cas, il faudra écrire ....=[Classeur1!Plage1 Classeur1!Plage3 - Classeur1!Plage2 Classeur1!Plage4]
et comme je fais ouvrir n classeurs dans une boucle, Classeur1 est en fait
une variable texte contenant un nom de fichier, et là je commence à m'embrouiller dans des trucs du genre variableClasseur & "!" & "Plage3", ..... Ce n'est plus court ni facile, et en plus je me plante.
Donc je passe à intersect, mais ça fait tout de suite 3 lignes par formule, et j'ai un assez grand nombre de formules.
Je me demandais si il y avait moyen de rester avec Evaluate et un code à peu
La méthode Evaluate fonctionne très bien avec l'opérateur d'intersection :
MsgBox [Plage1 Plage3 - Plage2 Plage4]
AV
"Bourby" a écrit dans le message news:
Bonjour,
j'ai un classeur1 avec deux plages nommées Plage1 et Plage2 ("verticales"),
et deux autres Plage3 et Plage4 ("horizontales").
Dans un Classeur2, je voudrais récupérer grâce à une macro la valeur qu'on écrirait en Excel:> Comment puis-je écrire cela proprement?
Merci d'avance pour votre aide.
Bourby
bonjour,
merci à tous les deux; maintenant ça marche....
Bourby
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message news:
blj10v$o0g$1@news-reader1.wanadoo.fr...
|..... variable texte contenant un nom de fichier, et là je commence à
| m'embrouiller dans des
| trucs du genre variableClasseur & "!" & "Plage3", .....
| Ce n'est plus court ni facile, et en plus je me plante.
"Bourby" <nospam-jchfer@wanadoo.fr> a écrit dans le message news:
eZgw9sQiDHA.3328@tk2msftngp13.phx.gbl...
bonsoir,
merci beaucoup à AV et Denis Michon pour ces réponses.
Evaluate me plait bien, parce que le code est court et facile à lire;
mais il me sempble que dans mon cas, il faudra écrire
....=[Classeur1!Plage1 Classeur1!Plage3 - Classeur1!Plage2
Classeur1!Plage4]
et comme je fais ouvrir n classeurs dans une boucle, Classeur1 est en
fait
une
variable texte contenant un nom de fichier, et là je commence à
m'embrouiller dans des
trucs du genre variableClasseur & "!" & "Plage3", .....
Ce n'est plus court ni facile, et en plus je me plante.
Donc je passe à intersect, mais ça fait tout de suite 3 lignes par
formule,
et j'ai un assez grand nombre de formules.
Je me demandais si il y avait moyen de rester avec Evaluate et un code à
peu
près
compact et compréhensible ? ?
Merci d'avance pour la suite de vos lumières.
JChF alias Bourby
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message news:
blg35n$vuv$1@news-reader5.wanadoo.fr...
|..... variable texte contenant un nom de fichier, et là je commence à | m'embrouiller dans des | trucs du genre variableClasseur & "!" & "Plage3", ..... | Ce n'est plus court ni facile, et en plus je me plante.
merci beaucoup à AV et Denis Michon pour ces réponses.
Evaluate me plait bien, parce que le code est court et facile à lire; mais il me sempble que dans mon cas, il faudra écrire ....=[Classeur1!Plage1 Classeur1!Plage3 - Classeur1!Plage2 Classeur1!Plage4]
et comme je fais ouvrir n classeurs dans une boucle, Classeur1 est en fait
une variable texte contenant un nom de fichier, et là je commence à m'embrouiller dans des trucs du genre variableClasseur & "!" & "Plage3", ..... Ce n'est plus court ni facile, et en plus je me plante.
Donc je passe à intersect, mais ça fait tout de suite 3 lignes par formule, et j'ai un assez grand nombre de formules.
Je me demandais si il y avait moyen de rester avec Evaluate et un code à peu