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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite 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
    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 confirmé
    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
    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 émérite 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
    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 confirmé
    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
    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 émérite 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
    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 confirmé
    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
    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 émérite 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
    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

  8. #8
    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 ?

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

    Informations professionnelles :
    Activité : Engineering

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

    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
            With Feuille
                .Hyperlinks.Add Anchor:=.Range(cell_mail), Address:="mailto:" & mail, TextToDisplay:=mail
                Debug.Print .Name
                Debug.Print Union(.Range("H5:I5"), .Range("K5:L5")).Count
            End With
        Next Feuille
     
    End Sub

  10. #10
    Membre émérite 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
    Par défaut
    Merci,

    Effectivement avec union ça marche.
    Pourtant la syntaxe Range("<liste>") est correcte... en plus j'en ai besoin.

    Et pourquoi ce code plante???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
     
     Debug.Print Worksheets("feuil1").Range("A2,A4").Count 'Affiche 2!!!!
     Worksheets("feuil1").Hyperlinks.Add Anchor:=Range("A1"),   Address:="mailto:" & "toto@toto.com", TextToDisplay:="toto@toto.com"
     'Et ensuite génère l'erreur: la méthode Range de l'objet Worksheet a  echoué!!!
     Debug.Print Worksheets("feuil1").Range("A2,A4").Count 
     
    end Sub
    Je capitule!

  11. #11
    Membre émérite 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
    Par défaut
    J'aimerais bien le savoir...
    Et pourquoi l'exécution continue t'elle normalement ensuite?
    Ca plante sur les plages non contigües on dirait.

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