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

XL 2016 Récupération des valeurs non nulles d'une colonne

bentaleb

XLDnaute Nouveau
Bonjour à toutes et à tous.
Je cherche une macro pour récupérer les valeur non nulles d'une colonne A et les mettre dans une colonne B comme une suite et dans le même ordre que dans A, même avec des doublons.
Merci
 

Pièces jointes

  • Classeur test.xlsm
    9.9 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Bentaleb, Chris,
Une autre approche en VBA avec :
VB:
Sub Tri()
    Dim tablo, tablo_out, i, indice
    Application.ScreenUpdating = False
    tablo = Range("A1:A" & Range("A1000000").End(xlUp).Row)
    ReDim tablo_out(UBound(tablo))
    For i = 1 To UBound(tablo)
        If Not IsError(tablo(i, 1)) Then
            tablo_out(indice) = tablo(i, 1)
            indice = indice + 1
        End If
    Next i
    [B1].Resize(UBound(tablo_out), 1).Value = Application.Transpose(tablo_out)
End Sub
ou peut être plus simple en n'utilisant qu'un seul tableau :
Code:
Sub Tri()
    Dim tablo, i, indice
    Application.ScreenUpdating = False
    tablo = Range("A1:A" & Range("A1000000").End(xlUp).Row)
    indice = 1
    For i = 1 To UBound(tablo)
        If Not IsError(tablo(i, 1)) Then
            tablo(indice, 1) = tablo(i, 1)
            indice = indice + 1
        End If
        tablo(i, 1) = ""
    Next i
    [B1].Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
End Sub
 

Pièces jointes

  • Classeur test.xlsm
    17.5 KB · Affichages: 0
  • Classeur test2.xlsm
    17.5 KB · Affichages: 0
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Sur 10 000 lignes le tri par array ne prends que 20ms sur mon vieux PC.
Après le choix de la solution dépend de l'utilisation dans le contexte. Un filtre avancé requiert une zone de critères.
 

Pièces jointes

  • Classeur test3.xlsm
    81.4 KB · Affichages: 0
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…