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 :

Code qui fonctionne à moitié [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Bonsoir le forum,


    J'ai ce code ci-dessous qui me fais un trie dans mon tableau de la colonne F puis de la colonne G, le problème que j'ai , c'est que j'ai 105 lignes et que si j'en ai que 6 de rempli, elle se trie et se classe en bas du tableau alors que je voudrais qu'il reste de la ligne 7 à 12 si je n'ai que 6 lignes de rempli
    merci de votre aide
    jac

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub TrieVeterans_M()
    '
    ' TrieVeterans Macro
    '
     
    '
        Range("B7:G105").Select
        ActiveWorkbook.Worksheets("VeteransHommes").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("VeteransHommes").Sort.SortFields.Add Key:=Range( _
            "F7:F105"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        ActiveWorkbook.Worksheets("VeteransHommes").Sort.SortFields.Add Key:=Range( _
            "G7:G105"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("VeteransHommes").Sort
            .SetRange Range("B7:G105")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub
    Bonjour à Tous,

    Personne à une idée , pourquoi le rangement se fait en bas du tableau alors que j'ai des résultats que de la ligne 7 à la ligne 12 et quand je lance la macro, elle me fait bien le trie mais me les place de la ligne 100 à la ligne 105 donc au dessus , c'est vide, il est vrai que j'ai des formules dans les colonnes sauf les colonnes E et G et sur la colonne G, il y a un trie.
    jacky

    Re Bonjour à tous,

    Je viens de faire un essai en triant d'abord la colonne G avant la colonne F et la, cela classe bien de la ligne 7 à la ligne 12 , donc c'est bien à cause des formules qui sont en colonne F que cela pose problème .Mais le problème que j'ai, c'est que c'est d'abord la colonne F qui doit être trier en priorité, donc je n'arrive pas à trouver la solution
    merci
    jacky

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Au lieu de trier sur un nombre fixe de ligne, essaye de trier sur le nombre de lignes réellement utilisées.

    Pour déterminer la dernière ligne utilisée dans la plage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Dim lastLine As Long
        lastLine = Range("B7:G7").End(xlDown).Row
    Ensuite au lieu d'écrire Range ("F7:F105"), on écrira Range ("F7:F" & lastLine).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Bonjour Le Forum,BlueMonkey,

    j'ai fais comme ceci et j'ai une erreur, je te mets le code, j'ai du faire une erreur
    merci
    jacky
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub TrieVeterans_M()
     
        Dim lastLine As Long
        lastLine = Range("B7:G7").End(xlDown).Row
        Range("B7:G105").Select
        ActiveWorkbook.Worksheets("VeteransHommes").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("VeteransHommes").Sort.SortFields.Add Key:=Range( _
            "F7:F" & lastligne), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        ActiveWorkbook.Worksheets("VeteransHommes").Sort.SortFields.Add Key:=Range( _
            "G7:G105"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("VeteransHommes").Sort
            .SetRange Range("B7:G105")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Salut,

    j'ai une erreur
    Quel code/message d'erreur ? sur quelle ligne ?

    Pour infos dans ma version d'Excel, le code du post #1, provoque une erreur d'exécution dès la ligne 8 Worksheets("VeteransHommes").Sort.SortFields.Clear.
    Erreur 438 Propriété ou méthode non gérée par cet objet.

    L'idée suggérée au post #2, est de remplacer toutes les références à une fin de ligne n°105 par & lastLine ; que soit dans la colonne F ou non.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Bonjour Blue Monkey,

    l'erreur est sur la ligne 4 qui est en jaune
    merci
    jacky

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub TrieVeterans_M()
    '
        Dim lastLine As Long
        lastLine = Range("B7:G7").End(xlDown).Row
        ActiveWorkbook.Worksheets("VeteransHommes").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("VeteransHommes").Sort.SortFields.Add Key:=Range( _
            "F7:F" & lastligne), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        ActiveWorkbook.Worksheets("VeteransHommes").Sort.SortFields.Add Key:=Range( _
            "G7:G105"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("VeteransHommes").Sort
            .SetRange Range("B7:G105")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    sans vouloir me meler et sans avoir tout parcouru de l'échange, j'aurais écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lastLine = Range("B7:G7").CurrentRegion.Rows.Count + 6

    car il suffit de regarder le résultat avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lastLine = Range("B7:G7").End(xlDown).Row
    chez moi, dans ce cas lastline = 1048576 (Excel 2007)

    mais je peux me tromper dans le contexte !

    PS : evites le jaune illisible et atroce
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

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

Discussions similaires

  1. Recherche code qui fonctionne pour écrire du XML
    Par mbar dans le forum Windows Forms
    Réponses: 4
    Dernier message: 05/08/2009, 18h18
  2. Code qui marche à moitié (copie d'une feuille à une autre)
    Par thierryakaguy dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 22/07/2009, 16h58
  3. [MySQL] Requête qui fonctionne à moitié
    Par TomDelonge dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 12/03/2009, 16h24
  4. code qui fonctionne pas.
    Par kate59 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 26/01/2009, 23h55
  5. code qui fonctionne en local et pas sur le net
    Par vraipolite dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/08/2005, 10h10

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