Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

syntaxe avec zones nommées

  • Initiateur de la discussion Initiateur de la discussion dmc
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dmc

XLDnaute Occasionnel
Bonjour le Forum
la formule suivante me renvoie une erreur :
If WorksheetFunction.SumProduct(((Names("d_coque_PK_moteur") = "¤¤") + (Names("d_coque_PK_moteur") = "PK")) * (Names("d_choix") > 0)) > 1 Then cestbon=true else cestbon=false
bien entendu, les plages d_coque_PK_moteur et "d_choix" sont définies dans le classeur avec le meme nombre d'éléments.
pouvez-vous m'indiquer où je me plante ? je pense à une faute de syntaxe.
Merci de vous y interesser😕
 
Re : syntaxe avec zones nommées

Bonjour à tous

dmc
Essayes avec cette syntaxe
[d_coque_PK_moteur] et [d_choix]
Je te laisse modifier ta formule en conséquence ( faute de pièce jointe pour tester...)
Voir exemple ci-dessous
Code:
Sub testnoms()
Cells.Clear
Range("A1").Name = "toto": Range("A1") = 10
MsgBox 5 * [toto]
[B1].FormulaR1C1 = "=SUM(123," & [toto] & ")"
End Sub
 
Re : syntaxe avec zones nommées

Bonjour Staple, et bon dimanche
j'ai testé, et même la formule ci-après, simplifiée, me donne un message d'erreur "incompatibilité de type":
If WorksheetFunction.SumProduct((([A2:A6] = "¤¤") + ([A2:A6] = "PK")) * ([g2:g6] > 0)) > 1 Then etc
Donc je sèche.
pour tester, un fichier vide suffit, c'est pourquoi je n'en ai pas joint
cordialement.
DMC
 
Re : syntaxe avec zones nommées

re STaple
Pour complément d'info, je précise que sous excel la formule matricielle suivante fonctionne :
=SOMMEPROD((($A$2:$A$6="¤¤")+($A$2:$A$6="PK"))*($G$2:$G$6>0))
mais j'ai besoin de l'utiliser en VBA.
Peut-être que c'est son côté "matriciel" qui entraine ce problème à l'exécution ?
Cordialement
 
Re : syntaxe avec zones nommées

Bonjour.
Peut-être que c'est son côté "matriciel" qui entraine ce problème à l'exécution ?
Exactement. Comment voulez vous que VBA les évalue ? Surtout que là le SOMMEPROD ne fait rien d'autre que restituer la somme des lignes de l'unique paramètre matriciel qu'on lui passe.
Récupérez [d_coque_PK_moteur].Value et [d_choix].Value dans des tableaux de Variant et explorez les au moyen d'une boucle.
À +
 
Dernière édition:
Re : syntaxe avec zones nommées

Bonjour Dranreb
Est-ce que cela signifie que VBA ne peut pas évaluer des formules matricielles?
Mais que fait alors WorksheetFunction.SumProduct
Cordialement
😛
 
Re : syntaxe avec zones nommées

Re, Bonjour Dranreb

dmc
Je ne vois pas l'intérêt de tester un code sur un fichier vide surtout si il existe sur un disque dur (notamment le tien) un fichier déjà prêt avec le code VBA disfonctionnel qu'il suffit de joindre dans la discussion.

Cela permets en plus à tous de faire des tests sur le même fichier donc dans des conditions similaires pour tous, non ? 😉
 
Re : syntaxe avec zones nommées

Il calcule la somme des produits des colonnes passées en paramètre. Si on ne lui en passe qu'une il en fait juste la somme.
On peut lui passer en paramètre des plages ou des tableaux de Variant, il accepte les deux.
À +

Bonjour Stapple. Oui, il cumule à sa flemme un sacré culot !
 
Dernière édition:
Re : syntaxe avec zones nommées

Bonjour au Forum, à Staple, Dranreb et David84
Dranreb est un peu raide : flemme & culot dans une même phrase, 😕je ne pense mériter aucun de ces qualificatifs.
Cela m'a un poil chatouillé, voire gratté, pas loin de la démangeaison😡. Mais compte tenu de ton implication sur ce site, de très haute qualité (c'est sincère), j'imagine que ce ton d'instituteur moralisateur des années 30 est à mettre sur le compte de nos différences manifestes de niveau (ça l'est moins).
Pour ma part, j'ai mis de la crême contre l'urticaire, et c'est passé (3 jours de soins quand même !).
Voila, c'est dit, moi j'efface et on reprend. OK ?😎
Je maintiens qu'une simple recopie dans un fichier vide aurait suffi.
Je joins un fichier "quasi" vide, dans lequel j'ai expliqué le problème que je rencontre avec SumProduct sous VB.
Le code est en place dans un "Worksheet_Change", code expurgé pour ne focaliser que sur cette instruction.
Je vous remercie d'avance de vous y pencher.
Cordialement à tous🙂
 

Pièces jointes

Dernière édition:
Re : syntaxe avec zones nommées

Bonjour à tous

dmc:
Merci d'avoir pris en compte ma remarque et d'avoir joint un fichier exemple.
(que je regarderais ce soir car là je dois retourner bosser d'ici un 1/4 d'heure)

NB:
Je maintiens qu'une simple recopie dans un fichier vide aurait suffi.
Inexact, car dans un fichier vide, il n'existe pas de zones nommées 😉
Et c'est simplement normal et plus simple que ce soit le demandeur qui fournisse l'exemple (comme expliqué plus bas)
 
Dernière édition:
Re : syntaxe avec zones nommées

Bonjour.
Le plus simple est de suivre la suggestion de david84:
VB:
If Evaluate("SUMPRODUCT((($A$2:$A$28=""¤¤"")+($A$2:$A$28=""PK""))*($G$2:$G$28>0))") > 1 Then
Des nom de plage au lieu de leurs adresses devraient marcher aussi.
Votre classeur joint m'a permis de voir le contexte et de vérifier que "la formule fonctionne" comme le dit votre MsgBox, mais ne conditionne pour l'instant rien d'autre, puis qu'il y a un End If derrière.
Pour mes deux mot laconiques, que je suis maintenant mortifié d'avoir écrits, inspiré par une colère certes bien plus brève que vos trois jours à les digérer, je ne vous demande pas d'accepter mes excuses, mais de m'accorder votre pardon.
Cordialement.
 
Re : syntaxe avec zones nommées

re-Bonjour Dranreb
Bon, moi je ne suis pas toujours ni commode, ni très clair, voire ni trop travailleur ! Merci donc, je craignais qu'on en reste sur une discorde, que j'aurais réellement regrettée.😎😎En plus, pour les 3 jours, j'ai peut-être un tout petit peu renforcé le trait !
Je sens que je vais passer par ce fameux Evaluate, néanmoins, je me demandais si il serait plus performant de transférer le contenu de mes plages (ou cellules) dans une table à une dimension, pour me passer de cet Evaluate et travailler directement avec SumProduct via VB.
Qu'en pensez-vous ?
Pour l'"inutilité" de ce test, elle est bien évidemment temporaire, mon objectif est d'obtenir un fonctionnement du type boutons-radio, si une réponse est sélectionnée, les autres sont dé-sélectionnées.
Merci de continuer à m'aider, en particulier sur la meilleure méthode de transfert des données d'une plage de cellules vers une table de type variant, ainsi que le suggérait David84 il me semble.
Amitiés (sincères)
 
Re : syntaxe avec zones nommées

Bonjour Staple1600
Pas de problème, ce sera sympa de regarder mon petit souci (recherche de performance dans les controles de saisie)
Attention, pour ne pas prendre de risque, le fichier exemple n'a pas de zones nommées, un problème à la fois! (il me semble que c'est ce que dit la Charte, non?)
Amicalement
DMC
 
Re : syntaxe avec zones nommées

Dans la mesure ou il faudrait de toute façon une boucle pour évaluer des conditions logiques converties en nombre, je ne vois pas bien l'intérêt de soumettre les tableaux obtenus à SumProduct: autant sommer soi même dans la boucle en passant. Difficile de dire s'il serait plus performant d'évaluer ça à l'aide d'une boucle sur 2 tableaux à 2 dimensions (la deuxième étant 1 to 1 pour une seule colonne chacun) chargé en une fois des Value des plages impliquées. Ce ne serait déjà pas plus simple en nombre d'instructions, mais ça ne serait pas mal non plus. Reporter la décision de procéder comme ça au cas ou d'autre traitements seraient également à effectuer sur les valeurs des plages. Ne pas hésiter, le cas échéant, à charger carrément tout en un seul tableau de Variant.
Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

N
Réponses
0
Affichages
2 K
N
L
Réponses
5
Affichages
2 K
lumiexcel
L
A
Réponses
1
Affichages
1 K
aurelp
A
P
Réponses
1
Affichages
1 K
Pseudoto
P
O
Réponses
2
Affichages
2 K
oracle7
O
L
Réponses
5
Affichages
28 K
L
I
  • Question Question
Réponses
28
Affichages
3 K
A
Réponses
0
Affichages
760
A
N
Réponses
2
Affichages
830
N
E
Réponses
2
Affichages
834
E
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…