Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 02/07/2008, 14h03   #1 (permalink)
Membre Confirmé
 
Date d'inscription: janvier 2007
Messages: 200
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 :
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.
Zak Blayde est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2008, 14h07   #2 (permalink)
Membre Confirmé
 
Avatar de zandru
 
Date d'inscription: mars 2008
Localisation: 89 et 91
Âge: 23
Messages: 266
Par défaut

Bonjour,

essai comme ça :
Code :
Worksheets("Donnees").Range(Cells(3, 6), Cells(15, 490)).Select
__________________
A lire :Les Règles, Les boutons du forum, sujet de discussion explicite ? et #CODE# sinon
.Aide-toi et le ciel t'aidera F1 / FAQ/ Google ...
zandru est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2008, 14h30   #3 (permalink)
Membre Confirmé
 
Date d'inscription: janvier 2007
Messages: 200
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 :
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
 
Zak Blayde est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2008, 14h37   #4 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 076
Par défaut

Ca plante ou et avec quelle erreur ?
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2008, 14h37   #5 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 666
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 :
Worksheets("Donnees").Activate
Range("C6:O490").Select
EDIT : à tester (sans Select)
Code :
Worksheets("Donnees").Range("C6:O490").Sort Key1:=Range("C6"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
 
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2008, 14h46   #6 (permalink)
Membre Confirmé
 
Date d'inscription: janvier 2007
Messages: 200
Par défaut

J'ai déjà essayé ta seconde solution et j'ai l'erreur suivante :
Citation:
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.
Zak Blayde est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2008, 14h59   #7 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 076
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 :
    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 .
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2008, 15h02   #8 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 666
Par défaut

Sorry j'ai oublié un bout
Code :
Worksheets("Donnees").Range("C6:O490").Sort Key1:=Worksheets("Donnees").Range("C6"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
 
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2008, 15h06   #9 (permalink)
Membre Confirmé
 
Date d'inscription: janvier 2007
Messages: 200
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 :
    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 ?
Zak Blayde est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2008, 15h11   #10 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 076
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....
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2008, 15h12   #11 (permalink)
Membre Confirmé
 
Date d'inscription: janvier 2007
Messages: 200
Par défaut

Citation:
Envoyé par fring Voir le message
Sorry j'ai oublié un bout
Code :
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.
Zak Blayde est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBA

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide