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

  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : février 2020
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Erreur 1004 définie par l'application ou par l'objet sur Worksheet_BeforeDoubleClick
    Bonjour à tous,

    Je me heurte à une erreur que je n'arrive pas à solutionner. L'idée est, en double-cliquant dans une cellule, de faire apparaître un userform personnalisé qui va ensuite rentrer des données dans une autre feuille du classeur. Tout ce processus fonctionne bien, sauf qu'à la fin je veux mettre en forme mes données et là, ça plante. A noter que le userform fonctionne très bien lorsqu'il est lancé tout seul.
    J'ai reproduit le problème par la fonction suivante, toute bête, à placer dans le vba de la feuille 1 d'un fichier vierge avec une feuille 2 existante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Sheets("Feuil2").Range(Cells(2, 2), Cells(2 + 3, 30)).Interior.Pattern = x1Solid
        Sheets("Feuil2").Range(Cells(2, 2), Cells(2 + 3, 30)).Interior.Color = 14082239
        Sheets("Feuil2").Range(Cells(2, 2), Cells(2 + 3, 30)).Font.Color = -12629479
        Cancel = True
    End Sub
    Si l'on place ce code dans le vba de la feuille 2, cela fonctionne. Le problème est donc, en lançant le code depuis la feuille 1, d'intervenir sur les paramètres des cellules de la feuille 2.
    Des idées pour solutionner cela ?

    Un grand merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    juin 2007
    Messages
    14 617
    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 : 14 617
    Points : 30 097
    Points
    30 097
    Par défaut
    Citation Envoyé par lofbat Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Sheets("Feuil2").Range(Cells(2, 2), Cells(2 + 3, 30)).Interior.Pattern = x1Solid
    C'est une erreur classique de débutant. On l'a sans doute tous faite.

    Tu constitues un Range dans "Feuil2" avec des cellules de ActiveSheet qui n'est vraisemblablement pas "Feuil2".
    Il faut aussi indiquer le parent des Cells.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Sheets("Feuil2").Range(Sheets("Feuil2").Cells(2, 2), Sheets("Feuil2").Cells(2 + 3, 30)).Interior.Pattern = x1Solid
    Je te laisse faire les autres lignes.

    Cela dit, il serait plus simple d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Sheets("Feuil2").Range("B2:AD" & (2 + 3)).Interior.Pattern = x1Solid
    J'ai laissé le "2+3" mais je ne comprends pas trop pourquoi tu n'as pas écrit "5".
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : février 2020
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    quel boulet !

    Merci Menhir pour la solution, que je n'arrivais pas à trouver depuis 2 jours... !

    Cela dit, il serait plus simple d'écrire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil2").Range("B2:AD" & (2 + 3)).Interior.Pattern = x1Solid
    J'ai laissé le "2+3" mais je ne comprends pas trop pourquoi tu n'as pas écrit "5".
    En fait c'est simplement que j'ai extrait des lignes de mon code que j'ai adapté, l'idée c'est d'avoir un userform qui va remplir des champs à des endroits précis, repérés par un index de ligne (d'où également l'utilisation des cells). J'ai remplacé ma variable par un entier.

    Un grand merci en tous cas !

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

Discussions similaires

  1. [XL-2016] erreur 1004 définie par l'application ou par l'objet, dans un fichier partagé
    Par LoloXBlade dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/10/2018, 17h12
  2. [XL-2013] Erreur 1004 définie par l'application ou par l'objet
    Par Florian53 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/02/2018, 13h07
  3. [XL-2007] Erreur 1004, définie par l'application ou l'objet
    Par Litobig dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/02/2013, 16h49
  4. [XL-2007] Erreur 1004 définie par l'application : affectation valeur à une cellule
    Par Fiédia dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/06/2011, 21h57
  5. Erreur 1004 définie par l'application ou par l'objet
    Par DuyBinh dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/12/2007, 10h33

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