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

XL 2010 Tri alphabétique sur plusieurs colonnes

jokerfidelio

XLDnaute Occasionnel
Bonjour a tous,
J ai essayé plusieurs code vba mais sans succès.

J aurais souhaité pouvoir trier les données de plusieurs colonne
exemple B.D.F par ordre alphabétique (avec suite sur les 3 colonnes de A 》Z)
automatiquement a chaque nouvelles entrée ou a l ouverture du fichier.

Merci de votre aide
 

Dranreb

XLDnaute Barbatruc
Réécrit comme ça et rappatrié dans le module Feuil11 ça a l'air de marcher, mais c'est un peu lent, le temps de réponse.
VB:
Private Sub TextBox1_Change()
Dim Ligne&, Colonne&
    Application.ScreenUpdating = False
    Range("B2:B25,D2:D25,F2:F25").Interior.ColorIndex = 2
    ListBox1.Clear

    If TextBox1 <> "" Then
        For Ligne = 2 To 25
            For Colonne = 2 To 6 Step 2
                If Cells(Ligne, Colonne) Like "*" & TextBox1 & "*" Then
                    Cells(Ligne, Colonne).Interior.ColorIndex = 43
                    ListBox1.AddItem Cells(Ligne, Colonne)
                End If
            Next
        Next
    End If
End Sub
 

jokerfidelio

XLDnaute Occasionnel


j ai bien copier le code dans le module mais cela ne fonctionne pas
 

Dranreb

XLDnaute Barbatruc
Comprends pas la question.
Il n'y a pas 36 instruction qui utilisent l'opérateur Like
Je soupçonne que ça ne marche pas parce que vous tapez des minuscules.
Alors mettez en majuscules des deux cotés avec UCase
 

job75

XLDnaute Barbatruc
Re,

Avec Option Compare Text en haut de la feuille la casse est ignorée.

Et il vaut mieux commencer par la boucle sur les colonnes pour bénéficier du classement :
Code:
Option Compare Text 'la casse est ignorée

Private Sub TextBox1_Change()
Dim Colonne%, Ligne&
    Application.ScreenUpdating = False
    Range("B2:B1000,D2:D1000,F2:F1000").Interior.ColorIndex = xlNone
    ListBox1.Clear
    If TextBox1 <> "" Then
        For Colonne = 2 To 6 Step 2
            For Ligne = 2 To [A1].CurrentRegion.Rows.Count
                If Cells(Ligne, Colonne) Like "*" & TextBox1 & "*" Then
                    Cells(Ligne, Colonne).Interior.ColorIndex = 43
                    ListBox1.AddItem Cells(Ligne, Colonne)
                End If
            Next
        Next
    End If
End Sub
A+
 

jokerfidelio

XLDnaute Occasionnel

j'ai copié le code dans le module 1 mais cela ne repond toujours pas ! est ce moi qui fait une mauvaise manipulation ?
fichier joint
 

Pièces jointes

  • Tri sur 3 colonnes(2 bis).xlsm
    37.2 KB · Affichages: 26

Dranreb

XLDnaute Barbatruc
On a dit : DANS LE MODULE DE LA FEUILLE
Pas dans un module standard. Ça ne sert à rien. Il ne connait pas d'objet Textbox1, c'est un objet de la feuille. Et d'ailleurs, jamais aucune procédure évènement n'est utilisable dans un module standard, seulement dans les modules objets.
 

jokerfidelio

XLDnaute Occasionnel
je comprend bien le cheminement avec soit UCase(,
ou ajouter Option Compare Text après Option Explicit

mais j'ai beau essayé tout ces codes je n'arrive a rien ! je n'arrive pas ecrire ce code et ou le placer j'ai a chaque fois un message d erreur
 

Discussions similaires

Réponses
8
Affichages
389
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…