Probleme avec la fonction si excel
Résolu
yves 2008
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Raymond PENTIER Messages postés 58989 Date d'inscription Statut Contributeur Dernière intervention -
Raymond PENTIER Messages postés 58989 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, a tous le monde
Je vous explique d’abord ce que je veux faire :
Je reçois un tableau Excel dans un format qui ne correspond pas à mon format.
Ex :
| Civilité Nom Prénom | adresse |
| M ou Mme Dupont Paul | 10 chemin des joules 75008 Paris |
Or ma base de donner accès est dans ce format :
| Civilité | Nom Prénom | adresse | code postal et villes |
| M ou Mme | Dupont Paul | 10 chemin des joules | 75008 Paris |
Donc il faut transformer le fichier Excel pour le rendre compatible accès
La ou je coince,.c’est pour séparer Civilité Nom Prénom sachant que dans civilité il y a uniquement les valeurs suivantes
M
M ou Mme
Mme
Mlle
Et pour finir si il n’y a pas toutes ces valeurs alors ça me laisse la case identique
Voici ma formule Excel
SI(CHERCHE("M ou Mme";B1;1)-8;STXT(B1;CHERCHE("M ou Mme";B1;1)+8;NBCAR(B1));SI(CHERCHE("M";B1;1)+1;STXT(B1;CHERCHE("M";B1;1)+1;NBCAR(B1))))
Le Problème avec cette formule le premier « si « marche très bien, mais pas le reste
Comment faire aidé moi svp merci.
Je vous explique d’abord ce que je veux faire :
Je reçois un tableau Excel dans un format qui ne correspond pas à mon format.
Ex :
| Civilité Nom Prénom | adresse |
| M ou Mme Dupont Paul | 10 chemin des joules 75008 Paris |
Or ma base de donner accès est dans ce format :
| Civilité | Nom Prénom | adresse | code postal et villes |
| M ou Mme | Dupont Paul | 10 chemin des joules | 75008 Paris |
Donc il faut transformer le fichier Excel pour le rendre compatible accès
La ou je coince,.c’est pour séparer Civilité Nom Prénom sachant que dans civilité il y a uniquement les valeurs suivantes
M
M ou Mme
Mme
Mlle
Et pour finir si il n’y a pas toutes ces valeurs alors ça me laisse la case identique
Voici ma formule Excel
SI(CHERCHE("M ou Mme";B1;1)-8;STXT(B1;CHERCHE("M ou Mme";B1;1)+8;NBCAR(B1));SI(CHERCHE("M";B1;1)+1;STXT(B1;CHERCHE("M";B1;1)+1;NBCAR(B1))))
Le Problème avec cette formule le premier « si « marche très bien, mais pas le reste
Comment faire aidé moi svp merci.
A voir également:
- Probleme avec la fonction si excel
- Fonction si et - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Comment calculer la moyenne sur excel - Guide
- Excel cellule couleur si condition texte - Guide
3 réponses
"Le problème avec cette formule : le premier SI marche très bien, mais pas le reste"
Sur quoi tu te bases pour affirmer cela ? C'est toute la formule qui ne suit pas de logique. D'ailleurs elle est destinée à quoi ? Afficher la civilité ? Et comment affiches-tu le Nom-prénom ?
Je te propose d'utiliser une colonne de code, D par exemple, avec le nombre de caractères que comporte la civilité, où tu saisis la formule
=SI(GAUCHE(B:B;8)="M ou Mme";8; SI(GAUCHE(B:B;4)="Mlle";4; SI(GAUCHE(B:B;3)="Mme";3; 1)))
La colonne E acueillera la civilité seule avec la formule =GAUCHE(B:B;D:D)
La colonne F affichera le Nom-Prénom avec la formule =STXT(B:B;D:D+2;99)
Salut, et à bientôt.
Sur quoi tu te bases pour affirmer cela ? C'est toute la formule qui ne suit pas de logique. D'ailleurs elle est destinée à quoi ? Afficher la civilité ? Et comment affiches-tu le Nom-prénom ?
Je te propose d'utiliser une colonne de code, D par exemple, avec le nombre de caractères que comporte la civilité, où tu saisis la formule
=SI(GAUCHE(B:B;8)="M ou Mme";8; SI(GAUCHE(B:B;4)="Mlle";4; SI(GAUCHE(B:B;3)="Mme";3; 1)))
La colonne E acueillera la civilité seule avec la formule =GAUCHE(B:B;D:D)
La colonne F affichera le Nom-Prénom avec la formule =STXT(B:B;D:D+2;99)
Salut, et à bientôt.
Bonjour
Peut être en agissant uniquement sur ce qui différencie les codes:
=SI(ESTVIDE(A5);"";SI(STXT(A5;3;1)="o";"M ou Mme";SI(STXT(A5;3;1)="e";"Mme";SI(STXT(A5;3;1)="l";"Mlle";"M"))))
Cette formule __(attention aux signes...) __ va chercher la 3° lettre dans la cellule A5 et selon ce qu'elle trouve, renvoi le code correspondant, étant donné que dans chaque type, la troisième lettre est différente
(renvoi M par défaut si il n'y a pas de lettre en 3° position)
Nota compte tenu des caprices d'affichage de CCM, les & quot; que vous pouvez trouver dans la formule ci dessus sont a remplacé par des guillemets
Bonne chance
Crdlmnt
Peut être en agissant uniquement sur ce qui différencie les codes:
=SI(ESTVIDE(A5);"";SI(STXT(A5;3;1)="o";"M ou Mme";SI(STXT(A5;3;1)="e";"Mme";SI(STXT(A5;3;1)="l";"Mlle";"M"))))
Cette formule __(attention aux signes...) __ va chercher la 3° lettre dans la cellule A5 et selon ce qu'elle trouve, renvoi le code correspondant, étant donné que dans chaque type, la troisième lettre est différente
(renvoi M par défaut si il n'y a pas de lettre en 3° position)
Nota compte tenu des caprices d'affichage de CCM, les & quot; que vous pouvez trouver dans la formule ci dessus sont a remplacé par des guillemets
Bonne chance
Crdlmnt
je vais rajoueté un détail car je me suis mal fais comprendre
Yves 2008 a dit "Et pour finir si il n’y a pas toutes ces valeurs alors ça me laisse la case identique"
en faite ce que j'ai voulue dire c'est que quand j'ai ex:
a1="Dons anonymes" e1="" f1="Dons anonymes"
a2="st balendrin" e2="" f2="st balendrin"
a3="association mjnc" e3="" f3="association mjnc"
milles excuses de ne pas avoir été clair
merci encore
Yves 2008 a dit "Et pour finir si il n’y a pas toutes ces valeurs alors ça me laisse la case identique"
en faite ce que j'ai voulue dire c'est que quand j'ai ex:
a1="Dons anonymes" e1="" f1="Dons anonymes"
a2="st balendrin" e2="" f2="st balendrin"
a3="association mjnc" e3="" f3="association mjnc"
milles excuses de ne pas avoir été clair
merci encore
pour avoir passé du temp sur ma formule
en effet je ne suis pas un pros de excel et j'ai regarder sur internet les solutions
mais impossible de faire fonctionner la moindre formule correctement
j'avais des fragements de formule que j'ai adapté mais quand j'ais que "M" il y a une erreur
#valeur!
mais bon maintenant que votre formule marche ça me va
par contre j'aime bien comprendre les formules comment elle fonctionne.
alors si je n'abuse pas trop de votre gentillesse, pourriez vous me l'expliquer.
merci encore
ex :
a1="Dons Anonymes" avec votre formule d1="1" e1="d" f1="ns Anonymes"
or il faudrait d1="0" e1="" f1="Dons Anonymes"
Il faudrait compléter la première formule :
=SI(GAUCHE(B:B;8)="M ou Mme";8;SI(GAUCHE(B:B;4)="Mlle";4;SI(GAUCHE(B:B;3)="Mme";3;SI(GAUCHE(B:B;2)="M ";1;0)))) --> ne pas oublier l'espace de "M " !
La formule colonne E ne bouge pas.
La formule colonne F devient : =SI(D:D>0;STXT(B:B;D:D+2;99);B:B)
"par contre j'aime bien comprendre les formules comment elle fonctionne."
Première formule, colonne D.
=GAUCHE(B:B;4) affiche les 4 premiers caractères du contenu de B (sur la même ligne).
Est-ce que les 8 premiers caractères sont "M_ou_Mme" ? Si oui, mettre 8 dans la cellule.
Sinon, est-ce que les 4 premiers caractères sont "Mlle" ? Si oui, mettre 4 dans la cellule.
Sinon, est-ce que les 3 premiers caractères sont "Mme" ? Si oui, mettre 3 dans la cellule.
Sinon, est-ce que les 2 premiers caractères sont "M " ? Si oui, mettre 1 dans la cellule.
Sinon, mettre zéro, car il n'y a pas de civilité.
Deuxième formule, colonne E.
=GAUCHE(B:B;D:D) affiche le nombre de caractères de la colonne B, en partant du début, nombre indiqué dans la colonne D. On obtient la civilité seule.
Troisième formule, colonne F.
=STXT(B:B;5;9) affiche 9 caractères (au plus) à partir du 5ème caractère du contenu de B.
Si la colonne D contient la valeur zéro, on affiche tout le contenu de la colonne B.
Sinon, on commence au caractère placé au rang D+2 et on écrit tout le reste (d'où la valeur 99 pour être tranquille).
Est-ce plus clair pour toi ?
Amitiés.
vous etes un as d'excel
c'est exactement ce que je voulais et grace a vos explications, j'ai pu
modifier la formule car la formule ne fonctionnait pas,j'avais oublier une civilité M et Mme
voici la formule final pour ceux que ça interesse:
La formule colonne d devient : =SI(GAUCHE(B:B;8)="M ou Mme";8;SI(GAUCHE(B:B;8)="M et Mme";8;SI(GAUCHE(B:B;4)="Mlle";4;SI(GAUCHE(B:B;3)="Mme";3;SI(GAUCHE(B:B;2)="M ";1;0)))))
le reste ne change pas
La formule colonne E :=GAUCHE(B:B;D:D)
La formule colonne F : =SI(D:D>0;STXT(B:B;D:D+2;99);B:B)
merci encore et bonne semaine
Alors, puisque ça te plaît, ta formule :
=SI(GAUCHE(B:B;8)="M ou Mme";8;SI(GAUCHE(B:B;8)="M et Mme";8;SI(GAUCHE(B:B;4)="Mlle";4;SI(GAUCHE(B:B;3)="Mme";3;SI(GAUCHE(B:B;2)="M ";1;0)))))
devient, en utilisant la fonction OU combinée avec la fonction SI :
=SI(OU(GAUCHE(B:B;8)="M ou Mme";(GAUCHE(B:B;8)="M et Mme");8;SI(GAUCHE(B:B;4)="Mlle";4;SI(GAUCHE(B:B;3)="Mme";3;SI(GAUCHE(B:B;2)="M ";1;0)))))
ou, en utilisant la fonction DROITE combinée avec la fonction GAUCHE :
=SI(DROITE(GAUCHE(B:B;8);3)="Mme";8;SI(GAUCHE(B:B;4)="Mlle";4;SI(GAUCHE(B:B;3)="Mme";3;SI(GAUCHE(B:B;2)="M ";1;0)))))
Je préfère cette dernière, non seulement car elle évoque mon service militaire (droite-gauche !), mais aussi parce qu'elle est plus courte et, somme toute, plus élégante.
Ceci dit, je ne suis pas un as, loin de là ! Simplement, Excel est un logiciel que j'aime beaucoup et que je pratique assidûment, et ce genre d'exercice cérébral est une bonne prévention contre Alzheimer et ses collègues ...