| ||||||||
Petit astucien | Bonjour,
Je suis à la recherche d'une fonction sous Excel qui me permettrait d'extraire d'une cellule un certains nombre de carractères.
à partir d'un classement (chaque ligne dans le tableau que j'importe est contenu dans une seule cellule) je voudrais coller
a/ dans une deuxième cellule uniquement le nom du participant
b/ dans une troisième uniquement le classement (en sachant qu'avec plus de 200 participants, ce nombre comporte 1,2 ou 3 chifres)
le tableau tel que je l'importe :
> 1 Robert (16/01/2004 16:09:21)
> 2 Simon (16/01/2004 16:10:02)
> 3 Gilles (16/01/2004 16:38:39)
> 4 Jacques (16/01/2004 16:44:46)
le tableau recherché après extraction des données :
cellule A_____________________________cellule B____cellule C
> 1 Robert (16/01/2004 16:09:21)_______Robert_________1
> 12 Simon (16/01/2004 16:10:02)______Simon_________12
> 47 Gilles (16/01/2004 16:38:39)_______Gilles__________47
> 152 Jacques (16/01/2004 16:44:46)___Jacques________152
j'ai bien essayé de chercher, mais avec les centaines (milliers ?) de fonctions proposées par excel, je suis resté bredouille !
merci.
Modifié par tacoum le 20/01/2004 16:04 | |||||||
Publicité | ||||||||
| ||||||||
Petit astucien | Salut j'ai trouvÚ ta solution.
Avant toute chose, fais une sauvegarde de ton fichier, car si y'a une mauvaise manip tu perdrÚ tous.
Cette manipulation ne doit pas etre possible avec une formule. Mais ce qui suis devrait marchÚ.
Voici les Útapes :
1) Tu ouvre ton fichier Excel, et tu sÚlectionne toutes ta colonne A (donc ton texte) et tu fais copier.
2) Tu ouvre le Bloc Notes.
3) Et la tu fais Coller.
4) Tu enregeristre ton fichier.
5) Tu rouvre Excel, et tu fais Ouvrir et la tu sÚlectionne ton fichier *.txt (il faut changer l'extansion dans excel)
6) La u arrive dans un assistant. VÚrifie que Largueur Fixe est cochÚ, si oui tu fais suivant.
7) La tu va voir ton texte avec des flÞches qui le sÚpare, tu place les flÚches comme tu veux afin de faire les sÚparations de ton choix.
8) La tu fais Terminer.
Et voila ta tes colonnes qui sont sÚparÚs.
Par contre ton texte d'origine ne sera pas prÚsent, mais tu peut tres bien insÚrer une colonne et faire un copier.
Voila dis moi si ca marche.
@+ | |||||||
Petit astucien | Merci pour ta rÚponse Ludo
cela ne fonctionne pas pour mon classement !
ex :
> 1 Robert (16/01/2004 16:09:21)
> 12 Simon (16/01/2004 16:10:02)
> 47 Gilles (16/01/2004 16:38:39)
> 152 Jacques (16/01/2004 16:44:46)
avec la largeur fixe, si je prend juste avant le "R" de robert, j'aurais pour rÚsultat 15__2Jacques au lieu de 152 Jacques pour le 152Þ.
de plus, les dates et heures d'arrivÚe restent accolÚes aux prÚnoms.
j'ai donc essayÚ avec la largeur variable : lÓ, þa fonctionne pour le classement (suffit de dÚterminer l'emplacement de la sÚparation Ó l'endroit de l'espace), mais les prÚnoms composÚs se retrouvent dans 2 colonnes !
AAAaaargh ! pas simple mon histoire ! | |||||||
![]() ![]() | ex pour 12 Robert dans la cellule A1
tu tapes en A2 =GAUCHE(A1;3)
cela extrait Ó partir de gauche les 3 premiers caractÞres de la chaine soit 12
Ó partir de droite =DROITE(A1;6) soit ROBERT
Tu dois chercher dans les fonctions texte
Je sais qu'on peut faire des test sur la position de l'espace pour savoir si il faut enlever les 1 ou 2 ou 3 premiers
mais je n'ai plus d'exemple sous la main
Personellement, je mettrai ma liste dans Word
je transforme en tableau en donnant comme rÞgle de sÚparation l'espace et je n'ai plus qu'Ó recopier mon tableau dans excel
tout dÚpend de la longueur de ta liste Modifié par sourisdeservice le 19/01/2004 02:01 | |||||||
Petit astucien | Tacoum bonsoir,
Pour rÚsoudre ta mise en forme tu dois passer par une cellule intermÚdiaire de calcul.
Ton tableau:
A1 = 1 Robert (16/01/2004 16:09:10) => Valeur initiale
B1 tu veux: 1
C1 tu veux: Robert
D1 tu veux: (16/01/2004 16:09:10)
Nous allons mettre notre cellule de calcul en F1 ou Ó tout autre endroit.
Nous avons alors:
F1 =Gauche(A1;Cherche("(";A1;1)-1) ==> 1 Robert
B1 =Gauche(A1;Cherche(" ";A1;1)) ==> 1
C1 =Droite(F1;NBCAR(F1)-Cherche(" ";F1;1)+1)==> Robert
D1 =Droite(A1;NBCAR(A1)-Cherche("(";A1;1)+1)==> (16/01/2004 16:09:10)
Tu recopies l'ensemble de ces 4 cellules sur l'ensemble de ton tableau et le tour est jouÚ.
Pour Úviter qu'apparaisse #Valeur dans les cellules Bx, Cx, Dx, Fx si Ax est vide il faut faire un test sur le contenu de la cellule Ax.
Donc en:
F1 =Si(Estnontexte(A1);"";Gauche(A1;Cherche("(";A1;1)-1))
B1 =Si(Estnontexte(A1);"";Gauche(A1;Cherche(" ";A1;1)))
C1 =Si(Estnontexte(A1);"";Droite(F1;NBCAR(F1)-Cherche(" ";F1;1)+1))
D1 =Si(Estnontexte(A1);"";Droite(A1;NBCAR(A1)-Cherche("(";A1;1)+1))
Attention: le format de ta cellule en Ax est
{Chiffres} { Lettres } {(111 az 22 ce que l'on veut)} car teste sur la 1Úre "(" et sur le 1er " ".
Byyyyyyyyyyyyyyeeeeeeeeeeeeeeee Modifié par ximi le 23/01/2004 09:27 | |||||||
Astucien | aprÞs l'importation de tes donnÚes
en seule colonne
tu peux sÚprarer tes donnÚes comme suit :
SÚlectionnez les cellules Ó sÚparer,
Menu DonnÚes, Convertir, DÚlimiter, Suivant
Cochez Espaces, suivant
Format de donnÚes, texte, numÚrique, etc
http://perso.club-internet.fr/bvrve/Astuces_Michel/accueil.htm
| |||||||
Petit astucien | faut que j'essaye tout þa !
j'Útudie et vous tient au courant !
merci pour vos rÚponses ! | |||||||
Petit astucien | Je ne suis pas s¹r d'avoir compris ton pb, mais je me permets de te livrer 2 fonctions personnalisÚes que j'ai programmÚe en VBA pour Excel.
Je les utilise pour d'extraire le nom et le prÚnom d'une personne lorsque les deux sont contenus ds la mÛme cellule:
Si la cellule "A1", contient "Durand Paul", ds une autre cellule la fonction NOM(A1) te rendra "Durand" et la fonction "Prenom(A1)" te rendra Paul.
Pour rendre ces 2 fonctions opÚrationnelles, tu fais un copier-coller dans un module (accÞs au Visual Basic Editor par les touches ALT-F11, puis insertion - module ...)
Function NOM(Ch)
NOM = Left(Ch, InStr(Ch, " ") - 1)
End Function
Function PRENOM(Ch)
PRENOM = Right(Ch, Len(Ch) - InStr(Ch, " ") - 1)
End Function
Bon courage. | |||||||
Petit astucien | Bonjour,
les formules :
> 1 Robert (16/01/2004 16:09:21) =STXT(A1;3;500) =GAUCHE(B1;CHERCHE(" ";B1)-1) =STXT(B1;CHERCHE(" ";B1)+1;500)
> 2 Simon (16/01/2004 16:10:02) =STXT(A2;3;500) =GAUCHE(B2;CHERCHE(" ";B2)-1) =STXT(B2;CHERCHE(" ";B2)+1;500)
> 3 Gilles (16/01/2004 16:38:39) =STXT(A3;3;500) =GAUCHE(B3;CHERCHE(" ";B3)-1) =STXT(B3;CHERCHE(" ";B3)+1;500)
> 4 Jacques (16/01/2004 16:44:46) =STXT(A4;3;500) =GAUCHE(B4;CHERCHE(" ";B4)-1) =STXT(B4;CHERCHE(" ";B4)+1;500)
les rÚsultats :
> 1 Robert (16/01/2004 16:09:21) 1 Robert (16/01/2004 16:09:21) 1 Robert (16/01/2004 16:09:21)
> 2 Simon (16/01/2004 16:10:02) 2 Simon (16/01/2004 16:10:02) 2 Simon (16/01/2004 16:10:02)
> 3 Gilles (16/01/2004 16:38:39) 3 Gilles (16/01/2004 16:38:39) 3 Gilles (16/01/2004 16:38:39)
> 4 Jacques (16/01/2004 16:44:46) 4 Jacques (16/01/2004 16:44:46) 4 Jacques (16/01/2004 16:44:46)
Il te reste Ó faire un copier des colonnes 3 et 4, puis un collage spÚcial / Valeurs, afin de rÚcupÚrer tes donnÚes. Tu peux alors affacer les 2 premiÞres colonnes. | |||||||
Petit astucien | Merci Ó tous et toutes pour votre aide !
pour l'instant, þa fonctionne trÚs bien en recopiant "bÛtement" les formules de ximi !
maintenant je n'ai plus Ó essayer de comprendre "pourquoi" et comment" þa marche ! [img]http://www.vgmasterweb.ch/forum/html/emoticons/taz.gif[/img] | |||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | ||||||||||||||||||
|