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 d'execution 1004 : pourquoi ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 58
    Par défaut Erreur d'execution 1004 : pourquoi ?
    Bonjour à tous,

    Lorsque je compile mon code, une erreur 1004 : "erreur définie par l'application ou par l'objet" apparait et surligne en jaune la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Nuevos informaciones").Range(Cells(3, 1), Cells(number_of_line, number_of_column)).ClearContents
    Je ne vous communique pas le reste du code car il est long (450 lignes) et j'ai moi-même passé un temps fou aujourd'hui à vérifier que tout fonctionne. Et tout fonctionne parfaitement, à part cette ligne qui est la dernière ligne de mon programme.

    Pour info, number_of_line est une variable déclarée en début de module et dont la valeur est 18.
    number_of_column est de même une variable déclarée en début de module et dont la valeur est 56.
    Nuevos informaciones est le nom de la feuille en question !

    Je ne comprends pas pk le code ne marche pas, et encore moins pourquoi il me renvoit cette erreur sachant que j'ai essayé le code suivant et il fonctionne parfaitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Nuevos informaciones").Range(Cells(1, 1), Cells(6,1)).ClearContents
    Par contre, le code suivant ne marche pas non plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Nuevos informaciones").Range(Cells(3, 1), Cells(18, 56)).ClearContents
    Merci pour votre aide

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cela signifie vraisemblablement que la feuille Nuevos informaciones n'est pas la feuille active quand tu lances la procédure.
    Cette syntaxe ira mieux mais je n'ai pas testé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     With Sheets("Nuevos informaciones")
     .Range(.Cells(3, 1), .Cells(number_of_line, number_of_column)).ClearContents
     End With
    Il serait prudent également de préciser le classeur parent de la feuille, qui est ThisWorkbook si la feuille Nuevos informaciones est dans le même classeur que celui où le code VBA est présent.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Bonjour Philippe,


    je comprend pas pourquoi la feuille devrait être active, quel est le rapport ?

    Par curiosité, si on écrit ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Nuevos informaciones").Range(Sheets("Nuevos informaciones").Cells(3, 1),Sheets("Nuevos informaciones").Cells(number_of_line, number_of_column)).ClearContents
    ça marcherait non ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  4. #4
    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
    Pour compléter le très bonne réponse de Philippe Tulliez, il faut que tu comprennes que les Cells que tu mets dans ton Range sont des objets indépendant du Range. Elle ne prennent pas implicitement le même parent (la Worksheeet de Range). Il faut leur préciser de nouveau (sauf si elle ont comme parent ActiveSheet qui est le parent implicite de Cells).

    Le With du code de Philippe crée un parent implicite provisoire qui est appelé chaque fois qu'un objet commence par un ".".

    je comprend pas pourquoi la feuille devrait être active, quel est le rapport ?
    Parce que la feuille active est le parent implicite de l'objet Cells, celui auquel il se réfère si rien n'est précisé.
    Or, comme visiblement forum2015 souhaite que ses Cells fasse référence à des cellules de "Nuevos informaciones", il faudrait que ce soit cette feuille qui soit active pour que ça fonctionne.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour Olivier,
    je comprend pas pourquoi la feuille devrait être active, quel est le rapport ?
    Loic vient de donner l'explication détaillée à la question que tu poses.
    Et oui le code que tu as affiché fonctionnera également mais il est plus élégant (et plus rapide au passage) de l'insérer dans un bloc With ...End With
    Pour t'en convaincre, fais tourner cette petite procédure quand la feuille nommée Feuil1 est active, cela fonctionnera sans aucun problème. Ensuite fais le test sur la feuille nommée Feuil2. Une erreur 1004 va être provoquée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
     Worksheets("Feuil1").Range(Cells(2, 2), Cells(4, 4)) = "Excel"
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Je n'avais jamais rien compris à cette utilisation du With, qui pour moi était plus pour faire des lignes inutiles qu'autre chose.
    Avec cette exemple, je comprend mieux à quoi sert foncièrement son utilisation, qui est finalement et comme tu le dis, beaucoup plus élégante

    Merci en tout cas à vous 2 pour ces explications
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    ce n'est pas une question d'élégance (elle vient plutôt avec l'indentation ou un style d'écriture)
    mais bien d'efficience, affranchissant aussi de l'utilisation de variables objet à tout va …

    Exemple dans cette discussion : post #17 à comparer avec le suivant puis le #20 avec le #22 …




    _________________________________________________________________________________________________
    Aller vers l'essentiel, penser objet …

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

Discussions similaires

  1. Erreur d'execution 1004
    Par kanabzh29 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/11/2008, 09h34
  2. erreur d'execution 1004
    Par Damientreize dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/04/2008, 16h36
  3. TCD Problème Erreur d'Execution '1004'
    Par zenix dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/02/2008, 12h11
  4. pb 'erreur d'execution 1004' problème RANGE
    Par rpauquet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/07/2007, 15h38
  5. [VBA-E] erreur d'execution '1004' sur masquage feuille
    Par Cupoftea dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 18h34

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