Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[ RESOLU ] Classer par ordre alphabetique!!!!!

Guido

XLDnaute Accro
Bonjour Le Forum

J'aimerais classer une plage par ordre alphabetique..

Voir petit fichier

Merci

Guido
 

Pièces jointes

  • Classement a-z.xls
    19 KB · Affichages: 103
  • Classement a-z.xls
    19 KB · Affichages: 105

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Classer par ordre alphabetique!!!!!

Bonjour Guido,

une solution par macro en versions 2003 et 2007

à+
Philippe
 

Pièces jointes

  • 111.xls
    36 KB · Affichages: 84
  • 111.xlsm
    20.3 KB · Affichages: 87
  • 111.xls
    36 KB · Affichages: 74
  • 111.xlsm
    20.3 KB · Affichages: 90
Dernière édition:

JHA

XLDnaute Barbatruc
Re : Classer par ordre alphabetique!!!!!

Bonjour à tous,

Un essai en pièce jointe
Autrement par un simple trie Sélectionner la plage "B2:H22"
Ruban onglet Données/trier /Trier par: sélectionner "Lgt"

JHA
 

Pièces jointes

  • Classement a-z.xls
    34 KB · Affichages: 98
  • Classement a-z.xls
    34 KB · Affichages: 92
Dernière édition:

Guido

XLDnaute Accro
Re : Classer par ordre alphabetique!!!!!

Bonjour Phillipe,et JHA et le Forum

BHA..

J'ai bien fais comme tu la dit

Je selectionne les cellules B2:H22,ensuite donnees ,trié

J'ai le chois colonnes de B a H, mais pas Lgt.

donc je choisi la plage B2:H22

ca ne fonctionne pas

voir capture de l'ecran

Ou ais je fait l'erreur...

Merci

Guido
 

Pièces jointes

  • Capture du resultat.....jpg
    59.3 KB · Affichages: 95

JHA

XLDnaute Barbatruc
Re : Classer par ordre alphabetique!!!!!

Bonjour à tous,

Essayez de sélectionner "B3:H22"
trier colonne "H"

J'ai réalisé le trie sur la feuille 1

JHA
 

Pièces jointes

  • Classement a-z.xls
    33 KB · Affichages: 87
  • Classement a-z.xls
    33 KB · Affichages: 80

job75

XLDnaute Barbatruc
Re : Classer par ordre alphabetique!!!!!

Bonjour Guido, Philippe, JHA,

Avec la fonction personnalisée TriAlpha et la macro de tri Quick sort :

Code:
Function TriAlpha(r1, r2)
Dim a, b, vide&, i&, c()
a = r2: b = r1
vide = 2
For i = 1 To UBound(a)
  If a(i, 1) = "" Then
    vide = vide + 1
    a(i, 1) = String(vide, "z")
  End If
Next
tri a, b, 1, UBound(a)
ReDim c(1 To UBound(a), 1 To 2)
For i = 1 To UBound(a)
  If a(i, 1) Like "zzz*" Then a(i, 1) = ""
  c(i, 1) = b(i, 1)
  c(i, 2) = a(i, 1)
Next
TriAlpha = c 'matrice
End Function

Sub tri(a, b, gauc, droi)     ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2, 1)
g = gauc: d = droi
Do
    Do While a(g, 1) < ref: g = g + 1: Loop
    Do While ref < a(d, 1): d = d - 1: Loop
    If g <= d Then
      temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
      temp = b(g, 1): b(g, 1) = b(d, 1): b(d, 1) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, b, g, droi)
If gauc < d Then Call tri(a, b, gauc, d)
End Sub
La fonction est entrée matriciellement sur toute la plage V3:W22.

Fichier joint.

A+
 

Pièces jointes

  • Classement a-z(1).xls
    43.5 KB · Affichages: 78

job75

XLDnaute Barbatruc
Re : Classer par ordre alphabetique!!!!!

Re,

Sur Excel 2003 et versions antérieures il faut peut-être (je ne me souviens plus) une formule pour la MFC :

Code:
=W3<>""
Fichier (2).

A+
 

Pièces jointes

  • Classement a-z(2).xls
    40 KB · Affichages: 91

job75

XLDnaute Barbatruc
Re : Classer par ordre alphabetique!!!!!

Re,

Une autre solution avec cette macro évènementielle :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range
On Error Resume Next
Set P = [A:A].SpecialCells(xlCellTypeConstants, 1).EntireRow
On Error GoTo 0
If P Is Nothing Then Exit Sub
For Each P In P.Areas
  If Not Intersect(Target, P) Is Nothing Then
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Union(P(0, 2), P(0, 8), P.Columns(2), P.Columns(8)).Copy P(0, 22) 'avec titres
    P.Sort P.Columns(8), xlAscending, Header:=xlNo
    P.Resize(, 21).Sort P.Columns(1), xlAscending, Header:=xlNo
    Application.EnableEvents = True
  End If
Next
End Sub
Fichier joint.

Noter que la plage V3:W22 est rétablie si l'on essaie de la modifier manuellement...

Noter que la macro peut fonctionner sur plusieurs tableaux placés les uns au-dessous des autres.

A+
 

Pièces jointes

  • Classement a-z macro évènementielle(1).xls
    38.5 KB · Affichages: 85
Dernière édition:

Guido

XLDnaute Accro
Re : Classer par ordre alphabetique!!!!!

Bonjour a Tous,ttes

Je reviens vers Vous.

Je n'ai pas reussit a inserer vos proposition dans ma feuille,

Dommage. Donc je Vous propose de m'aider ( une fois de plus,merci ) a faire adapté ma demande sur le fichier ci joint

Merci a plus

Guido
 

Pièces jointes

  • Classer par ordre alphabetique.SVP.xls
    309 KB · Affichages: 96

job75

XLDnaute Barbatruc
Re : Classer par ordre alphabetique!!!!!

Bonjour Guido,

Trop souvent vous présentez des problèmes qu'ensuite vous compliquez

Alors bien sûr les solutions proposées ne fonctionnent pas, ou vous ne savez pas les adapter.

Je pense cependant qu'ici ma solution avec la fonction TriAlpha est facile à adapter.

A+
 

job75

XLDnaute Barbatruc
Re : Classer par ordre alphabetique!!!!!

Re,

Fichier joint, il suffit d'appliquer la méthode de mon post #6 (sans oublier la MFC).

Et pour la plage AJ3:AL4 c'est basique [EDIT] =REPT(W3;W3<>"") en AK3 c'est mieux.

A+
 

Pièces jointes

  • Classer par ordre alphabetique.SVP(1).xls
    331.5 KB · Affichages: 69
Dernière édition:

job75

XLDnaute Barbatruc
Re : Classer par ordre alphabetique!!!!!

Re,

En vous relisant, je comprends que les formules ne vous intéressent pas.

Vous voulez un bouton, alors affectez-lui cette macro :

Code:
Sub Classer()
Dim i&, P As Range, j As Byte
Application.ScreenUpdating = False
For i = 1 To ActiveSheet.UsedRange.Rows.Count
  If Cells(i, 2) = "N°" Then
    Set P = Rows(i + 1).Resize(20).Cells
    Union(P(0, 2), P(0, 8), P.Columns(2), P.Columns(8)).Copy P(0, 22) 'avec titres
    P.Columns(22).Resize(, 2).Sort P.Columns(23), xlAscending, Header:=xlNo
    P(1, 36).Resize(2, 3) = "" 'RAZ
    For j = 1 To 2 'les 2 premiers
      If P(j, 23) <> "" Then
        P(j, 36) = P(j, 22)
        P(j, 37) = P(j, 23)
        P(j, 38) = Application.VLookup(P(j, 36), P.Columns(2).Resize(, 3), 3, 0)
      End If
    Next j
  End If
Next i
End Sub
Fichier (2).

Bonne fin de soirée.
 

Pièces jointes

  • Classer par ordre alphabetique.SVP(2).xls
    321.5 KB · Affichages: 96

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…