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   -
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.
A voir également:

3 réponses

Raymond PENTIER Messages postés 58989 Date d'inscription   Statut Contributeur Dernière intervention   17 353
 
"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.
1
yves 2008 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour et merci

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
0
yves 2008 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
en faite apres vérification, si il n y a pas de civilité ca me rogne les deux premieres lettres

ex :

a1="Dons Anonymes" avec votre formule d1="1" e1="d" f1="ns Anonymes"

or il faudrait d1="0" e1="" f1="Dons Anonymes"
0
Raymond PENTIER Messages postés 58989 Date d'inscription   Statut Contributeur Dernière intervention   17 353 > yves 2008 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Désolé, mais dans ta demande je n'avais pas réalisé qu'existait le cas où il n'y a pas de civilité ... Et ça change tout !
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.
0
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  
 
Bonjour et merci Raymond

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
0
Raymond PENTIER Messages postés 58989 Date d'inscription   Statut Contributeur Dernière intervention   17 353 > yves 2008 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Parfait, Yves ! Tu es un bon élève ...

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 ...
0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
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
0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
Re
pour plus de sureté je joins un petit exemple de ma prposition au lien ci dessous
http://www.cijoint.fr/cjlink.php?file=cj200807/cijTnKtYez.xls
Crdlmnt
0
yves 2008 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   > Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bonjour et merci

pour avoir passé du temp sur ma formule

je n'arrive pas a faire fonctionner votre formule
et le lien ne fontionne pas chez moi

merci a bientôt
0
yves 2008 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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
0