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 :

simple range ne fonctionne pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut simple range ne fonctionne pas
    Bonjour,

    J'en deviens fou, je ne comprends absolument pas pourquoi j'ai une erreur sur le range dans l'expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Donnees").Range("C6:O490").Select
    Si quelqu'un peut éclairer ma lanterne parce que là je me sens vraiment idiot -_-.
    Même résultat avec un activate, même résultat en activant la feuille avant de procéder à la sélection.

  2. #2
    Membre confirmé 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 : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Points : 551
    Points
    551
    Par défaut
    Bonjour,

    essai comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Donnees").Range(Cells(3, 6), Cells(15, 490)).Select

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    J'ai cette fois une "Erreur définie par l'application ou par l'objet" sur cette ligne.
    Voici les deux sub de ma feuille, peut-être une histoire de conflit :

    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
    Option Explicit
     
    Private Sub trier_button_Click()
        Worksheets("Donnees").Range(Cells(1, 6), Cells(15, 490)).Select
        'Worksheets("Donnees").Range("C6:O490").Select
        Selection.Sort Key1:=Range("C6"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    End Sub
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim ISCT As Range
     
        Set ISCT = Intersect(Target, Range("A3:A14"))
        If Not ISCT Is Nothing Then
            If Target.Value = "" Then
            ElseIf Left(Target.Value, 1) <> "*" Then
                Target.Value = "*" & Target.Value & "*"
            End If
        End If
    End Sub

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Ca plante ou et avec quelle erreur ?

  5. #5
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Je n'ai pas étudié le code dans lequel on peut probablement supprimer les Select mais pour info, on ne peut sélectionner une cellule que sur la feuille active, il faut donc s'assurer que la feuille en question est bien la feuille active en décomposant comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("Donnees").Activate
    Range("C6:O490").Select
    EDIT : à tester (sans Select)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("Donnees").Range("C6:O490").Sort Key1:=Range("C6"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    J'ai déjà essayé ta seconde solution et j'ai l'erreur suivante :
    Référence de tri non valide. Vérifiez qu'elle se trouve bien parmi les données à trier et que la zone Trier par n'est pas identique ou vide.
    La première, déjà essayé aussi et j'ai toujours l'erreur sur le range.

  7. #7
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Ca ne pourrais- pas être parce que il ne trouve pas le header de tes colonnes ?

    Généralement je fais comme ceci (je regroupe les instructions relatives au tri pour plus de clarté)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Start_Range_Id  = Get_Range_Id(ActiveSheet.UsedRange.Name)
        'Sort By 1)DateFrom 2)DateTO 3)Category
        Range(Start_Range_Id).Select
        Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("G2") _
            , Order2:=xlAscending, Key3:=Range("Y2"), Order3:=xlAscending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    ce qui sous-ententd qu'entre mon range et la ligne de tri, j'ai 1 décallage de + 1. je ne le vois pas chez toi .

  8. #8
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Sorry j'ai oublié un bout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("Donnees").Range("C6:O490").Sort Key1:=Worksheets("Donnees").Range("C6"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Godzestla Voir le message
    Ca ne pourrais- pas être parce que il ne trouve pas le header de tes colonnes ?

    Généralement je fais comme ceci (je regroupe les instructions relatives au tri pour plus de clarté)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Start_Range_Id  = Get_Range_Id(ActiveSheet.UsedRange.Name)
        'Sort By 1)DateFrom 2)DateTO 3)Category
        Range(Start_Range_Id).Select
        Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("G2") _
            , Order2:=xlAscending, Key3:=Range("Y2"), Order3:=xlAscending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    ce qui sous-ententd qu'entre mon range et la ligne de tri, j'ai 1 décallage de + 1. je ne le vois pas chez toi .
    J'ai bien mis le paramètre Header:= xlGuess pourtant. J'ai mal compris ?

  10. #10
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Justement !

    J'avais l'impression que la clé devait etre sur la deuxième ligne du range sélectionné, comme dans mon exemple.

    C'était juste une suggestion....

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par fring Voir le message
    Sorry j'ai oublié un bout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("Donnees").Range("C6:O490").Sort Key1:=Worksheets("Donnees").Range("C6"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Ca fonctionne, ça venait du C6 ne se trouvant pas dans la feuille où la macro était lancée ! Evidemment -_-

    Merci.

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

Discussions similaires

  1. [RegEx] Regex simple qui ne fonctionne pas
    Par Bruno.C dans le forum Langage
    Réponses: 4
    Dernier message: 03/12/2008, 15h05
  2. Réponses: 6
    Dernier message: 24/11/2008, 10h53
  3. Filtres tout simples qui ne fonctionnent pas
    Par cuterate dans le forum Requêtes et SQL.
    Réponses: 29
    Dernier message: 13/06/2008, 11h08
  4. Réponses: 2
    Dernier message: 28/03/2006, 11h13
  5. Programme Perl tout simple qui ne fonctionne pas
    Par jejerome dans le forum Langage
    Réponses: 4
    Dernier message: 26/02/2006, 23h58

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