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

Formule droite et fonction ou imbriqué

dina1

XLDnaute Nouveau
Je voudrais imbriqué des ou avec une formules droite et gauche pour qu'elle me donne un résultat spécifique

Je m'explique à travers un exemple dans un fichier excel : cf fichier joint

J'espère que j'ai été clair

Merci d'avance
 

Pièces jointes

  • Base_test.xlsx
    11.9 KB · Affichages: 20

vgendron

XLDnaute Barbatruc
Bonjour aussi....
heureusement qu'il y a un fichier pour comprendre.. :-D

essaie avec une fonction personalisée que tu peux appeler comme une fonction normale excel
VB:
Function extrait(target As Range)
application.volatile
Liste = Array("abcdef", "bcdefg", "cdefgh", "defghi", "efghij", "fghijk", "ghijkl", "hijklm", "mlkjuh", "ghyfgd", "dfrtgf", "fgtyhu", "nbhbnh", "kiolpu")
Last5Caract = Right(target, 6)
trouvé = False
For Each ele In Liste
    If Last5Caract = ele Then
        trouvé = True
        Exit For
    End If
Next ele
If trouvé Then
    extrait = Last5Caract
Else: extrait = Mid(target, 4, 5)
End If


End Function
 

vgendron

XLDnaute Barbatruc
sinon, si tu souhaites pouvoir récupérer TOUT le mot fraise au lieu de juste Frais
VB:
Function extrait2(target As Range)
Application.Volatile
Liste = Array("abcdef", "bcdefg", "cdefgh", "defghi", "efghij", "fghijk", "ghijkl", "hijklm", "mlkjuh", "ghyfgd", "dfrtgf", "fgtyhu", "nbhbnh", "kiolpu")
mot = Split(target, " ")

LastCaract = mot(UBound(mot))
trouvé = False
For Each ele In Liste
    If LastCaract = ele Then
        trouvé = True
        Exit For
    End If
Next ele
If trouvé Then
    extrait = LastCaract
Else: extrait = mot(1)
End If

End Function
 

dina1

XLDnaute Nouveau


Merci beaucouppppp vraiment

Pourrais tu m'expliquer en détail le code )))


Que veut dire le : trouvé = False
et
if trouvé Then
extrait = Last5Caract
Else: extrait = Mid(target, 4, 5)
End If
 

Brice G

XLDnaute Occasionnel
Bonjour, vous trouverez sans doute cela moins élégant, ; mais ça fonctionne sans VBA, avec une formule utilisant les fonctions SI, OU, DROITE (que tu voulais utiliser) et STXT.
J'ai brièvement expliqué le rôle de chaque fonction sur le fichier, mais tu trouveras tout ce que tu veux et des exemples sur internet.
 

Pièces jointes

  • Base_test_brice.xlsx
    12.9 KB · Affichages: 19

vgendron

XLDnaute Barbatruc
Trouvé est une variable booleenne (vrai ou faux)
trouvé =false pour initialiser la variable:; par défaut on suppose qu' on a pas trouvé la séquence de lettre
if trouvé then --> est strictement équivalent à if trouvé=true.. (le =true est implicite)
 

vgendron

XLDnaute Barbatruc
Hello BriceG
avec une formule un peu plus courte :-D
suffit de mettre la liste des elements abcdef, bcdef.... en colonne (D1427) par exemple
et taper la formule
=SI(ESTNUM(EQUIV(DROITE(A1;6);$D$14:$D$27;0));DROITE(A1;6);STXT(A1;4;5))
 

vgendron

XLDnaute Barbatruc
VB:
Function extrait(target As Range) 'définit la fonction personalisée Extrait avec une cellule en argument
application.volatile 'permet à la fonction d'actualiser le résultat si la feuille change
Liste = Array("abcdef", "bcdefg", "cdefgh", "defghi", "efghij", "fghijk", "ghijkl", "hijklm", "mlkjuh", "ghyfgd", "dfrtgf", "fgtyhu", "nbhbnh", "kiolpu") 'on définit la liste des élements à chercher
Last6Caract = Right(target, 6) 'on récupère les 6 derniers caractères de la cellule donnée en argument
trouvé = False 'initiale à faux
For Each ele In Liste 'on parcourt la liste des éléments
   If Last6Caract = ele Then 'si les 6 derniers caractères de la cellule target correspondent à l'élément en cours de test
        trouvé = True 'trouvé mis à vrai
       Exit For 'on sort de la boucle.. pas la peine d'aller au bout
   End If
Next ele
If trouvé Then 'si on a trouvé
    extrait = Last6Caract 'on affecte les 6 derniers caractère à la fonction : histoire de retourner le résultat...
Else: extrait = Mid(target, 4, 5) 'si pas trouvé, alors on renvoit les 5 caractères à partir du 4eme
End If
End Function
 

Brice G

XLDnaute Occasionnel
Hello BriceG
avec une formule un peu plus courte :-D
suffit de mettre la liste des elements abcdef, bcdef.... en colonne (D1427) par exemple
et taper la formule
=SI(ESTNUM(EQUIV(DROITE(A1;6);$D$14:$D$27;0));DROITE(A1;6);STXT(A1;4;5)

Bonjour, aaah oui ça m'avait effleuré l'esprit de mettre ça dans dans une colonne ou quoi mais je n'ai pas creusé, merci de l'info ; formule plus courte avec estnum et equiv en plus, aaah finalement c'est moi qui aurais appris un truc, merci !


Edit : Tu auras été très complet, bravo ; l'auteur a tout ce qu'il lui faut.
 
Dernière édition:

Discussions similaires

Réponses
13
Affichages
534
Réponses
4
Affichages
224
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…