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

Formule droite et fonction ou imbriqué

  • Initiateur de la discussion Initiateur de la discussion dina1
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 


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
 
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

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)
 
Hello BriceG
avec une formule un peu plus courte :-D
suffit de mettre la liste des elements abcdef, bcdef.... en colonne (D14😀27) par exemple
et taper la formule
=SI(ESTNUM(EQUIV(DROITE(A1;6);$D$14:$D$27;0));DROITE(A1;6);STXT(A1;4;5))
 
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
 
Hello BriceG
avec une formule un peu plus courte :-D
suffit de mettre la liste des elements abcdef, bcdef.... en colonne (D14😀27) 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 modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
281
Réponses
3
Affichages
125
Réponses
4
Affichages
403
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…