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: "la méthode .Range de l'objet worksheet a échoué"


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut erreur: "la méthode .Range de l'objet worksheet a échoué"
    Bonjour,

    Lorsque je fais tourner ma macro elle s'arrête sur la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Feuille.Range("H5:I5,K5:L5")
    .
    .
    .
    end with
    avec l'erreur: "la méthode .Range de l'objet worksheet a échoué"

    Or si je clique sur débogage puis sur continuer (sans rien modifier), la macro termine son exécution sans problème
    La variable Feuille est bien déclarée est initialisée en tant qu' objet worksheet, et la syntaxe me semble correcte (pour l'avoir déjà testée).
    Autre chose curieuse: cette erreur semble apparaitre de manière aléatoire... Si vous pouviez m'aider...

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut erreur range
    Bonjour,

    Que signifie Feuille ?

    Ou il s'agit de l'une de tes feuilles, et alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Sheets("Feuille").Range("H5:I5,K5:L5")
    Ou c'est une variable que tu affectes, et alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Feuille as Worksheet
     
    Set Feuille = Sheets("mafeuille")
     
    With Feuille.Range("H5:I5,K5:L5")
    Cordialement.

    Marcel

  3. #3
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    C'est une variable que j'affecte:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Feuille as Worksheet
    Set Feuille = Sheets("mafeuille")
    With Feuille.Range("H5:I5,K5:L5")

  4. #4
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut erreur Range
    Pour ma part, j'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub essai2()
    Dim Feuille As Worksheet
    Set Feuille = Sheets("mafeuille")
    With Feuille.Range("H5:I5,K5:L5")
    .Select
    End With
    End Sub
    Aucun problème.

    Vérifie si tes colonnes sont masquées ou non, le mode plan, la protection éventuellement de ta feuille, etc..

    En dernier recours, et en suivant les recommandations de Pierre, joins un fichier simplifié.

    Cordialement.

    Marcel

  5. #5
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Pour moi aussi ce code simple marche sans problème.

    Le problème vient de ma macro c'est sûr, mais ce que je ne comprends pas c'est pourquoi elle s'arrête sur cette ligne (qui à priori ne pose pas de problèmes) et quand je reprends l'exécution SANS RIEN CHANGER, elle se termine sans générer d'erreur, alors qu'elle devrait bloquer sur la ligne... Non?

  6. #6
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut Erreur Range
    S'il s'agit d'une spécificité d'Excel 2007, je ne vois pas car je ne suis pas utilisateur.

    Regarde, dans ton VBE les options (Outils\Options\Général) de récupération d'erreur.

    Comme je te l'ai dit, tu peux enregistrer ton classeur sous une version 2003 et le joindre.

    Cordialement.

    Marcel.

  7. #7
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Voilà mon fichier:

    Il s'organise comme suit (voir feuille note):

    Les feuilles base (info et tab1 à tab7) sont des infos à réorganiser dans des nouvelles feuilles (une feuille par adhérent identifié par le code adhérent) contenant 8 tableaux.

    La macro parcout ces 8 feuilles crée les nouveaux onglets et remplir les infos adequates.

    L'erreur se situe dans la fonction format_tab1 (module 2)
    La ligne qui me pose question est celle précédée du commentaire 'test' dans la fonction create_tab_info (module 2). En fait l'erreur apparait si je crée plus de 9 onglets (c'est pour ça que je parlais d'erreur aléatoire....)

    Merci si tu as le courage de jeter un oeil.
    Fichiers attachés Fichiers attachés

  8. #8
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut Macro qui plante
    Bonsoir,

    Au vu de ton dernier message et de ton dévelopement VBA,
    La complexité d'un tel développement n'était pas annoncée au début!

    Au demeurant, j'ai lancé la macro

    Il y a bug sur

    de ta macro set_range dès lors, comme tu l'as dit, que le compteur dépasse 9.

    A mon avis, c'est un problème de tableau.

    Je me répète, je croyais qu'il s'agissait d'un simple problème de Range.

    Cordialement.

    Marcel

  9. #9
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Merci beaucoup, c'est très sympa d'avoir regardé.

    Par contre comment as tu déterminé que l'erreur venait de de la fonction set_range?

    Je suis toujours bloqué sur ce point quelques précisions ou d'autres avis seraient vraiment les bienvenus.

    Merci d'avance.

  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
    Bonjour,

    avant de continuer à crier au secours, as-tu au moins regardé l'aide de TintAndShade, car moi aussi, juste en exécutant ton code je calle bien sûr au même endroit.

    N'aurais-tu pas copié ce code d'ailleurs sans comprendre la portée/l'usage de TintAndShade ?

    Par contre, bravo pour tous les commentaires dans ton code. cela donne une bonne lisibilité.

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut heu!...
    bonjour


    si tu utilise tint and shade
    avec un with range truc machin il serai plus judicieux de metre "
    with sheets("machintruc").range("xx,xx").interior
    et ensuite
    .truc bidule ect..

    exemple ici avec la feuille "feuil1"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    With Sheets("feuil1").Range("H5:I5,K5:L5").Interior
     .TintAndShade = 0
    End With
    on ne colorie pas la cellule mais l'interieure de la cellule en vba
    cela dis chez moi ca donne blanc je ne sais pas ci c'est ce que tu recherche

    au plaisir

  12. #12
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Godzestla:
    Effectivement pour ce qui est des bordures j'ai utilisé l'enregistreur de macro ( aie c'est pas bien!) et repris le code sans bien faire attention au TintAndShade
    Par contre comment obtenez vous une erreur sur TintAndShade? De mon côté j'ai juste l'erreur "la méthode .Range..." Je suis novice en VBA c'est mon premier code dans ce langage.


    patricktoulon: je vais essayer avec interior

    En tous cas merci pour ces différentes pistes.

  13. #13
    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
    Citation Envoyé par issoram Voir le message
    Godzestla:

    Par contre comment obtenez vous une erreur sur TintAndShade?
    Dans le VBA, juste en lançant la macro Fiches_Entrepot2.

    Arrives-tu à reproduire cela ?

  14. #14
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Dans le VBA, juste en lançant la macro Fiches_Entrepot2.

    Arrives-tu à reproduire cela ?
    Non, j'ai toujours l'erreur citée dans mon premier message.

    J'ai donc supprimé tous les TintAndShade (qui effectivement d'après l'aide ne me servaient à rien) pour voir, mais ça ne change rien toujours la même erreur..

    Note: J'avais converti mon fichier de excel 2007->excel 2003 pour MarcelG (ça pourrait venir de ça?)

  15. #15
    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
    Note: J'avais converti mon fichier de excel 2007->excel 2003 pour MarcelG (ça pourrait venir de ça?)
    C'est possible. Je n'ai que Excel 2003, c'est peut-être aussi pour cela que je n'ai pas le problème au même endroit.


  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    a mon avis si le probleme persiste c'est que dans ta macro il y a un select ou quelque chose qui fait que tu deselect les ranges concernées

    a tu essayer mon code ?

    et dans tout les cas que se soit avec 2003 ou 2007 l'ecriture du code et le meme sauf biensur la limite des lignes ce qui nous concernent pas dans ce cas bien precis puisque l'on travaille avec la 5 eme ligne



    au plaisir

  17. #17
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    a mon avis si le probleme persiste c'est que dans ta macro il y a un select ou quelque chose qui fait que tu deselect les ranges concernées
    je n'utilise pas de select

    as tu essayer mon code ?
    oui mais le TintAndShade s'appliquait aux bordures (Range.Borders) de plus comme je l'ai écrit au message précédent je les ai supprimés et cela ne change rien.

  18. #18
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    C'est la première fois que je teste Excel 2007 et je n'ai pas encore tout compris, après des années d'utilisation de la version 2000, il faut s'accrocher.

    Je n'ai accès qu'à deux de vos macros : "delete_onglets" et "Fiches_Entrepot2". Pour les autres, même en mode débogage, rien à faire.

    Si je lance la macro "Fiches_Entrepot2" j'ai le même message que vous mais pas sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Feuille.Range("H5:I5,K5:L5")
    (dont je n'ai d'ailleurs pas trouvé de correspondance)

    mais sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    
    With Feuille.Range(Formules(i, 1))
    .FormulaR1C1 = Formules(i, 2)
    .NumberFormat = Formules(i, 3)
    À ce stade la feuille "entr 9" est crée et la macro : "Format_tab1" est lancée et c'est là que j'ai le message d'erreur indiqué et sur la ligne en gras ci-dessus.

    Si je poursuis le pas à pas, la boucle se poursuit une seule fois, puis "End Sub", mais a priori rien n'a été changé.

    Je ne sais pas si cela peut faire avancer la recherche de la solution, mas à toutes fins utiles !

  19. #19
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Bonjour,

    Après divers tests j'ai bien identifié le problème. L'erreur provient (en simplifiant) du bout de code suivant:
    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
    Sub test()
     
        Dim cell_mail As String, mail As String
        Dim Feuille As Worksheet
     
        cell_mail = "A1"
        mail = "toto@toto.fr"
     
        For Each Feuille In ThisWorkbook.Worksheets
     
            Feuille.Hyperlinks.Add Anchor:=Feuille.Range(cell_mail), Address:="mailto:" & mail, TextToDisplay:=mail
            Debug.Print Feuille.Name
            Debug.Print Feuille.Range("H5:I5,K5:L5").Count 'Génère l'erreur: la méthode Range de l'objet Worksheet a echoué
     
        Next Feuille
     
    End Sub
    ça plante toujours avec l'erreur: la méthode Range de l'objet Worksheet a echoué (ligne avec commentaire). Ca saute sûrement aux yeux (sauf aux miens)

    Merci d'avance pour votre aide

  20. #20
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Un essai pour voir :

    au lieu de :

    Debug.Print Feuille.Range("H5:I5,K5:L5").Count

    si on utilise

    Debug.Print Feuille.Range("H5:I5").Count

    plus de message d'erreur et la valeur de "count" est bien = 2. Pourquoi ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/04/2014, 09h25
  2. Réponses: 6
    Dernier message: 08/01/2009, 11h06
  3. Réponses: 3
    Dernier message: 16/11/2008, 00h30
  4. Erreur 1004: La méthode "Range" de l'objet "_global" a échoué
    Par Froggy007 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 18/09/2008, 23h05
  5. erreur La méthode 'Range' de l'objet '_Global' a échoué
    Par mahboub dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/11/2006, 20h46

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