Test de plusieurs variables [Résolu]

Signaler
Messages postés
615
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
25 mai 2021
-
Messages postés
24106
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 juin 2021
-
Bonjour à tous,

J'aurai besoin de vos lumières :
j'ai 6 variables qui peuvent contenir du texte ou pas
je voudrai les imbriquer en rajoutant de la ponctuation (une virgule ",") entre chaque et un "et" entre l'avant dernière et la dernière.
la dernière peut autant être la variable2 que la variable6 (ou n'importe quelle autre) et les précédentes peuvent être vides (ou pas).

j'ai donc commencé à tester chaque possibilité dans un select case mais c'est long à écrire, ça ne garanti pas un oubli de possibilité ma part et à mon sens, ce n'est pas un code pas très joli..

existe t'il d'après vous une autre méthode pour tester les différentes possibilité et adapter la syntaxe finale?

vous remerciant par avance

Configuration: Windows / Chrome 88.0.4324.190

4 réponses

Messages postés
24106
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 juin 2021
6 804
Bonjour,

à tester : https://www.cjoint.com/c/KChiggRie2D
Mais j'écrirais plutôt sous la forme "abattant : 2" ou "abattant (2)" à cause des pluriels.
eric
Messages postés
615
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
25 mai 2021
51
J'ai regardé en diagonale (suis à la maison avec les gosses dans les pattes) ça à l'air d'être ça, a adapter un peu parce que les "s" du pluriel sont importants (et il n'y a pas que les "s" mais aussi des mots a rajouter pour les coulissants par exemple) et aussi le boolean que j'ai rajouté dans mon exemple parce que si il n'y a qu'un "item" à la fin ton code d'origine n'arrive pas à faire son taf mais si on évite les pièges ça tourne parfaitement!
Je m'y pencherai plus sérieusement demain pour adapter cela a mon vrai fichier
En tout cas merci x2 (tarif du dimanche ;) ) pour ta disponibilité
Messages postés
24106
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 juin 2021
6 804 >
Messages postés
615
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
25 mai 2021

A mon avis c'est un combat sans fin de vouloir traiter les pluriels par des règles.
Le plus simple est de te faire 2 listes et de piocher dans l'autre si pluriel.
Oui, je n'ai pas pensé à tester si un seul item. mais si tu arrives à t'en dépatouiller plus de pb :-)
eric
Messages postés
32181
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
17 juin 2021
7 750
Bonjour,

L'imbrication avec juste des formules est compliqué, il doit falloir utiliser une macro qui devrait faire le job facilement,

Avec juste des formules, en 3 étapes, avec les données en A1,B1,C1,D1,E1 et F1

en G1 on concatène les 6 champs
=SI(A1<>"";A1&",";"")&SI(B1<>"";B1&",";"")&SI(C1<>"";C1&",";"")&SI(D1<>"";D1&",";"")&SI(E1<>"";E1&",";"")&SI(F1<>"";F1&",";"")

en H1 on supprime la virgule de fin
=SI(DROITE(G1;1)=",";GAUCHE(G1;NBCAR(G1)-1);G1)

en I1 on remplace la dernière virgule éventuelle par " et "
=SIERREUR(REMPLACER(H1;(NBCAR(H1)-(NBCAR(H1)-CHERCHE("µ";SUBSTITUE(H1;",";"µ";NBCAR(H1)-NBCAR(SUBSTITUE(H1;",";""))))));1;" et ");H1)

Messages postés
615
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
25 mai 2021
51
Bonjour, merci pour ton temps mais ce n'est pas des formules que je recherche, j'ai parlé d'un "select case" je pensais que cela demandait implicitement une solution en vba mais la méthode est toute fois ce que je cherchais effectivement.. merci encore
Messages postés
54082
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
17 juin 2021
16 079
Bonjour Fabien.

Pour moi, ton exposé est trop vague : je ne vois pas ce que tu veux obtenir ...
Pourrais-tu donner des exemples concrets ?
Allons, Raymond, un peu d'effort d'imagination. Le covid te fatigue.
Un exemple, "Des pommes, des poires et des scoubidous bidous", ou bien "Des lingots, des pesos, des dollars, des roubles et des écus " ou bien encore "Poules, canards, veaux, vaches et cochons"
Messages postés
1710
Date d'inscription
samedi 12 septembre 2020
Statut
Membre
Dernière intervention
13 mai 2021
137 > Tessel75
Salut,

Si j'ai compris la demande, dans ta phrase : "Des pommes, des poires et des scoubidous bidous" la dernière cellule contient : des scoubidous bidous
>
Messages postés
1710
Date d'inscription
samedi 12 septembre 2020
Statut
Membre
Dernière intervention
13 mai 2021

Fabien dira ce qu'il veut faire exactement, mais moi, j'ai compris qu'il voulais faire une sorte de concaténation avec dans la cellule finale le groupe complet "Des pommes, des poires et des scoubidous"
Messages postés
24106
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 juin 2021
6 804
Bonjour à tous,

un essai :
Sub test()
    Dim tabl(1 To 6) As String, ch As String, i As Long
    For i = 1 To 4: tabl(i) = "item" & i: Next i
    'concat
    For i = 1 To 6
        If tabl(i) <> "" Then ch = ch & ", " & tabl(i)
    Next i
    ch = Mid(ch, 3)
    i = InStrRev(ch, ", ")
    ch = Left(ch, i - 1) & " et " & Mid(ch, i + 2)
End Sub

eric


En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Messages postés
615
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
25 mai 2021
51
D'avance pardon.. :
je n'étais pas en train de bosser sur mon fichier quand je suis venu poster mon sujet et j'ai oublié une chose importante..
la solution que tu m'as donnée est bonne et je t'en remercie encore .... Mais..
pour reprendre :
je voudrais effectivement écrire "1 pomme, 1 poire, 1 orange et 1 cerise" mais si j'ai "1 pomme, 1 pomme, 1 poire, 1 orange et 1 cerise" j'aimerai que ça écrive "2 pommes, 1 poire, 1 orange et 1 cerise" si et seulement si les pommes se suivent sinon le descriptif restera "1 pomme, 1 poire, 1 pomme, 1 orange et 1 cerise"
donc pour le moment je suis en train d'écrire ce genre de chose (ce que j'aimerai optimiser dans mon code) :

        Case varTmpCompo1 <> "" And varTmpCompo2 <> "" And varTmpCompo2 = varTmpCompo3 And varTmpCompo2 = varTmpCompo4 And varTmpCompo2 = varTmpCompo5 And varTmpCompo6 <> ""
            varTmpNbreIdem = 4
            Facade = varTmpCompo1 & ", " & DescroFaceFinal(varTmpCompo2, varTmpNbreIdem) & " et " & varTmpCompo6 

DescroFaceFinal etant la function suivante :
Function DescroFaceFinal(DescroDpart As String, NbrElement As Byte)

    Select Case True
        Case DescroDpart Like "1 Pomme*"
            DescroFaceFinal = Replace(DescroDpart, "1 Pomme", NbrElement & " Pommes")
Messages postés
24106
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 juin 2021
6 804 >
Messages postés
615
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
25 mai 2021

Bonjour,

Le mieux serait que tu déposes le fichier xls (réduit au nécessaire et anonymisé, avec les explications et éventuellement le résultat attendu) sur cjoint.com et coller ici le lien fourni.
Ca permettrait de savoir comment se présentent tes données (feuille, plage ?)
eric

PS : je ne comprend pas le Mid(ch, 3)
c'est pour supprimer le séparateur ", " qui se trouve en tête
Messages postés
615
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
25 mai 2021
51 >
Messages postés
24106
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 juin 2021

je ne peux malheureusement pas partager le fichier, il s'agit d'un "logiciel" de vente qui est déjà en service sur 2 autres produits donc le mettre en ligne est clairement impensable
Ce sont des userform dans lesquels les commerciaux font des choix sur des combobox.
Sur l'evenement "bouton valider" je récupère tous les choix, j'en fait la synthèse, j'en calcul le tarif et j'édite le devis en publipostage sur word (d'ou ma volonté de sortir un descriptif propre et professionnel)
tu m'as déjà vraiment bien aidé avec ta première réponse, je vais creuser la piste du tableau qui récupère les variables et essayer de voir ce que je peux faire avec une (ou plusieurs) boucle(s) pour repérer les variables qui se suivent et qui sont identiques afin d'éviter les répétitions du genre "1 pomme, 1 pomme, 1 pomme".
je vais travailler dessus et je reviendrai si vraiment je coince toujours

Merci encore à toi et tous ceux qui se sont donné la peine de répondre !
PS : est ce que je passe le sujet en résolu tout de suite pour ouvrir un nouveau sujet plus tard si j'ai besoin?
Messages postés
24106
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 juin 2021
6 804 >
Messages postés
615
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
25 mai 2021

Tu peux déposer un fichier de travail avec les données sur une feuille et tu adapteras à ton userform.
Là on ne sait même pas si nombres et libellés sont séparés ou pas
Messages postés
615
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
25 mai 2021
51 >
Messages postés
24106
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 juin 2021

voici un fichier exemple fait rapidement pour montrer le principe de construction de mes variables et de ce que j'aimerai reussir à faire
j'espere que ce sera plus clair que mes explications
https://www.cjoint.com/c/KCgpWmUCd6E