Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

extraire années extrèmes d'une cellule

4 réponses
Avatar
jipeache
bonjour,
dans une cellule A1, plusieurs ann=E9es sont mentionn=E9es sous la forme
"19xx" dans un texte assez long, il peut y avoir entre 2 et environ 20
ann=E9es.
Je souhaite extraire et recopier en cellule B1 les ann=E9es extr=E8mes
contenues dans A1 (l'ann=E9e la plus ancienne et l'ann=E9e la plus
r=E9cente) s=E9par=E9es par un tiret, ex : 1910-1968.
Comment faire ?
Merci d'avance

4 réponses

Avatar
Poulpor
Bonjour Jipeache,

Je vois deux solutions pour ton problème :

- ou créer une macro sur mesure, qui n'est pas évidente
- ou une procédure simple

Je propose la procédure :

1/ Sélectionner la colonne - données / convertir et séparer en délimité avec
séparateur "-"
2/ employer les formules min et max pour obtenir les années extrèmes

Evidemment, si ce projet est à renouveler plusieurs fois, on pourra
réfléchir à la macro

En sespérant avoir fait avancé l'affaire,

Poulpor



bonjour,
dans une cellule A1, plusieurs années sont mentionnées sous la forme
"19xx" dans un texte assez long, il peut y avoir entre 2 et environ 20
années.
Je souhaite extraire et recopier en cellule B1 les années extrèmes
contenues dans A1 (l'année la plus ancienne et l'année la plus
récente) séparées par un tiret, ex : 1910-1968.
Comment faire ?
Merci d'avance




Avatar
JB
Bonjour,

On suppose que les années sont séparées par - :

1980-1960-1970-2004-2007-2002

Dans un module:

Function MiniMaxi(cell As Range)
temp = Split([A1], "-")
mn = 9999
mx = 0
For Each c In temp
If Val(c) < mn Then mn = Val(c)
If Val(c) > mx Then mx = Val(c)
Next c
MiniMaxi = mn & "-" & mx
End Function

Dans le tableur:

=minimaxi(A1)

JB

On 21 mar, 10:20, "jipeache" wrote:
bonjour,
dans une cellule A1, plusieurs années sont mentionnées sous la forme
"19xx" dans un texte assez long, il peut y avoir entre 2 et environ 20
années.
Je souhaite extraire et recopier en cellule B1 les années extrèmes
contenues dans A1 (l'année la plus ancienne et l'année la plus
récente) séparées par un tiret, ex : 1910-1968.
Comment faire ?
Merci d'avance


Avatar
JB
Version années dans texte:

xx 1960 yy 1980 zzz 2007 xxxxx 2006

Function MiniMaxi2(cell As Range)
Dim temp()
k = 0
For i = 1 To Len(cell) - 4
If Mid(cell, i, 4) Like "####" Then
k = k + 1
ReDim Preserve temp(1 To k)
temp(k) = Val(Mid(cell, i, 4))
End If
Next i
mn = 9999
mx = 0
For Each c In temp
If c < mn Then mn = c
If c > mx Then mx = c
Next c
MiniMaxi2 = mn & "-" & mx
End Function

JB


On 21 mar, 10:20, "jipeache" wrote:
bonjour,
dans une cellule A1, plusieurs années sont mentionnées sous la forme
"19xx" dans un texte assez long, il peut y avoir entre 2 et environ 20
années.
Je souhaite extraire et recopier en cellule B1 les années extrèmes
contenues dans A1 (l'année la plus ancienne et l'année la plus
récente) séparées par un tiret, ex : 1910-1968.
Comment faire ?
Merci d'avance


Avatar
jipeache
Version années dans texte:

xx 1960 yy 1980 zzz 2007 xxxxx 2006

Function MiniMaxi2(cell As Range)
Dim temp()
k = 0
For i = 1 To Len(cell) - 4
If Mid(cell, i, 4) Like "####" Then
k = k + 1
ReDim Preserve temp(1 To k)
temp(k) = Val(Mid(cell, i, 4))
End If
Next i
mn = 9999
mx = 0
For Each c In temp
If c < mn Then mn = c
If c > mx Then mx = c
Next c
MiniMaxi2 = mn & "-" & mx
End Function

JB

Merci beaucoup pour vos réponses.

La supposition de JB est la bonne, les dates sont mélangées dans le
texte.
Je viens de tester sur un bout du tableau, la fonction fonctionne ;-)
Merci encore.

Pour mieux expliquer l'ancien pb voici un ex de cellule à traiter :
"Armentières-sur-Avre : IPCAR Odile, élevage cunicole (1979). Arnière s-
sur-Iton : CERALIT/Fabrication de produits céramiques, SARL, extension
de l'activité (1978). Asnières : DARDEL Jean, agrandissement de la
pisciculture (1977-1978) ; GAUTIER-LEVASSEUR Fromageries, SA,
transfert (1979-1980). Avrilly : PELEY Michel, exploitation d'un
chenil de garderie (1975-1980). Bâlines : DUMORTIER Roger, création
d'un élevage porcin (1977-1978). Barquet : LAMIOT Jean, élevage
avicole (1978-1980). Barre-en-Ouche (La) : CUDORGE Rémy, renonciation
à un projet d'implantation d'un élevage de perdreaux (1979) ; STAREX,
SA, reprise d'un dépôt de liquides inflammables précédemment exploi té
par la Sté SHELL BERRE (1978). Beaubray : BACLE Robert, exploitation
d'un élevage de canards de Barbarie en remplacement de l'élevage
avicole existant (1968-1979)., etc..."