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 :

Range et select [XL-2010]


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
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Par défaut Range et select
    Bonjour,

    si quelqu'un pourrait éclairer ma lanterne, car la je mis perd

    Je désire sélectionner une plage de cellules dans une colonne, et trier ces cellule dans un ordre croissant

    j'ai un message d'erreur 1004 erre dans la sélection

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    With Workbooks("BdC_CC.xlsm").Sheets("Données")
        .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row).Select
        Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
    End With

  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,

    si la feuille n'est pas active, le Select ne fonctionnera pas, est-ce le cas ?
    et puis, pas besoin de faire un .Select sur ton Range et juste derrière utiliser "Selection", autant tout de suite utiliser le Range dans ta ligne de Sort


    si ce premier conseil ne résous pas ton problème, c'est qu'il y en a un second !
    que vaut .Range("A" & .Rows.Count).End(xlUp).Row ? ça te donne quel numéro de ligne ?
    ajoute un point devant le Range("A1") de ta ligne 4 également

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Est-ce que le fichier "BdC_CC.xlsm" est ouvert quant tu lances ta macro ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Par défaut
    Bonjour,

    Le fichier BdC_CC est ouvert
    la feuille "Données" est pas active

    Quand j'exécute la ligne seule Range("A" & .Rows.Count).End(xlUp).Row,

    il me renvoie la valeur de 8
    ce qui correspond au nombre de ligne non contenant mes valeur

    Donc vous me proposez de réduire la ligne jusque comme ci-dessus


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With Workbooks("BdC_CC.xlsm").Sheets("Données")
        .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row).Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
    End With

  5. #5
    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
    oui

    tu n'as pas ajouté le . devant Range("A1").

    étant donné que tu n'es pas sur la même feuille, c'est l'erreur fatale ! Deuxième effet Kiss Cool

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Par défaut
    Ok,

    j'ai corrigé mon erreur,
    cela fonctionne bien quand la feuille est active
    mais pas contre feuille inactive cela ne marche pas

    comment réaliser cette sélection et ce tri sans que la feuille soit actives

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par mlww Voir le message
    Par contre la feuille "Données" n'est pas active
    Peu importe puisque tu pointes directement dessus avec ton With.

    Citation Envoyé par mlww Voir le message
    Quand j'exécute la ligne seule Range("A" & .Rows.Count).End(xlUp).Row ,
    il me renvoi la valeur de 8
    ce qui correspond au nombre de ligne non contenant mes valeur
    Il n'y aurait pas un "non" en trop dans ta phrase.
    Sinon, il faut que tu expliques.

    Donc vous me proposer de réduire la ligne jusque comme ci-dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Workbooks("BdC_CC.xlsm").Sheets("Données")
        .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row).Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
    End With
    Enlève "Selection". Tu appliques le Sort directement au Range.
    https://msdn.microsoft.com/fr-fr/lib.../ff840646.aspx

    Citation Envoyé par mlww Voir le message
    comment réaliser cette sélection et ce tri sans que la feuille soit actives
    En réalisant un code correct (voir ma remarque sur le Selection).

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range(.Range("A1"), .Cells(.Rows.Count, "A").End(xlUp)).Sort
    pas de select

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

Discussions similaires

  1. [XL-2010] Range(maplage).select erreur 1004.
    Par Denis_67 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/07/2014, 15h28
  2. [XL-2007] Range ou select une cellule grace a une adresse
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/08/2013, 14h47
  3. Erreur Range([Liste]).Select quand liste trop longue
    Par Boris_Gem dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/04/2012, 14h55
  4. [Toutes versions] Range cells select
    Par brown_ey dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/12/2010, 15h27
  5. Problème Range et select
    Par nicoosito dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/09/2010, 15h37

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