Envoyé par
tirex28
Bonjour,
Sans vouloir te decourager ce que tu tente de construire ressemble à une belle usine à gaz. J'ajouterais que faire confiance à un utilisateur lambda pour saisir une formule complexe en respectant une syntaxe normalisé releve du pari insensé.
Concernant la mise en oeuvre de criteres complexes, je te suggere de changer ton approche du probleme et de te tourner vers les filtres élaborés, c'est simple à comprendre, simple à utiliser, et efficace.
Cordialement,
Tirex28/
Bonjour!
Merci pour ta réponse
En effet c'est assez compliqué au niveau programmation, mais mon but c'est de faire un truc facile à utiliser pour l'utilisateur, et tant pis si le programme derrière est compliqué!!
Je cherche à créer une procédure qui sera ensuite réutilisée des centaines de fois. Donc je préfère demander à l'utilisateur de rentrer une formule du style:
Gauche([PAYS],3)&[Numero_Tel]&If([Type]=1, "01", "02")
plutôt que l'obliger à se référer à chaque colonne en cliquant, ce qui donnerait un truc du style:
=GAUCHE([Table_Pays.xls]Pays!L13C6,3)&[Pays.xls]Pays!L42C8&If([Pays.xls]Pays!L30C12="Inde",1,2)
Une formule de ce style risquerait à mon avis beaucoup plus de prêter à confusion, et d'être source d'erreur! Surtout alors que l'utilisateur devra utiliser cette conversion plusieurs dizaine de fois!
Et pour les problèmes de syntaxe, je pourrais toujours créer une procédure qui vérifie que la syntaxe est bien respectée, et prévienne l'utilisateur si ce n'est pas le cas...
Les filtres élaborés pourraient être une solution, mais j'aurais toujours le même problème:
Dans un filtre élaboré, si je souhaite rentrer comme critère de filtre une formule, je devrais trouver un moyen de convertir une formule donnée par l'utilisateur du style en une formule où je remplace à chaque fois les noms de la colonne (ici [Pays]) par la position de la cellule en première ligne de cette colonne (disons C2 si la colonne C est la colonne "PAYS").
Je crois qu'au fond, mon problème est de parvenir à donner à excel une chaîne de caractères, en lui faisant comprendre qu'il doit la voir comme une formule. Si j'y arrive, je pourrais à mon avis réussir à faire ce que je veux.
Quelqu'un saurait-il si c'est possible, de prendre une chaîne de caractères Chaine_de_caracteres et de l'utiliser comme condition dans ma macro ainsi:
1 2 3 4
|
If Not Chaine_de_caracteres Then
'Rajouter un # en début de ligne
End If |
A l'identique, lorsque je vais créer ma chaîne de caractère, je souhaiterais par exemple la créer en concaténant à un moment donné dans ma chaîne la formule "Sheet.Cells(i,j)", sans pour autant que cette valeur soit évaluée tout de suite:
Par exemple, si j'utilise:
1 2
|
Chaine_De_Caracteres = "Le_Pays_S'Appelle " & "Sheet.Cells(i,j)" & "." |
Et que la valeur de la cellule (i,j) vaut "FRANCE", j'obtiendrais comme chaîne:
"Le_Pays_S'Appelle France."
Alors que je veux avoir dans ma chaîne:
"Le_Pays_S'Appelle" & "Sheet.Cells(i,j)" & "."
En fait je voudrais pouvoir créer une chaîne sans évaluer tout de suite les valeurs, pour ensuite m'en servir dans une boucle IF (et à ce moment là j'évaluerai les valeurs).
Est-ce possible?!?
Merci d'avance
Partager