Signaler

MFC selon le format de la cellule [Résolu]

Posez votre question Ipalgo 51Messages postés mercredi 9 juin 2010Date d'inscription 11 février 2017 Dernière intervention - Dernière réponse le 11 févr. 2017 à 23:38 par Ipalgo
Bonjour à tous,

Sous Excel 2010,
avec toute la colonne B,
qui contient des coordonnées GPS au format DMS (Degrés Minutes Secondes),
de la forme : 000°? 00'00" - 00°? 00'00"

> "0" pour n'importe quel chiffre
> "?" pour N, S, E ou W
> espace après chaque "?"
> espace avant et après le tiret "-"

J'aimerais faire une mise en forme conditionnelle,
sans vba,
pour faire ressortir toutes les cellules qui ne correspondent pas à ce 'masque de saisi'.

Est-ce possible ?

merci

Afficher la suite 
Utile
+0
plus moins
Bonjour,

Je ne pense pas qu'il existe un contrôle natif de cet ordre et donc il me semble qu'il te faut contrôler toute ta cellule par formule.
Je t'ai commencé la formule pour les 5 premiers caractères, à toi de continuer.
=ET(A1<>"";NON(ET(ESTNUM(CNUM(STXT(A1;1;3)));STXT(A1;4;1)="°";NON(ESTERR(TROUVE(STXT(A1;5;1);"NSEW"))))))

Saisi ta formule sur une cellule cela sera plus facile et ensuite tu la colles dans la MFC.
Donnez votre avis
Utile
+0
plus moins
Rappel du format : 000°? 00'00" - 00°? 00'00"

Aide n° position : 12345678901234567890123456


STXT -> permet d’extraire une chaîne de caractères d’une longueur donnée (cellule ; n° caractère de départ en partant de la gauche ; nombre de caractère(s) à prélever)

CNUM -> convertis en nombre une chaine de caractères

ESTNUM -> renvoie VRAI si c’est un numéro, FAUX autrement

ET -> détermine si toutes les conditions dans un test ont la valeur VRAI

NON -> permet d’inverser la valeur logique NON(VRAI)=FAUX

TROUVE -> renvoie la position de départ d’une chaîne de caractère

ESTERR -> renvoie VRAI si l’argument valeur fait référence à une valeur d’erreur, à l’exception de #N/A


Merci @gbinforme pour cette bonne piste.

Voici comment je pensais compléter pour faire ce que je recherche :
=ET(A1<>"";NON(ET(ESTNUM(CNUM(STXT(A1;1;3)));STXT(A1;4;1)="°";NON(ESTERR(TROUVE(STXT(A1;5;1);"NSEW")));ESTNUM(CNUM(STXT(A1;7;2)));STXT(A1;9;1)="’";ESTNUM(CNUM(STXT(A1;10;2)));STXT(A1;12;1)="”";STXT(A1;14;1)="-";ESTNUM(CNUM(STXT(A1;16;2)));STXT(A1;18;1)="°";NON(ESTERR(TROUVE(STXT(A1;19;1);"NSEW")));ESTNUM(CNUM(STXT(A1;21;2)));STXT(A1;23;1)="’";ESTNUM(CNUM(STXT(A1;24;2)));STXT(A1;26;1)="”")))

mais ça ne marche pas..

Modif n°1 avec correction des guillemets Word (minutes secondes) en guillemets Excel :

=ET(A1<>"";NON(ET(ESTNUM(CNUM(STXT(A1;1;3)));STXT(A1;4;1)="°";NON(ESTERR(TROUVE(STXT(A1;5;1);"NSEW")));ESTNUM(CNUM(STXT(A1;7;2)));STXT(A1;9;1)="'";ESTNUM(CNUM(STXT(A1;10;2)));STXT(A1;12;1)=""";STXT(A1;14;1)="-";ESTNUM(CNUM(STXT(A1;16;2)));STXT(A1;18;1)="°";NON(ESTERR(TROUVE(STXT(A1;19;1);"NSEW")));ESTNUM(CNUM(STXT(A1;21;2)));STXT(A1;23;1)="'";ESTNUM(CNUM(STXT(A1;24;2)));STXT(A1;26;1)=""")))

Toujours pas.. Hum..
gbinforme 13654Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 23 avril 2017 Dernière intervention - 11 févr. 2017 à 09:10
Bonjour,

@Ipalgo : tu n'en étais pas bien loin mais il faut doubler les guillemets pour les tester. Ceci devrait fonctionner :
=ET(A1<>"";NON(ET(ESTNUM(CNUM(STXT(A1;1;3)));STXT(A1;4;1)="°";NON(ESTERR(TROUVE(STXT(A1;5;1);"NSEW")));STXT(A1;6;1)=" ";ESTNUM(CNUM(STXT(A1;7;2)));STXT(A1;9;1)="'";ESTNUM(CNUM(STXT(A1;10;2)));STXT(A1;12;1)="""";STXT(A1;13;3)=" - ";ESTNUM(CNUM(STXT(A1;16;2)));STXT(A1;18;1)="°";NON(ESTERR(TROUVE(STXT(A1;19;1);"NSEW")));STXT(A1;20;1)=" ";ESTNUM(CNUM(STXT(A1;21;2)));STXT(A1;23;1)="'";ESTNUM(CNUM(STXT(A1;24;2)));STXT(A1;26;1)="""")))
Répondre
Donnez votre avis
Utile
+0
plus moins
j'ajoute l'image word que j'ai utilisé pour comprendre :
Donnez votre avis
Utile
+0
plus moins
Bonjour
et salut GB
peut être un peu plus simple, mais de toutes façons, c'est assez longuet
1°) pour alléger un peu entrez dans une cellule le type tel qu'il est écrit dans votre 1° message
soit pour l'exemple en H1:

000°? 00'00" - 00°? 00'00

la formule de MFC:
=$H$1<>SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;1;"0");2;"0");3;"0");4;"0");5;"0");6;"0");7;"0");8;"0");9;"0");"N";"?");"E";"?");"S";"?");"O";"?")

(avec les 0 entre guillemets)

si vous ne voulez pas entrer en H1 remplacer le dans la formule par:

"000°? 00'00" - 00°? 00'00"<>SUBSTITUE(.....)

crdlmnt

Ps: voila ce que ça donne avec quelques exemples de A1 à A10
https://mon-partage.fr/f/KMXRFnVL/

gbinforme 13654Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 23 avril 2017 Dernière intervention - 11 févr. 2017 à 09:30
Salut Vaucluse,
Ton idée est originale effectivement
- il te manque le test cellule vide.
- il faut doubler les guillemets à tester
=ET(A1<>"";"000°? 00'00"" - 00°? 00'00"""<>SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE (SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE (SUBSTITUE(SUBSTITUE(A1;1;"0");2;"0");3;"0");4;"0");5;"0");6 ;"0");7;"0");8;"0");9;"0");"N";"?");"E";"?");"S";"?");"O";"?"))
Répondre
Vaucluse 19432Messages postés lundi 23 juillet 2007Date d'inscription ContributeurStatut 23 avril 2017 Dernière intervention - 11 févr. 2017 à 10:03
Vi, gb, j'avais pensé qu'on pouvait supporter la MFC sur les cellules vides, mais effectivement c'est plus propre comme ça.
par contre es-tu sur de ton ET ou faudrait il plutôt utiliser OU?
Parce que A1 va avoir du mal à répondre aux deux conditions à la fois
Bien cordialement
Répondre
gbinforme 13654Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 23 avril 2017 Dernière intervention - 11 févr. 2017 à 11:59
et oui pour être en rouge il faut qu'il soit différent d'espace et différent du masque et tu penses bien que j'avais testé !
Si tu mets OU tout sera rouge ;-)
Répondre
Donnez votre avis
Utile
+0
plus moins
[Résolu]

MERCI à vous deux pour la solution.

Tout fonctionne parfaitement !

J'ai aussi besoin que la cellule soit coloriée en rouge si elle est vide alors j'ai enlevé le premier test :

A1<>"";

et c'est OK.

Bonne soirée, et merci à CCM aussi.
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !