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 :

Résultat différent avec code modifié [XL-2016]


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
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Par défaut Résultat différent avec code modifié
    Bonjour,

    N'étant pas un doué du code VBA, j'ai fais réaliser un code pour trier des commandes.
    Le principe c'est qu'à partir d'un fichier de commandes, le code applique plusieurs filtres et tris pour arriver au résultat voulu.
    Le problème auquel je me heurte est le suivant : j'ai deux lignes de code qui ne donnent pas le même résultat en fonction de certains paramètres (normal, me direz-vous ). Et bien, la question que je me pose c'est quelle est la différence entre ces deux codes pour que je comprenne l'erreur dans le résultat attendu. Voici les deux lignes de codes avec pour chaque ligne les deux versions : si quelqu'un pouvait m'expliquer la différence qu'il y a entre les deux versions de chaque ligne, ce serait très sympa.

    VERSION 1
    Ligne1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille_2.Range(Cells(ligne_deb_tri, 1), Cells(ligne_fin_tri, 14)).Select
    Ligne2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille_2.Sort.SortFields.Add Key:=Range(Cells(ligne_deb_tri, 4), Cells(ligne_fin_tri, 4)), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal


    VERSION 2
    Ligne1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille_2.Range(Cells(2, 1), Cells(ligne_fin_tri, 30)).Select
    Ligne2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille_2.Sort.SortFields.Add Key:=Range(Cells(2, 4), Cells(ligne_fin_tri, 4)), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    Petite explication quand même :
    avec la version2, le tri des lignes s'effectue au bon endroit (à la suite de lignes déjà triées) mais une colonne (ajoutée à l'aide d'un autre code n'est pas triée)
    avec la version 1, le tri des lignes n'est pas effectué mais la colonne qui est ajoutée à l'aide d'un autre code est bien triée

    Je mets le code VERSION2 pour visualiser la place des lignes dans ce dernier :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    'calcul de la première ligne à trier
        dern_ligne_2 = feuille_2.Range("A" & Rows.Count).End(xlUp).Row
        ligne_deb_tri = dern_ligne_2 + 1
     
        'copie des lignes restantes vers nouvelle feuille
        For i = 2 To dern_ligne_1
            If feuille_1.Cells(i, 15) = "" Then
                feuille_1.Select
                Rows(i).Select
                Selection.Copy
                dern_ligne_2 = feuille_2.Range("A" & Rows.Count).End(xlUp).Row
                feuille_2.Select
                Cells(dern_ligne_2 + 1, 1).Select
                ActiveSheet.Paste
            End If
        Next i
     
        'calcul de la dernière ligne à trier
        dern_ligne_2 = feuille_2.Range("A" & Rows.Count).End(xlUp).Row
        ligne_fin_tri = dern_ligne_2
     
        'tri des lignes restantes selon la "référence vendeur" = colonne "D" par ordre décroissant :
        'msgbox "Tri de l" & ligne_deb_tri & " à l" & ligne_fin_tri 'dev
        feuille_2.Range(Cells(2, 1), Cells(ligne_fin_tri, 30)).Select
        Application.CutCopyMode = False
        feuille_2.Sort.SortFields.Clear
        feuille_2.Sort.SortFields.Add Key:=Range(Cells(2, 4), Cells(ligne_fin_tri, 4)), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With feuille_2.Sort
            .SetRange Range(Cells(2, 1), Cells(2, 14))
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Il doit y avoir un truc, mais je ne vois pas car je ne connais pas les fonctions.
    PS : je n'arrive plus à joindre la personne qui m'a réalisé le travail.
    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Citation Envoyé par Eric26 Voir le message
    ... Et bien, la question que je me pose c'est quelle est la différence entre ces deux codes pour que je comprenne l'erreur dans le résultat attendu. Voici les deux lignes de codes avec pour chaque ligne les deux versions : si quelqu'un pouvait m'expliquer la différence qu'il y a entre les deux versions de chaque ligne, ce serait très sympa.
    VERSION 1
    Ligne1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille_2.Range(Cells(ligne_deb_tri, 1), Cells(ligne_fin_tri, 14)).Select
    VERSION 2
    Ligne1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille_2.Range(Cells(2, 1), Cells(ligne_fin_tri, 30)).Select

    ton début de ligne ne doit pas focément à 2 dans la V2 oui

    ta dernière colonne est soit 14 soit 30 donc tes dernières colonnes ne sont pas pris dans l'une

    voilà à première vue comme cela

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Par défaut
    Bonjour Igloobel,

    Effectivement, c'était le n° de colonne qui posait problème : il fallait que je mette 30 pour qu'il prenne en compte des colonnes nécessaires au fonctionnement d'une autre procédure.
    Je te remercie chaleureusement.

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

Discussions similaires

  1. Résultat différent avec Mono/VS
    Par Truelle dans le forum C#
    Réponses: 1
    Dernier message: 02/09/2015, 11h33
  2. [PHP 5.3] Résultat différent avec IE8
    Par pierrot10 dans le forum Langage
    Réponses: 3
    Dernier message: 14/03/2011, 15h47
  3. OpenMp : résultats différents avec prog. parallélisé
    Par ant12oine dans le forum Fortran
    Réponses: 1
    Dernier message: 02/03/2010, 14h48
  4. [MySQL] Résultats différents avec mysql_query() et dans PhpMyAdmin
    Par Hitchou dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/02/2010, 11h37
  5. [W3C] Résultats différents avec IE ou FF
    Par Linoa dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 17/11/2005, 13h45

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