OVH Cloud OVH Cloud

Tri d'une zone alpphanum

4 réponses
Avatar
ROCHE Pierre
Bonjour à tous.
Je reste perplexe sur une opération qui paraît très simple au premier abord
mais qui devient des plus complexes après des heures de recherhes
infructueuses.
Deux options : soit je suis une brèle finie (rien d'impossible), soit je m'y
prends comme un manche (possible également).

Voici mon problème :
Dans les cellules A1 à A12, j'ai les valeurs suivants :
5;B;3;7;1;6;8;9;4;0;C;2 (une valeur par cellule)
Je n'arrive pas à avoir dans les cellules de B1 à B12 les valeurs de A1 à
A12 triées par ordre croissant sans utiliser de macro ni de cellules
supplémentaires pour des calculs intermédiaires.

Si dans la colonne A, il n'y a aucune valeur alphabétique, j'y arrive sans
problème ayant trouvé l'algorithme adéquat avec du matriciel et la fonction
'petite.valeur()'.
Par contre, avec de l'alphanum, je coince.

Si qulequ'un a déjà rencontré ce type de souci ou si vos neurones sont plus
actifs que le mien, je suis preneur de vos remarques et/ou solutions.

Merci d'avance pour la patience que vous mettrez en oeuvre à étudier mon
cas.

4 réponses

Avatar
MichDenis
Ta liste en A1:A12
Tu sélectionnes la plage B1:B12
En B1, tu saisis la formule suivante :
ÊR(PETITE.VALEUR(CODE(A1:A12);LIGNE(1:12)))
Et tu valides la formule par Ctrl + Maj + Enter

Résultat : ordre croissant des valeurs selon le code Ascii du caractère saisi dans les cellules.



"ROCHE Pierre" a écrit dans le message de news:
%
Bonjour à tous.
Je reste perplexe sur une opération qui paraît très simple au premier abord
mais qui devient des plus complexes après des heures de recherhes
infructueuses.
Deux options : soit je suis une brèle finie (rien d'impossible), soit je m'y
prends comme un manche (possible également).

Voici mon problème :
Dans les cellules A1 à A12, j'ai les valeurs suivants :
5;B;3;7;1;6;8;9;4;0;C;2 (une valeur par cellule)
Je n'arrive pas à avoir dans les cellules de B1 à B12 les valeurs de A1 à
A12 triées par ordre croissant sans utiliser de macro ni de cellules
supplémentaires pour des calculs intermédiaires.

Si dans la colonne A, il n'y a aucune valeur alphabétique, j'y arrive sans
problème ayant trouvé l'algorithme adéquat avec du matriciel et la fonction
'petite.valeur()'.
Par contre, avec de l'alphanum, je coince.

Si qulequ'un a déjà rencontré ce type de souci ou si vos neurones sont plus
actifs que le mien, je suis preneur de vos remarques et/ou solutions.

Merci d'avance pour la patience que vous mettrez en oeuvre à étudier mon
cas.
Avatar
ROCHE Pierre
Cà marche super bien !!

Pour aller un peu plus loin :
Même question quand les cellules contenant du texte ont plus d'un caractère
ou un mélange des 2 :
exemple => à la place de B, j'ai Bruno et je garde C dans ma cellule A11
Là, je vais pouvoir traiter le cas général.

Encore merci pour la suite et la nouvelle réponse


"MichDenis" a écrit dans le message de news:
%
Ta liste en A1:A12
Tu sélectionnes la plage B1:B12
En B1, tu saisis la formule suivante :
ÊR(PETITE.VALEUR(CODE(A1:A12);LIGNE(1:12)))
Et tu valides la formule par Ctrl + Maj + Enter

Résultat : ordre croissant des valeurs selon le code Ascii du caractère
saisi dans les cellules.



"ROCHE Pierre" a écrit dans le message de news:
%
Bonjour à tous.
Je reste perplexe sur une opération qui paraît très simple au premier
abord
mais qui devient des plus complexes après des heures de recherhes
infructueuses.
Deux options : soit je suis une brèle finie (rien d'impossible), soit je
m'y
prends comme un manche (possible également).

Voici mon problème :
Dans les cellules A1 à A12, j'ai les valeurs suivants :
5;B;3;7;1;6;8;9;4;0;C;2 (une valeur par cellule)
Je n'arrive pas à avoir dans les cellules de B1 à B12 les valeurs de A1 à
A12 triées par ordre croissant sans utiliser de macro ni de cellules
supplémentaires pour des calculs intermédiaires.

Si dans la colonne A, il n'y a aucune valeur alphabétique, j'y arrive
sans
problème ayant trouvé l'algorithme adéquat avec du matriciel et la
fonction
'petite.valeur()'.
Par contre, avec de l'alphanum, je coince.

Si qulequ'un a déjà rencontré ce type de souci ou si vos neurones sont
plus
actifs que le mien, je suis preneur de vos remarques et/ou solutions.

Merci d'avance pour la patience que vous mettrez en oeuvre à étudier mon
cas.






Avatar
MichDenis
Au lieu d'une formule, copie ce qui suit
dans le module feuille où l'action se déroule :

'Dans le haut du module
Option Compare Text
'---------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range, S()
Set Rg = Range("A1:A12")
ReDim S(1 To Rg.Rows.Count, 1)
If Not Intersect(Target, Rg) Is Nothing Then
S = Rg
Application.EnableEvents = False
Rg.Offset(, 1) = BubbleSort(S)
Application.EnableEvents = True
End If
End Sub
'---------------------------------------
Function BubbleSort(List())
' Sorts the List array in ascending order
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp

First = LBound(List)
Last = UBound(List)
For i = First To Last - 1
For j = i + 1 To Last
If List(i, 1) > List(j, 1) Then
Temp = List(j, 1)
List(j, 1) = List(i, 1)
List(i, 1) = Temp
End If
Next j
Next i
BubbleSort = List
End Function
'---------------------------------------






"ROCHE Pierre" a écrit dans le message de news:

Cà marche super bien !!

Pour aller un peu plus loin :
Même question quand les cellules contenant du texte ont plus d'un caractère
ou un mélange des 2 :
exemple => à la place de B, j'ai Bruno et je garde C dans ma cellule A11
Là, je vais pouvoir traiter le cas général.

Encore merci pour la suite et la nouvelle réponse


"MichDenis" a écrit dans le message de news:
%
Ta liste en A1:A12
Tu sélectionnes la plage B1:B12
En B1, tu saisis la formule suivante :
ÊR(PETITE.VALEUR(CODE(A1:A12);LIGNE(1:12)))
Et tu valides la formule par Ctrl + Maj + Enter

Résultat : ordre croissant des valeurs selon le code Ascii du caractère
saisi dans les cellules.



"ROCHE Pierre" a écrit dans le message de news:
%
Bonjour à tous.
Je reste perplexe sur une opération qui paraît très simple au premier
abord
mais qui devient des plus complexes après des heures de recherhes
infructueuses.
Deux options : soit je suis une brèle finie (rien d'impossible), soit je
m'y
prends comme un manche (possible également).

Voici mon problème :
Dans les cellules A1 à A12, j'ai les valeurs suivants :
5;B;3;7;1;6;8;9;4;0;C;2 (une valeur par cellule)
Je n'arrive pas à avoir dans les cellules de B1 à B12 les valeurs de A1 à
A12 triées par ordre croissant sans utiliser de macro ni de cellules
supplémentaires pour des calculs intermédiaires.

Si dans la colonne A, il n'y a aucune valeur alphabétique, j'y arrive
sans
problème ayant trouvé l'algorithme adéquat avec du matriciel et la
fonction
'petite.valeur()'.
Par contre, avec de l'alphanum, je coince.

Si qulequ'un a déjà rencontré ce type de souci ou si vos neurones sont
plus
actifs que le mien, je suis preneur de vos remarques et/ou solutions.

Merci d'avance pour la patience que vous mettrez en oeuvre à étudier mon
cas.






Avatar
JB
Bonsoir,

AMHA, ce n'est pas possible en matriciel.

Tri VBA dès la saisie en A1:A12:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([A1:A12], Target) Is Nothing Then
[A1:A12].Copy [B1]
[B1:B12].Sort key1:=[B1]
End If
End Sub

http://cjoint.com/?clxUxju40d

Formule matricielle pour trier de l'alpha seul:

=INDEX(A1:A12;EQUIV(LIGNE(INDIRECT("1:"&LIGNES(A1:A12)));NB.SI(A1:A12;"< ="&A1:A12);
0))

Cordialement JB


On 11 fév, 20:57, "ROCHE Pierre" wrote:
Cà marche super bien !!

Pour aller un peu plus loin :
Même question quand les cellules contenant du texte ont plus d'un carac tère
ou un mélange des 2 :
exemple => à la place de B, j'ai Bruno et je garde C dans ma cellule A11
Là, je vais pouvoir traiter le cas général.

Encore merci pour la suite et la nouvelle réponse

"MichDenis" a écrit dans le message de news:
%



Ta liste en A1:A12
Tu sélectionnes la plage B1:B12
En B1, tu saisis la formule suivante :
ÊR(PETITE.VALEUR(CODE(A1:A12);LIGNE(1:12)))
Et tu valides la formule par Ctrl + Maj + Enter

Résultat : ordre croissant des valeurs selon le code Ascii du caract ère
saisi dans les cellules.

"ROCHE Pierre" a écrit dans le message de n ews:
%
Bonjour à tous.
Je reste perplexe sur une opération qui paraît très simple au pre mier
abord
mais qui devient des plus complexes après des heures de recherhes
infructueuses.
Deux options : soit je suis une brèle finie (rien d'impossible), soit je
m'y
prends comme un manche (possible également).

Voici mon problème :
Dans les cellules A1 à A12, j'ai les valeurs suivants :
5;B;3;7;1;6;8;9;4;0;C;2 (une valeur par cellule)
Je n'arrive pas à avoir dans les cellules de B1 à B12 les valeurs d e A1 à
A12 triées par ordre croissant sans utiliser de macro ni de cellules
supplémentaires pour des calculs intermédiaires.

Si dans la colonne A, il n'y a aucune valeur alphabétique, j'y arrive
sans
problème ayant trouvé l'algorithme adéquat avec du matriciel et la
fonction
'petite.valeur()'.
Par contre, avec de l'alphanum, je coince.

Si qulequ'un a déjà rencontré ce type de souci ou si vos neurones sont
plus
actifs que le mien, je suis preneur de vos remarques et/ou solutions.

Merci d'avance pour la patience que vous mettrez en oeuvre à étudie r mon
cas.- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -