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 :

Problème d'insertion automatique dans une cellule


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
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Par défaut Problème d'insertion automatique dans une cellule
    Bonsoir,

    Alors voilà, après quelques recherches afin de comprendre d'où venait mon erreur dans un bloc de code assez conséquent, j'ai réussi à isoler cette dernière.
    En effet, le problème concerne l'insertion d'une valeur dans une cellule d'une feuille Excel à l'ouverture du classeur.

    Voici le traitement, tout simple, que je compte faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Workbook_Open()
     
        Worksheets("Feuil2").Cells(Range("A1").End(xlDown).Offset(1, 0).Row, 1) = "test"
     
    End Sub
    PS : Pour que cela fonctionne, mettre au moins une valeur dans la première cellule de la colonne A. En effet, la fonction utilisée recherche la première cellule non vide de la colonne A (et si toutes les cellules sont vides, ça ne marche pas).

    Et malgré tout cela, à l'ouverture de mon classeur, une boite de dialogue me signale l'erreur suivante :

    Erreur d'éxécution 1004
    Erreur définie par l'application ou par l'objet
    Et en cliquant sur débogage, la ligne de mon code ci-dessus est surligné en jaune.

    Merci d'avance de vos réponses

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir ?
    Et cela ce produit-'il même si tu prends soin d'activer la feuille 2 avant la sauvegarde du fichier?

  3. #3
    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 166
    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 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est tout à fait normal que tu aies une erreur 1004
    L'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Range("A1").End(xlDown)
    est l'équivalent du raccourci clavier Ctrl+flècheBas qui te renvoie à la dernière cellule occupée soit dans ce cas à la dernière ligne de la feuille.
    Voir ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Worksheets("Feuil2").Range("A1").End(xlDown).Address
    Dans ton code, tu lui dis d'aller une ligne plus bas (offset(1,0)) que sa dernière ligne d'où erreur.
    Je suis d'ailleurs étonné que tu arrives à un résultat s'il y a une donnée à la première ligne parce-que le résultat est le même.
    Soit tu vérifies avant s'il y a des données dans la feuille soit tu utilises la méthode de partir du bas vers le haut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     With Worksheets("Feuil2")
     .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) = "Test"
     End With
    Moi, je travaille avec la propriété CurrentRegion mais il faut dire que j'organise toujours mes feuilles en partant de A2 avec les étiquettes de colonnes en ligne 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     With Worksheets("Feuil2")
     .Range("A1").CurrentRegion.Offset(1, 0) = "Test"
     '.Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) = "Test"
     End With
    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

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Par défaut
    En fait, l'erreur est principalement due à :
    - D'une part, la présence / absence de - D'autre part, comme le disait bbil, il faut faire attention sur quelle feuille on se trouve en quittant le classeur.

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,

    non en fait l'erreur c'est qu'il faut éviter de travailler sans préciser la feuille concernée .., ton objet Range doit-être toujours précédé d'un objet feuille .

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

Discussions similaires

  1. [FPDF] Retour à la ligne automatique dans une cellule
    Par franchesko62 dans le forum Bibliothèques et frameworks
    Réponses: 18
    Dernier message: 08/12/2016, 11h42
  2. insertion automatique dans une base de données
    Par sion76 dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 28/07/2009, 15h46
  3. [XL-2003] total automatique dans une cellule
    Par colgeo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/06/2009, 10h09
  4. Réponses: 1
    Dernier message: 19/11/2008, 18h22
  5. [Excel] Récupération d'un filtre automatique dans une cellule
    Par billy123 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/03/2007, 15h32

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