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 :

erreur sur un range [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut erreur sur un range
    Bonjour,

    j'ai une erreur sur mon code :

    "la methode select de la classe range a échoué"

    sur la première ligne du code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    client.Range("A3:L" & ligneclient).Select
    Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    et je ne comprend pas pourquoi

    client est une feuille xls et ligneclient contient 78.

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,

    dans ton code pas besoin de select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    client.Range("A3:L" & ligneclient).Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    client est une feuille xls
    client est le codename de la feuille c'est bien ça ? (nom de la feuille dans le projet)

  3. #3
    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,
    peut-on avoir les lignes juste au dessus (attribution de la variable client) ?

    voir si fusionner les lignes ne fait pas sauter l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    client.Range("A3:L" & ligneclient).Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    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

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour tous,
    Ca serait pas plutôt..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("client").Range("A3:L" & ligneclient).....
    Voir aussi si pas d'erreur dans la transcription du nom de la feuille, l'erreur la plus fréquente c'est un espace "invisible".
    A+

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    "la methode select de la classe range a échoué"
    Tu ne dis pas si Client est le nom de la feuille ou l'instance de la feuille.
    Dans le premier cas ce sera
    Sheets("client").Range("Gnagna... 'dixit l'homme des bois
    et dans le second client devra être déclaré "as worksheet", instancié "set client = Worksheets("nomde la feuille") et utilisé tel que tu l'as fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    client.Range("Gnagna...'dixit les autres
    Bonne journée

  6. #6
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonjour à tous,

    La suggestion d’aalex_38 me paraît la meilleure approche. En effet les Select sont une source de ralentissement : à la main, on est obligé de sélectionner un objet (classeur, feuille, cellue, …) pour interagir avec lui. Mais il n’y a aucune raison de le faire en VBA si une méthode peut être appliquée directement ou s’il s’agit de modifier une propriété.

    En ce qui concerne ton plantage, es-tu sûr que "Client" est la feuille active au moment où l’instruction doit être exécutée ? Outre ralentir les traitements, les Select (et Activate) sont une fréquente source de bugs, liée au fait que Select plante si l’objet n’est pas au premier plan ;-(

  7. #7
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour à tous,

    Effectivement je viens de faire le test ci-dessous, et j'ai le même message si le classeur n'est pas actif, s'il est actif ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub testx()
    Dim client As Worksheet, LigneClient As Long
     
    Set client = ThisWorkbook.Worksheets("client")
    LigneClient = 78
     
    client.Range("A3:L" & LigneClient).Select ' => fonctionne seulement si le classeur est actif
    client.Range("A3:L" & LigneClient).Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    ' MsgBox Err.Number & Err.Description
     
    End Sub
    edit : c'est aussi un plantage sur la ligne de tri, au début j'ai essayé, ThisWorkbook.Activate mais il y a aussi un problème si on est pas sur la feuille active

    edit2 : au final un code qui semble fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Tri_Client()
    Dim client As Worksheet, LigneClient As Long
     
    LigneClient = 78
    Set client = ThisWorkbook.Worksheets("client")
    client.Activate
    client.Range("A3:L" & LigneClient).Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
     
    End Sub

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

Discussions similaires

  1. Erreur sur écriture dans Range.Text
    Par Sclarckone dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/08/2011, 08h23
  2. [XL-2003] Erreur sur la classe Range
    Par PPN83 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/12/2010, 23h26
  3. Réponses: 8
    Dernier message: 25/01/2008, 11h48
  4. erreur 1004 sur un range
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/11/2007, 16h35
  5. Erreur sur le TNSListener après installation de 9iAS
    Par Patmane dans le forum Installation
    Réponses: 4
    Dernier message: 04/02/2004, 11h16

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