Re: [users-fr] Calc : valeur à récupérer dans un libellé
Le 04/09/2010 03:14, lutch a écrit : Le 31/08/10 17:45, Serge a écrit : Grand merci à tous ! En réalité, c'est plus compliqué parce que les libellés peuvent être divers (il y en a même du type : Le nombre d'occurrence est compris entre ... et ...). Donc je retiens l'idée de récupérer les formules à la main et de faire ce que j'ai à faire. Par contre, vos autres suggestions m'ont fait découvrir des fonctions dont je n'avais pas idée. Ce forum est une mine. Je regrette seulement de n'avoir à ce jour jamais pu venir en aide. Bonjour, problème intrigant, donc intéressant. Je m'y suis collé et voici une méthode que je propose. C'est un premier jet, améliorable sans doute. Il y a des gisements de simplification. Sous réserve de viabilité tous usages, je compte bien me servir de ça pour nettoyer certains fichiers boiteux qu'on me demande régulièrement d'exploiter comme source de données. Données du problème, telles que je les ai comprises - les expressions varient arbitrairement, - les valeurs sont de longueur variable, mais se trouvent toujours en dernière position dans la cellule Données du tableau de test : libellé+valeur cellules A1:A7 mot1 mot2 mot3 mot4 mot5 mot6 MOT7 123 mot1 mot2 mot3 mot4 mot5 mot6 MOT7 123456789 mot1 mot2 mot3 mot4 mot5 mot6 MOT7 125 mot1 mot2 mot3 mot4 126 mot1 mot2 mot3 mot4 mot5 mot6 MOT7 127 mot1 mot2 mot3 mot4 mot5 mot6 128 mot1 mot2 mot3 DERNIERMOT En B1, la formule =DROITE(A1;NBCAR(A1)-CHERCHE(-;SUBSTITUE(A1; ;-;NBCAR(A1)-NBCAR(SUBSTITUE(A1; ;)));1)) résultat : 123 En B7, la formule =DROITE(A7;NBCAR(A7)-CHERCHE(-;SUBSTITUE(A7; ;-;NBCAR(A7)-NBCAR(SUBSTITUE(A7; ;)));1)) résultat : DERNIERMOT Explications sommaires SUBSTITUE(A1; ;) remplace toutes les espaces de la cellule A1 NBCAR(A1)-NBCAR(SUBSTITUE(A1; ;) calcule la différence du nombre de caractères avec et sans espaces, ce qui donne le rang (occurrence) de la dernière espace SUBSTITUE(A1; ;-;NBCAR(A1)-NBCAR(SUBSTITUE(A1; ;) remplace cette dernière espace, donc située avant le dernier mot CHERCHE(- cherche la position exacte de ce -, par la soustraction [nombre de caractères total]-[position du -] on obtient le nombre de caractères à partir de la droite à extraire de l'expression initiale pour ne récupérer que le dernier mot de la cellule, c'est-à-dire la valeur. J'espère être encore compréhensible malgré l'heure tardive. C_Lucien /Pourvu que ça serve/ Bonjour, Je reviens sur ce problème avec une solution simple, sans formules. Serge (auteur du message initial), nous dit qu'il est sous Win XP et OOo 3.2.1. Donc, ça doit marcher. Il faut copier toute la zone en question dans le bloc-notes, puis du bloc-note, il faut faire Ctrl+C (copier) et dans Calc, Ctrl+V (coller) La boite Import de texte apparait. Dans options de séparateur, il faut cocher Espace, puis OK Toutes les données sont séparées. Bon dimanche et on surf, Christian -- Visitez http://christianwtd.free.fr/ pour débuter avec Calc, d'OpenOffice.org - To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org For additional commands, e-mail: users-h...@fr.openoffice.org
Re: [users-fr] Calc : valeur à récupérer dans un libellé
Le 04/09/2010 03:14, lutch a écrit : Le 31/08/10 17:45, Serge a écrit : Grand merci à tous ! En réalité, c'est plus compliqué parce que les libellés peuvent être divers (il y en a même du type : Le nombre d'occurrence est compris entre ... et ...). Donc je retiens l'idée de récupérer les formules à la main et de faire ce que j'ai à faire. Par contre, vos autres suggestions m'ont fait découvrir des fonctions dont je n'avais pas idée. Ce forum est une mine. Je regrette seulement de n'avoir à ce jour jamais pu venir en aide. Bonjour, problème intrigant, donc intéressant. Je m'y suis collé et voici une méthode que je propose. C'est un premier jet, améliorable sans doute. Il y a des gisements de simplification. Sous réserve de viabilité tous usages, je compte bien me servir de ça pour nettoyer certains fichiers boiteux qu'on me demande régulièrement d'exploiter comme source de données. Données du problème, telles que je les ai comprises - les expressions varient arbitrairement, - les valeurs sont de longueur variable, mais se trouvent toujours en dernière position dans la cellule Données du tableau de test : libellé+valeur cellules A1:A7 mot1 mot2 mot3 mot4 mot5 mot6 MOT7 123 mot1 mot2 mot3 mot4 mot5 mot6 MOT7 123456789 mot1 mot2 mot3 mot4 mot5 mot6 MOT7 125 mot1 mot2 mot3 mot4 126 mot1 mot2 mot3 mot4 mot5 mot6 MOT7 127 mot1 mot2 mot3 mot4 mot5 mot6 128 mot1 mot2 mot3 DERNIERMOT En B1, la formule =DROITE(A1;NBCAR(A1)-CHERCHE(-;SUBSTITUE(A1; ;-;NBCAR(A1)-NBCAR(SUBSTITUE(A1; ;)));1)) résultat : 123 En B7, la formule =DROITE(A7;NBCAR(A7)-CHERCHE(-;SUBSTITUE(A7; ;-;NBCAR(A7)-NBCAR(SUBSTITUE(A7; ;)));1)) résultat : DERNIERMOT Explications sommaires SUBSTITUE(A1; ;) remplace toutes les espaces de la cellule A1 NBCAR(A1)-NBCAR(SUBSTITUE(A1; ;) calcule la différence du nombre de caractères avec et sans espaces, ce qui donne le rang (occurrence) de la dernière espace SUBSTITUE(A1; ;-;NBCAR(A1)-NBCAR(SUBSTITUE(A1; ;) remplace cette dernière espace, donc située avant le dernier mot CHERCHE(- cherche la position exacte de ce -, par la soustraction [nombre de caractères total]-[position du -] on obtient le nombre de caractères à partir de la droite à extraire de l'expression initiale pour ne récupérer que le dernier mot de la cellule, c'est-à-dire la valeur. J'espère être encore compréhensible malgré l'heure tardive. C_Lucien /Pourvu que ça serve/ Bonjour à toutes et tous, humour ON C'est pourtant facile :-P /humour off Première réserve importante : il ne doit pas y avoir d'espaces avant ou après. Il faut donc traiter éventuellement avec SUPPRESPACE() Alors voila, si le texte est en A1, la formule simple :o est : =DROITE(SUBSTITUE(A1; ; CAR(255); NBCAR(A1) - NBCAR(SUBSTITUE(A1; ;))); NBCAR(SUBSTITUE(A1; ; CAR(255); NBCAR(A1) - NBCAR(SUBSTITUE(A1; ; - (TROUVE(CAR(255); SUBSTITUE(A1; ; CAR(255); NBCAR(A1) - NBCAR(SUBSTITUE(A1; ;)) Mouais... En détail, ça donne, si le texte est en A1, en B1 on a : =NBCAR(A1) - NBCAR(SUBSTITUE(A1; ;)) Ici, on cherche le nombre d'espaces. En C1: =SUBSTITUE(A1; ; CAR(255); B1) Ici, on échange le dernier espace avec un caractère peu usité, code Ascii 255 (ÿ) En D1 : =TROUVE(CAR(255); C1) On cherche la position de ce caractère. En E1 : =DROITE(A1; NBCAR(A1) - D1) Résultat final. Ouf ! :-) En suivant ce principe, on peut extraire des portions centrales avec STXT, mais là aussi, ce sera un peu plus complexe. En espérant aider un peu, Bon surf, Christian -- Visitez http://christianwtd.free.fr/ pour débuter avec Calc, d'OpenOffice.org - To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org For additional commands, e-mail: users-h...@fr.openoffice.org
Re: [users-fr] Calc : valeur à récupérer dans un libellé
Le 31/08/10 17:45, Serge a écrit : Grand merci à tous ! En réalité, c'est plus compliqué parce que les libellés peuvent être divers (il y en a même du type : Le nombre d'occurrence est compris entre ... et ...). Donc je retiens l'idée de récupérer les formules à la main et de faire ce que j'ai à faire. Par contre, vos autres suggestions m'ont fait découvrir des fonctions dont je n'avais pas idée. Ce forum est une mine. Je regrette seulement de n'avoir à ce jour jamais pu venir en aide. Bonjour, problème intrigant, donc intéressant. Je m'y suis collé et voici une méthode que je propose. C'est un premier jet, améliorable sans doute. Il y a des gisements de simplification. Sous réserve de viabilité tous usages, je compte bien me servir de ça pour nettoyer certains fichiers boiteux qu'on me demande régulièrement d'exploiter comme source de données. Données du problème, telles que je les ai comprises - les expressions varient arbitrairement, - les valeurs sont de longueur variable, mais se trouvent toujours en dernière position dans la cellule Données du tableau de test : libellé+valeur cellules A1:A7 mot1 mot2 mot3 mot4 mot5 mot6 MOT7 123 mot1 mot2 mot3 mot4 mot5 mot6 MOT7 123456789 mot1 mot2 mot3 mot4 mot5 mot6 MOT7 125 mot1 mot2 mot3 mot4 126 mot1 mot2 mot3 mot4 mot5 mot6 MOT7 127 mot1 mot2 mot3 mot4 mot5 mot6 128 mot1 mot2 mot3 DERNIERMOT En B1, la formule =DROITE(A1;NBCAR(A1)-CHERCHE(-;SUBSTITUE(A1; ;-;NBCAR(A1)-NBCAR(SUBSTITUE(A1; ;)));1)) résultat : 123 En B7, la formule =DROITE(A7;NBCAR(A7)-CHERCHE(-;SUBSTITUE(A7; ;-;NBCAR(A7)-NBCAR(SUBSTITUE(A7; ;)));1)) résultat : DERNIERMOT Explications sommaires SUBSTITUE(A1; ;) remplace toutes les espaces de la cellule A1 NBCAR(A1)-NBCAR(SUBSTITUE(A1; ;) calcule la différence du nombre de caractères avec et sans espaces, ce qui donne le rang (occurrence) de la dernière espace SUBSTITUE(A1; ;-;NBCAR(A1)-NBCAR(SUBSTITUE(A1; ;) remplace cette dernière espace, donc située avant le dernier mot CHERCHE(- cherche la position exacte de ce -, par la soustraction [nombre de caractères total]-[position du -] on obtient le nombre de caractères à partir de la droite à extraire de l'expression initiale pour ne récupérer que le dernier mot de la cellule, c'est-à-dire la valeur. J'espère être encore compréhensible malgré l'heure tardive. C_Lucien /Pourvu que ça serve/
Re: [users-fr] Calc : valeur à récupérer dans un libellé
Grand merci à tous ! En réalité, c'est plus compliqué parce que les libellés peuvent être divers (il y en a même du type : Le nombre d'occurrence est compris entre ... et ...). Donc je retiens l'idée de récupérer les formules à la main et de faire ce que j'ai à faire. Par contre, vos autres suggestions m'ont fait découvrir des fonctions dont je n'avais pas idée. Ce forum est une mine. Je regrette seulement de n'avoir à ce jour jamais pu venir en aide. - To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org For additional commands, e-mail: users-h...@fr.openoffice.org