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 :

problème de sort


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de sisopetron
    Homme Profil pro
    amateur
    Inscrit en
    Novembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Novembre 2016
    Messages : 35
    Par défaut problème de sort
    Bonjour à tous,

    j'ai un problème à soumettre à votre sagacité : Dans la routine ci-dessous, j'ai une erreur "Erreur d'exécution « 1004 »:La méthode Sort de la classe Range a échoué." et je ne comprends pas pourquoi. Pourriez-vous m'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        If Target.Column = 5 Then
            For i = 1 To 5
                If Range("D" & i + 6) <> "" Then
                    Range("D" & i + 6) = StrConv(Range("D" & i + 6), vbUpperCase)
                    derniere_ligne = Sheets("plan_comptable").Range("C1").End(xlDown).Row                
                    If derniere_ligne = 1048576 Then derniere_ligne = 1 'si la colonne est vide à partir de C2 alors End(xlDown) renvoie 1048576 : d'où le test
                    If Not Cherche(Sheets("Journal").Range("D" & i + 6), Sheets("plan_comptable").Range("C1:C" & derniere_ligne + 1)) Then
                        Sheets("plan_comptable").Range("C" & derniere_ligne + 1) = Range("D" & i + 6) 'si n'existe pas dans la liste, on l'ajoute
                        Sheets("plan_comptable").Range("C2:C" & derniere_ligne + 1).Sort
                    End If 
                End If
            Next
        End If
    Merci à vous.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    que vaut dernière ligne ?
    c'est quoi Cherche() ?

    pourquoi tu utilises la méthode Sort sans aucun paramètre ? cf l'aide en ligne
    par exemple, en renseignant le premier paramètre (Key1) tu devrais commencer à voir la résolution se présenter pour la personnaliser à ton besoin

  3. #3
    Membre averti Avatar de sisopetron
    Homme Profil pro
    amateur
    Inscrit en
    Novembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Novembre 2016
    Messages : 35
    Par défaut
    La dernière cellule de la dernière ligne contient "carnets et reçus".

    Il n'y a pas de paramètres parce qu'ils sont optionnel. Mais j'ai la même erreur quand je mets des paramètres.

    Cherche() est une fonction qui recherche si le mot tapé dans la cellule fait partie du Range.

    Merci de m'aider, c'est sympa.

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    dernière cellule est une variable censée contenir un chiffre, pourquoi me donner la valeur d'une cellule

    encore une fois, c'est assez fréquent depuis quelques temps, nous n'avons qu'une portion de code, sans aucune explication précise ... rien qui ne permet de cerner ce que tu veux faire, et comment sont agencées tes données.

    pas évident dans ces conditions, on se fatigue/lasse vite


    que te donne l'enregistreur de macro si tu tentes manuellement de faire le tri ?

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    encore une histoire de mauvais sort.

    Ce que je constate dans ton code c'est l'utilisation de Range() seul alors que tu as des Sheets() par ailleurs.

    Complete tous les range en precisant le bon niveau hierarchique et ca devrait faire le contre sort qui va bien
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Membre averti Avatar de sisopetron
    Homme Profil pro
    amateur
    Inscrit en
    Novembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Novembre 2016
    Messages : 35
    Par défaut
    Salut et merci de ton aide. Malheureusement rien n'y fait : même en spécifiant les sheets, le sort échoue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        If Target.Column = 5 Then
            For i = 1 To 5
                If Sheets("Journal").Range("D" & i + 6) <> "" Then
                    Sheets("Journal").Range("D" & i + 6) = StrConv(Sheets("Journal").Range("D" & i + 6), vbUpperCase)
                    derniere_ligne = Sheets("plan_comptable").Range("C1").End(xlDown).Row                
                    If derniere_ligne = 1048576 Then derniere_ligne = 1 'si la colonne est vide à partir de C2 alors End(xlDown) renvoie 1048576 : d'où le test
                    If Not Cherche(Sheets("Journal").Range("D" & i + 6), Sheets("plan_comptable").Range("C1:C" & derniere_ligne + 1)) Then
                        Sheets("plan_comptable").Range("C" & derniere_ligne + 1) = Sheets("Journal").Range("D" & i + 6) 'si n'existe pas dans la liste, on l'ajoute
                        Sheets("plan_comptable").Range("C2:C" & derniere_ligne + 1).Sort 'et on trie la liste
                    End If 
                End If
            Next
        End If

  7. #7
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Difficile de garder l'envie d'aider, parfois c'est désespérant


    Citation Envoyé par joe.levrai Voir le message
    pourquoi tu utilises la méthode Sort sans aucun paramètre ? cf l'aide en ligne
    par exemple, en renseignant le premier paramètre (Key1) tu devrais commencer à voir la résolution se présenter pour la personnaliser à ton besoin

  8. #8
    Membre averti Avatar de sisopetron
    Homme Profil pro
    amateur
    Inscrit en
    Novembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Novembre 2016
    Messages : 35
    Par défaut
    Salut Joe,

    Ce qui est désespérant, c'est que certaines personnes qui fréquentent ce forum ont oublié qu'un jour elles ont débuté elles aussi. Ce qui te paraît ultra-simple est peut-être pour moi ultra compliqué. Quelle est la valeur de la dernière ligne ? Je pensais que tu parlais de celle de ma liste. Et sur cette page : https://msdn.microsoft.com/en-us/lib.../ff840646.aspx , il est bien indiqué que tous les paramètres sont optionnels. Maintenant je sais que ce n'est pas vrai. J'apprends de mes erreurs.

    Désolé si je t'ai dégouté de donner de l'aide, ce n'était pas intentionnel.

    siso

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    D'où l'intérêt à se concentrer (et à bien en comprendre le sens) sur ce qui est facultatif ou non et ce qu'est une valeur par défaut (lorsque non spécifiée).
    C'est par ces "petites" choses-là, que j'ai commencé (que j'ai toujours commencé) avant de tenter d'aller plus loin, dans le brouillard.
    C'est la raison, je crois, pour laquelle je t'ai mis un pouce rouge, sisopetron (avec mes excuses et mon amitié) et un pouce vert à joe.levrai. (je "signe" toujours mes "pouces", histoire d'être le plus franc possible du collier et que mes "pouces" ne soient pas inutiles).

  10. #10
    Membre averti Avatar de sisopetron
    Homme Profil pro
    amateur
    Inscrit en
    Novembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Novembre 2016
    Messages : 35
    Par défaut
    Salut unparia,

    Je ne sais pas ce que c'est que ces pousses rouge ou vert, mais je trouve que c'est un peu frustrant d'être débutant et de ce fait ne pas trop savoir comment poser la question pour être clair, de laisser un bout de code pour montrer où ça coince et de s'entendre dire que ce bout de code n'est pas significatif alors que ça l'était au vu de la solution et qu'enfin on se fait rembarrer.

    Ca vaut manifestement un pouce rouge.

    Bonne soirée.

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

Discussions similaires

  1. Problème PlugOut Sort
    Par slopez dans le forum BOUML
    Réponses: 7
    Dernier message: 23/12/2008, 22h16
  2. problème avec sort() et operator<
    Par [Hugo] dans le forum C++
    Réponses: 6
    Dernier message: 25/02/2008, 18h19
  3. Problème de sort de vectors..
    Par strayyy dans le forum SL & STL
    Réponses: 13
    Dernier message: 05/01/2008, 04h36
  4. problème évènement sorting
    Par babafredo dans le forum ASP.NET
    Réponses: 5
    Dernier message: 04/07/2007, 09h32
  5. Problème avec Sort() sur un TList
    Par ViNzZz dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/08/2006, 14h45

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