IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Exclure les cellules vides


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut Exclure les cellules vides
    Bonjour,

    J'ai une petite macro qui trie une sélection.
    Cependant je voudrai exclure les cellules vides de la sélection.

    Merci de votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Tri2()
    Feuil1.Range("D10:G41").Select
    Selection.Sort Key1:=Feuil1.Range("D10"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    End Sub
    Voici le tableau que je veux trier :

    Fut WTI Mai Sens Quantité Prix REMARQUE
    Vente -1 106,85




    Achat 20 106,02
    Achat 10 105,95
    Vente -1 107,17
    Vente -1 107,38
    Vente -1 107,22
    Vente -1 106,80
    Vente -2 106,85
    Vente -2 107,20
    Vente -2 107,05
    Vente -2 107,40
    Vente -1 107,61
    Vente -1 107,75
    Vente -3 108,00
    Vente -1 107,85
    Vente -1 107,74
    Vente -1 108,21
    Vente -1 108,27
    Vente -1 107,50
    Vente -2 107,25
    Vente -5 108,00 Assignation
    Vente -10 102,00 Assignation
    Vente -10 105,50 Assignation
    Vente -10 107,50 Assignation
    Vente -10 106,50 Assignation
    Vente -2 108,20 CAPBS
    Vente -2 108,10 CAPBS
    Vente -2 108,45 CAPBS

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Peut être si j'ai bien compris, fais un filtre auto + Tri. Ce qui donne quelque chose comme ceci:
    Plage de données D10-Dxx avec en D10 le titre de la colonne. (Testé sur Excel 2010)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim LastLig As Long
     
    Application.ScreenUpdating = False
    With Sheets("Feuil1")
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "D").End(xlUp).Row
        .Range("D10:D" & LastLig).AutoFilter Field:=1, Criteria1:="<>"
        .AutoFilter.Sort.SortFields.Add Key:=.Range("D10:D" & LastLig), Order:=xlAscending
        With .AutoFilter.Sort
            .Header = xlYes
            .Apply
        End With
        .AutoFilterMode = False
    End With

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut
    J'ai essayé mais lors de l'excécution ça me marque : "l'indice n'appartient pas à la sélection".

    Pour info le tableau a une taille de D10:G41

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Adapte le nom de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Plage As Range
     
    Application.ScreenUpdating = False
    With Sheets("Feuil1")   'Adapte le nom de la feuille
        .AutoFilterMode = False
        Set Plage = .Range("D10:G41")                         
        Plage.AutoFilter Field:=1, Criteria1:="<>"
        .AutoFilter.Range.Sort Key1:=Plage(1, 1), Order1:=xlAscending, Header:=xlYes
        .AutoFilterMode = False
        Set Plage = Nothing
    End With

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut
    je suis désolé mais ça me marque toujours le même message d'erreur.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Tu peux mettre un extrait de ton fichier (sans données confidentielles).

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut
    Voici.

    Merci pour l'aide
    Fichiers attachés Fichiers attachés

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Mais oui, il fallait adapter le nom de la feuille
    en plus, c'est la ligne 9 qui est la ligne des titres.
    et la plage c'est C9:G41 avec un tri et filtrage sur la 2ème colonne (Colonne D)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Trier()
    Dim Plage As Range
     
    Application.ScreenUpdating = False
    With Sheets("Calc")   'Adapte le nom de la feuille
        .AutoFilterMode = False
        Set Plage = .Range("C9:G24")
        Plage.AutoFilter Field:=2, Criteria1:="<>"
        .AutoFilter.Range.Sort Key1:=Plage(1, 2), Order1:=xlAscending, Header:=xlYes
        .AutoFilterMode = False
        Set Plage = Nothing
    End With

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. bordure pour les cellules vides
    Par jawed84 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 14/01/2008, 14h39
  2. bordures pour les cellules vides
    Par luimême dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 26/12/2007, 12h12
  3. Filtrer sans exclure les champs vides
    Par Atom420 dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/10/2007, 16h56
  4. Enlever les cellules vide dans un ComboBox
    Par Dream Master dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 31/05/2007, 16h14
  5. Afficher les cellules vides...
    Par Invité dans le forum ASP
    Réponses: 1
    Dernier message: 31/08/2005, 17h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo