extraire données spécifiques d'une cellule
Le
jip

bonjour
dans plusieurs tableaux excel j'ai des données représentant des d=
imensions à extraire pour les relever.
exemple :
"Tracé de la route nationale 12 de Paris à Brest établie ent=
re 1745 et 1780 (voir Atlas de Trudaine). Au dos "Route royale n°12 de=
Paris à Brest. Première carte … Grande route …".=
$ Avant 1756 $ Don Sauvage, avocat à Angers, 1873 $ O. Ms. papier, en=
cre noir et rouge, sans échelle $ 105 x 51"
où je dois extraire 105 x 51
Parfois plusieurs dimensions dans la même cellule, comme :
Atlas : 53 x 31,5 x 2 ; tableau : 53 x 53 ; feuille : indiqué pour cha=
cune $ - "Plan d'assemblage de voiries urbaine de la commune de Routot". $ =
1- Place communale, Grande rue, place du Bourg ; 203 x 61,5 $ 2- Rue de la =
Mailleraye ; 170,5 x 30,1 $ 3- Rue de Caudebec ; 125,5 x 30,1 $ 4- Rue de R=
ougemontiers ; 149,2 x 30,1 $ 5- Rue de Hauville ; 163,5 x 30,1 $ 6- Rue du=
Clos Beaulieu ; 92,5 x 30,1 $ 7- Rue de La Mare Besnard ; 168 x 30,1 $ 8- =
Rue Taupin ; 51 x 30,1 $ 9- Chemin du Fossé Aubrée ; 161 x 30,1 $=
10- Ancien chemin aux Bœufs ; 87 x 30,1 $ 11- Rue Brasseresse ; 154 x=
30,10 $ - Légende des alignements, 4 pages recto-verso plus 1 page ; =
52 x 30,1
Parfois la mention cm figure après les chiffres :
Carte du département de l'Eure d'après l'ordre de Mr Rolland de C=
hambaudoin préfet. $ par Jainin $ 1808 $ gravée, limites en rouge=
. $ éch. en toises $ 45 x 35 cm
Comment faire pour avoir ces données facilement ?
Une idée ?
Merci d'avance
Cordialement.
dans plusieurs tableaux excel j'ai des données représentant des d=
imensions à extraire pour les relever.
exemple :
"Tracé de la route nationale 12 de Paris à Brest établie ent=
re 1745 et 1780 (voir Atlas de Trudaine). Au dos "Route royale n°12 de=
Paris à Brest. Première carte … Grande route …".=
$ Avant 1756 $ Don Sauvage, avocat à Angers, 1873 $ O. Ms. papier, en=
cre noir et rouge, sans échelle $ 105 x 51"
où je dois extraire 105 x 51
Parfois plusieurs dimensions dans la même cellule, comme :
Atlas : 53 x 31,5 x 2 ; tableau : 53 x 53 ; feuille : indiqué pour cha=
cune $ - "Plan d'assemblage de voiries urbaine de la commune de Routot". $ =
1- Place communale, Grande rue, place du Bourg ; 203 x 61,5 $ 2- Rue de la =
Mailleraye ; 170,5 x 30,1 $ 3- Rue de Caudebec ; 125,5 x 30,1 $ 4- Rue de R=
ougemontiers ; 149,2 x 30,1 $ 5- Rue de Hauville ; 163,5 x 30,1 $ 6- Rue du=
Clos Beaulieu ; 92,5 x 30,1 $ 7- Rue de La Mare Besnard ; 168 x 30,1 $ 8- =
Rue Taupin ; 51 x 30,1 $ 9- Chemin du Fossé Aubrée ; 161 x 30,1 $=
10- Ancien chemin aux Bœufs ; 87 x 30,1 $ 11- Rue Brasseresse ; 154 x=
30,10 $ - Légende des alignements, 4 pages recto-verso plus 1 page ; =
52 x 30,1
Parfois la mention cm figure après les chiffres :
Carte du département de l'Eure d'après l'ordre de Mr Rolland de C=
hambaudoin préfet. $ par Jainin $ 1808 $ gravée, limites en rouge=
. $ éch. en toises $ 45 x 35 cm
Comment faire pour avoir ces données facilement ?
Une idée ?
Merci d'avance
Cordialement.
Afin de bien illustrer ce que tu veux faire, copie ce qui suit dans une
cellule d'une feuille de calcul et extrait ce que tu veux obtenir comme
résultat et la disposition de ces données que tu veux avoir dans les
cellules adjacentes. Utilise l'adresse "Cjoint.com" pour publier ce classeur
et retourne-nous l'adresse ici. Tu as plus de chances d'avoir des réponses!
'--------------------------------------
Atlas : 53 x 31,5 x 2 ; tableau : 53 x 53 ; feuille : indiqué pour chacune
$ - "Plan d'assemblage de voiries urbaine de la commune de Routot". $ 1-
Place communale, Grande rue, place du Bourg ; 203 x 61,5 $ 2- Rue de la
Mailleraye ; 170,5 x 30,1 $ 3- Rue de Caudebec ; 125,5 x 30,1 $ 4- Rue de
Rougemontiers ; 149,2 x 30,1 $ 5- Rue de Hauville ; 163,5 x 30,1 $ 6- Rue du
Clos Beaulieu ; 92,5 x 30,1 $ 7- Rue de La Mare Besnard ; 168 x 30,1 $ 8-
Rue Taupin ; 51 x 30,1 $ 9- Chemin du Fossé Aubrée ; 161 x 30,1 $ 10- Ancien
chemin aux Bœufs ; 87 x 30,1 $ 11- Rue Brasseresse ; 154 x 30,10 $ - Légende
des alignements, 4 pages recto-verso plus 1 page ; 52 x 30,1
'--------------------------------------
MichD
pour une première recherche tu pourrais utiliser cette formule en cellule B2 et
à recopier vers la droite,
=STXT($A2;CHERCHE("§";SUBSTITUE($A2;"x";"§";COLONNE()-1))-3;9)
mais ce n'est pas parfait, il faudra adapter avec les vrai données.
isabelle
Le 2017-01-05 à 10:43, jip a écrit :
je vais tester, merci.
Sinon voici le lien pour voir un exemple.
http://www.cjoint.com/c/GAgjfbSEPqR
cordialement
Vu la densité de matière dans une seule cellule, je serais tenté d'orienter
mes recherches en positionnant tous les "x", puis extraire 3 ou 4 caractères
de part et d'autre de chaque x.
Pour ce faire, il "suffit" de chercher la position du premier "x", puis, à
partir de celui-ci, chercher le deuxième, .....
Mais je crains que tu aies une formule au moins aussi épaisse que les
données.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"jip" a écrit dans le message de groupe de discussion :
je vais tester, merci.
Sinon voici le lien pour voir un exemple.
http://www.cjoint.com/c/GAgjfbSEPqR
cordialement
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
ton fichier incluant la macro : http://www.cjoint.com/c/GAgnlrvF8Yi
MichD
peut-être souhaitable de rechercher non pas un "x" mais " x " (espace x
espace)... en espérant que le x soit toujours suivi et précédé d'un espace.
--
JièL xxx
Le 06/01/2017 à 14:12, News.aioe.org a écrit :
le premier "x" est le 140 ème caractère.
Pour plus de facilités, j'ai ajouté une ligne, dans laquelle je cherche la
position des "x", soit la ligne 7
=STXT(A3;CHERCHE("x";$A$3;1)-3;3)&STXT($A$3;CHERCHE("x";$A$3;1);6) ---->donne
53x31,5
MAIS, il faudra à chaque réponse, jongler avec le nb de car à prendre à
partir de x ( ou avant).
http://www.cjoint.com/c/GAgnAIZXN1Y
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Jacquouille" a écrit dans le message de groupe de discussion :
o4nuoo$1ekj$
Bonjour
Vu la densité de matière dans une seule cellule, je serais tenté d'orienter
mes recherches en positionnant tous les "x", puis extraire 3 ou 4 caractères
de part et d'autre de chaque x.
Pour ce faire, il "suffit" de chercher la position du premier "x", puis, à
partir de celui-ci, chercher le deuxième, .....
Mais je crains que tu aies une formule au moins aussi épaisse que les
données.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"jip" a écrit dans le message de groupe de discussion :
je vais tester, merci.
Sinon voici le lien pour voir un exemple.
http://www.cjoint.com/c/GAgjfbSEPqR
cordialement
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
https://www.avast.com/antivirus
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
La nouvelle procédure irait comme suit :
'-----------------------------------------------------------------------------
Sub Extraire()
Dim X As Long, P As Long
Dim Tblo(), F As String, Rg As Range
Dim C As Range, T As String, A As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil2") 'Nom de l'onglet de la feuille de calcul
'Adapter la plage selon ton application
'A1 = ligne de départ de la colonne A jusqu'à la derniere cellule
Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
For Each C In Rg
With C
T = .Value
Do
P = P + 1
P = InStr(P, T, " X", vbTextCompare) 'Légère modification à
cette ligne
If P <> 0 Then
F = Trim(Mid(T, P - 5, 12)) 'Légère modification à cette
ligne
If Not IsNumeric(Left(F, 1)) Then
F = Trim(Right(F, Len(F) - 1))
End If
If Not IsNumeric(Right(F, 1)) Then
F = Trim(Left(F, Len(F) - 1))
End If
A = A + 1
C.Offset(, A) = F
Else
A = 0
Exit Do
End If
Loop
End With
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'-----------------------------------------------------------------------------
MichD
de Hauville ; 163,5 x 30,1 $ 6- Rue du Clos Beaulieu ; 92,5 x 30,1 $ 7- Rue de La Mare Besnard ; 168 x 30,1 $ 8- Rue Taupin ; 51 x 30,1 $ 9- Chemin du Fossé Aubrée ; 161 x 30,1 $ 10- Ancien chemin aux Bœufs ; 87 x 30,1 $ 11- Rue Brasseresse ; 154 x 30,10 $ - Légende des alignements, 4 pages recto-verso plus 1 page ; 52 x 30,1
Si tu as Excel 2013, tu peux utiliser la nouvelle fonction
d'apprentissage "Remplissage instantané"
https://www.youtube.com/watch?v=FtNSfMiccpo
http://nicole-leveque.over-blog.com/article-excel-2013-nouveautes-le-remplissage-instantane-117460060.html
Il suffit d'activer la fonction, de faire toi même les premières
lignes et il complête de lui même.
Quand les données ne sont pas homogène, il va se tromper et quand tu
rectifiera son erreur, il corrigera le reste.
Avantage, pas besoin de coder ou faire des fonction parfois un peu
prise de tête.
Inconvénient, si tu modifies une données d'origine par la suite, il ne
fera rien. Il faudra relancer la fonction.
Si les lignes sont trop longues et complexe, rien n'empêche de
convertir en colonne avec $ comme séparateur, puis il detectera les
ABC x DE cm ou bien les ABC x DE
Si tu n'as pas 2013, et que le fichier excel ne fait pas plusieurs
dizaine de Mo, tu peux toujours les fournir ici ou trouver un Excel
2013
--
« le politiquement correct ne proclame pas la tolérance ; il ne fait qu'organiser la haine. » (Jacques Barzun)
C'est une doctrine obligatoire, qui n'est en réalité que l'expression la plus autoritaire du conformisme