|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : juillet 2011 Messages : 16 ![]() |
Bonjour,
j'ai réalisé une macro dernièrment qui permet de colorier le choix que l'on fait dans un menu déroulant (datavalidation). Il ne sagit pas de format conditionnel mais bien de Datavalidation avec dans certain cas l'emploi de la fonction "indirect" dans la datavalidation. Cette macro fonctionne très bien mais quand le fichier est envoyé à l'étranger. Elle bug uniquement quand la datavalidation utilise cette fameuse fonction "indirect". Après analyse avec mes collègues Espagnol, la fonction indirect se traduit par "indirecto". La ligne de commande que j'utilise interprète mal le tout puisque la fonction est comprise, je pense, en mode texte et non pas dynamique. La voici: Code :
Set References = Range(ActiveCell.Validation.Formula1) Merci d'avance aux "king" de VBA-Excel de votre aide. A toute fin utilse, voici la macro au complet: Code :
|
||
|
|
01
|
|
|
#2 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Peut-être comme ceci (non testé) : Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
10
|
|
|
#3 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : juillet 2011 Messages : 16 ![]() |
Merci Daniel,
J'ai bien compris le principe mais malheureusement cela ne fonctionne pas. ![]() Mais là je ne comprend pas pourquoi. Si tu peux encore m'aider, j'apprécierai fortement. A toute fin utile j'ai mis le fichier XLS en question et la macro en fichier TXT pour montrer mes bonnes intentions. Merci encore |
|
|
11
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Bon, tes fichiers ont bien aidé à décanter le problème. Ma solution ne pouvait pas fonctionner; j'étais parti sur des formules commençant par "=INDIRECT". Par contre, ta macro se déclenche à chaque fois qu'on entre une donnée ou une formule dans une cellule, quelle que soit la feuille. Est-ce bien ce que tu veux ? Où sont les listes déroulantes (validation de données) contenant les formules incriminées ?
__________________
Cordialement. Daniel Citation:
|
|
|
10
|
|
|
#5 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : juillet 2011 Messages : 16 ![]() |
Effectivement le but est que la macro se déclanche à chaque fois que l'on change qqchose dans l'onglet "Configurator" et en particulier dans le range D9:D25.
Les fonction indirectes sont en D10, D13, D14, D17, D18, D19, D22, D23. Tu auras donc compris que les fonctions " SPLIT et JOIN" poseraient des problèmes puisque la fonction Indirect n'est pas utilisée pour chaque cellule du range (D9:D25) Les listes déroulentes se retrouvent respectivement dans les onglets "Specific configuration" et "Common configuration". Chaque encadrement specifie une zone nommée dont le nom (pour info) se trouve en bleu en dessous du cadre. Merci encore pour ton aide. |
|
|
00
|
|
|
#6 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
C'est difficile pour moi de tester... J'ai mis "INDIRECTO" par VBA dans la formule. Utilise le code suivant la formule avant et après modification s'affichera quand tu modifieras une liste de la feuille "Configurator" :
Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#7 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : juillet 2011 Messages : 16 ![]() |
Merci Daniel,
on commence à touché au but. Mais comme évoqué au début, ce fichier va tourner sur toutes les versions de Excel (World wide). Chinois, Français, Espagnol, Allemand, ... Donc la solution de remplacer Indirecto par Indirect me semble lourd si on doit faire l'excercice pour toutes les langues Excel. Sans compter sur la version Chinoise. Avez-vous une autre idée.
|
|
|
00
|
|
|
#8 |
![]() ![]() Alain GerardConsultant informatique Inscription : mai 2005 Messages : 3 675 ![]() |
Bonjour à tous.
J'ai un gros doute quand au fond de ce problème. Les formules ne sont pas stockées en format texte dans Excel. Toute formule valide dans une langue sera automatiquement traduite si le fichier est ouvert sous un Excel d'une autre langue. Je passe régulièrement des fichier entre le boulot (Anglais) et chez moi (Français) et n'ai pas de problème.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres! Pensez aussi à voter pour les réponses qui vous ont aidés. ------------ Je dois beaucoup de mes connaissances à mes erreurs! |
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : juillet 2011 Messages : 16 ![]() |
J'ai modifié ta proposition par ceci.
Mais je pense que cela ne fonctionne qu'avec un certain nombre de pays limité. En effet, cela marche uniquement si la traduction de indirect dans une autre langue commance par INDIR. Mais ceci à l'avantage de fonctionner même si la datavalidation ne fait pas appel à la fonction Indirect. Je suis ouvert à tous commentaires ou autres propositions. Code :
Merci d'avance |
||
|
|
00
|
|
|
#10 |
![]() ![]() Alain GerardConsultant informatique Inscription : mai 2005 Messages : 3 675 ![]() |
Je corrige ce que j'ai dit plus haut
Les formules dans les cellules seront traduites. Il est possible que, dans les critères de validation, les formules soient stockées en texte. Il reste donc la solution de mettre les formules dont on a besoin dans une feuille cachée et d'aller lire leur contenu pour l'écrire dans les critères de validation.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres! Pensez aussi à voter pour les réponses qui vous ont aidés. ------------ Je dois beaucoup de mes connaissances à mes erreurs! |
|
|
10
|
|
|
#11 | ||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Pour Duboisgs :
Citation:
Rétablis le code comme il était. Le but de ma modification est de remplacer la première partie de la formule : "=" + nom local de la fonction INDIRECT (non reconnu par VBA par "=INDIRECT" qui lui, est reconnu.
__________________
Cordialement. Daniel Citation:
|
||
|
10
|
|
|
#12 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Une question me turlupine, tes validation fonctionne quelque soit la langue du Excel utilisé? Si j'ai bien compris, les formules contenues dans les validations ne s'adaptent pas automatiquement à la langue de l'application Excel, donc les validations ne devraient pas fonctionner? ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
|
|
00
|
|
|
#13 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
@Qwazerty :
Bonsoir, J'ai compris l'inverse : Excel les interprète bien et la traduction ne se fait pas dans VBA ? Faute de pouvoir vérifier...
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : juillet 2011 Messages : 16 ![]() |
C'est exactement cela Daniel,
Excel fait la conversion automatiquement dans les différentes langues ex: la fonction Indirect (en Anglais) est directement traduit par excel Espagnol par INDIRECTO dans la datavalidation. A partir de ce moment, VBA lit le contenu de la formule de la datavalidation mais ne le converti plus vers l'anglais et donc maintient INDIRECTO. La solution de Daniel semble la bonne, encore un grand merci Daniel.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com