[Résolu] Tester une combinatoire logique

Benamou39

XLDnaute Nouveau
Bonjour à toutes et à tous !

C'est la première fois que je viens demander de l'aide sur le site !
Je vous avoue avoir jusqu'ici réussi à me débrouiller tout seul, en allant chercher les réponses des questions, qui avaient déjà été posées par d'autres et je vous en remercie ! ;)

Dans le cadre de mon premier W je suis sec sur un sujet assez coriace et ne trouve ni la réponse ni piste potentielle (formule, VBA...) :
Je souhaiterais tester (dans une cellule) le contenu d'une (autre) cellule par rapport à une combinatoire de caractères :

ex :
AAABBBCCCDDDEEE111222333444 : "Cellule à tester"
AAABBB : "Combinatoire de caractères"

Dans ce cas de figure (lorsque les caractères de la combinatoire se suivent) c'est assez simple avec la formule contient :
=SI(ESTNUM(CHERCHE("cellule à tester";combinatoire));"OUI";"NON")

Cependant dans mon cas plusieurs contraintes sont à intégrer :
1) Les caractères de la cellule à tester ne sont pas toujours positionné au même endroit.
ex : AAA111222CCC
2) Les caractères de la combinatoire intègre des opérateurs logiques :
ET .
OU +
SAUF ( )
FACTEUR <
ex : AAA.111<CCC+888
3) la combinatoire de caractères à une "longueur" variable en termes d'opérateurs logiques et de caractères.

J'ai essayé de combiner les formules basics (ET, OU ...) avec la formule "contient" et arrive au résultat quand la combinatoire à tester reste relativement "courte".
Cependant j'ai plus de 300 cellules à tester avec plus de 200 combinatoires de caractères qui évoluent assez souvent en fonction du temps :(

Sauriez vous me donner un coup de main SVP ?

En vous remerciant par avance, vous trouverez en pièce jointe un aperçu simplifié du W à réaliser.
 

Pièces jointes

  • Test 1.xlsx
    9.5 KB · Affichages: 75
  • Test 1.xlsx
    9.5 KB · Affichages: 76
  • Test 1.xlsx
    9.5 KB · Affichages: 85
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Tester une combinatoire logique

Bonsoir à tous


A vue de de nez, cela sent le RegExp à plein nez.

RegExp qui sera peut-être moins ardu à appréhender après la lecture de ce fil repère:
https://www.excel-downloads.com/threads/vba-expressions-regulieres-patterns-pour-regexp.152183/

J'ajoute ce petit tutoriel (il en existe à foison sur le net)
Tutoriel pour maîtriser les expressions régulières / regex

Avec cela, tu devrais pouvoir y voir plus clair dans la résolution de ta question.
 

Benamou39

XLDnaute Nouveau
Re : Tester une combinatoire logique

Bonjour Staple1600,

Merci pour ta rapide réponse !
Je suis allé me documenter sur tes liens et maintenant je me rends compte réellement qu'Excel est vaste et me sens tout petit !

Le problème et que ma combinatoire varie à chaque cellule et ne je comprends pas comment je peux faire pour interpréter les opérateurs logique (fameux . = ET , + = OU, < = facteur, () = sauf) dans VBA.

Et pour couronner le tout mon niveau en VBA est exécrable.

Je suis perdu.
 

Docmarti

XLDnaute Occasionnel
Re : Tester une combinatoire logique

Bonjour Benamou.

Tu donnes 2 exemples simples comme AD.52.VH(DG6) et AADD87564618HSR527DG6DTDVHDO.
Pourrais-tu donner un peu plus d'exemples de données possibles et préciser le résultat attendu dans chaque cas ?

Docmarti
 

Benamou39

XLDnaute Nouveau
Re : Tester une combinatoire logique

Bonjour à tous,

Merci vraiment de l'aide et de l'intérêt que vous portez à ce sujet qui encore aujourd'hui m'a posé bien des problèmes !

j'ai rajouté un exemple plus concret + des explications dans le résultats escompté dans le fichier attaché.

si besoin de plus de détails n'hésitez pas à me demander.

Merci encore,
 

Pièces jointes

  • Test 1.xlsx
    12.6 KB · Affichages: 62
  • Test 1.xlsx
    12.6 KB · Affichages: 62
  • Test 1.xlsx
    12.6 KB · Affichages: 57

Modeste geedee

XLDnaute Barbatruc
Re : Tester une combinatoire logique

Bonsour® benamou39 , staple1600, Roger 2327 ???

une ébauche en utilisant une fonction personnalisée avec la fonction LIKE...
=ESTDANS( "quoi", "Dans")
Capture.jpg

utilisation de caractères génériques propres à la fonction LIKE

la difficulté vient du découpage combinatoire entre fonction OU et fonction ET
pour automatisation un module dicotomique sera probablement nécessaire

voir zone verte (ligne 3 à 5) nombre de ligne pouvant varier
l'absence de découpage correspondant symbolisé par \

autre doute concernant la formulation de SAUF [!xxx]


par ailleurs il n'est pas précisé si l'ordre des termes de la combinatoire est obligatoire (j'ai supposé que oui)
 

Pièces jointes

  • tester-une-combinatoire-logique-test-1.xlsm
    25.2 KB · Affichages: 48
  • tester-une-combinatoire-logique-test-1.xlsm
    25.2 KB · Affichages: 57
  • tester-une-combinatoire-logique-test-1.xlsm
    25.2 KB · Affichages: 58
  • Capture.jpg
    Capture.jpg
    60.7 KB · Affichages: 89
  • Capture.jpg
    Capture.jpg
    60.7 KB · Affichages: 92

Benamou39

XLDnaute Nouveau
Re : Tester une combinatoire logique

Bonjour à tous,

Je vois que vous avez tous des approches pertinentes !
J'ai repris la base de Modeste Geedee pour concaténer les échanges et les idées / avancées !

Docmarti,
Pour répondre à ta question, j'ai apporté des explications avec des exemples détaillés dans le fichier joint (voir onglet docmarti :))
demain je poste des exemples concret du W pour vous exposer la complexité de certaines combinatoires.

Modeste Geedee,
C'est exactement le genre de solution qu'il me faut ! l'insertion d'une simple formule du type "estdans" permettant de faire tourner un algorithme VBA je trouve ça génial ! Well done !
J'ai ajouté des remarques à ton travail (voir onglet "Modeste Geedee" :))

Petites remarques :
1) je ne souhaite pas développer/découper manuellement les combinatoires -> sources d'erreurs
2) la fonction sauf [!xxx] ne marche pas... autre solution ?
3) peu importe l'ordre des termes de la combinatoire ! ouf une contrainte en moins (enfin je pense !)

Question :
Qu'est-ce un "module dichotomique" ?

En tout cas je vois que ça commence à prendre forme et cela me rend davantage optimiste ! :cool:
 

Pièces jointes

  • tester-une-combinatoire-logique-test-1.xlsm
    20.6 KB · Affichages: 49
  • tester-une-combinatoire-logique-test-1.xlsm
    20.6 KB · Affichages: 65
  • tester-une-combinatoire-logique-test-1.xlsm
    20.6 KB · Affichages: 59

Benamou39

XLDnaute Nouveau
Re : Tester une combinatoire logique

Bonjour à tous,

Dsl du retard, vous trouverez en pièce jointe le fichier avec des exemples concrets !

Benamou
 

Pièces jointes

  • tester-une-combinatoire-logique-test-1.xlsm
    22.3 KB · Affichages: 47
  • tester-une-combinatoire-logique-test-1.xlsm
    22.3 KB · Affichages: 67
  • tester-une-combinatoire-logique-test-1.xlsm
    22.3 KB · Affichages: 75

Docmarti

XLDnaute Occasionnel
Re : Tester une combinatoire logique

Quelles sont exactement les règles d'écriture ?

Car c'est ambigu. Par exemple, si
AA.87.66+AA.87.53ZZ.55<66+TI
accepte AA.87.66+AA.87.53ZZ.55.TI

W407<FKE+FKH+FKJ+FKM+FKR+FCQ.VQ54+FCQ.VQ30.YC03+FKQ.VQ04.YC00*
accepte quoi?

Docmarti
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Tester une combinatoire logique

Bonsoir Benamou39, Staple1600, Docmarti, Modeste geedee,

Juste une piste incomplète (pas traité le cas " < Facteur"), pratiquement pas vérifiée que j'avais commencé à examiner (mais c'est loin d'être un analyseur de syntaxe et/ou de grammaire).

L'idée (si tant est que ça en mérite le terme) est de transformer l'expression 'combinatoire' en une formule qui sera calculée au moyen de Application.Evaluate.

Les termes élémentaires sont remplacés par 1 ou 0 suivant leur présence ou non dans le texte de référence.

L' opérateur . de l'expression 'combinatoire' est remplacé par la multiplication, l'opérateur + par l'addition et l'opérateur SAUF (xxx) par * (1 -(xxx)). L'opérateur > n'a pas été traité.

Je ne pense pas qu'on puisse arriver à quelque chose de solide qui fonctionnerait dans tous les cas avec cette méthode, sans un bon analyseur et/ou les expressions régulières.

Les résultats de la fonction =Oui_Non( Texte où chercher ; expression 'combinatoire' ) sont dans les cellules roses.
 

Pièces jointes

  • Benamou39 -combinatoire-logique v2.xlsm
    22.3 KB · Affichages: 56
Dernière édition:

Discussions similaires

Réponses
5
Affichages
308