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 1004 vba auto fill [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Analyste réseau
    Inscrit en
    Février 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste réseau

    Informations forums :
    Inscription : Février 2017
    Messages : 11
    Par défaut Erreur 1004 vba auto fill
    Bonjour Messieurs,

    Je travaille actuellement sur des macros VBA pour Excel.
    Toute ma macro se déroule plutot bien jusqu'à un certain point. Je dois étirer sur un nombre variable de ligne (changeant chaque jour) une formule.
    Mais j'obtiens constamment une erreur de VBA : Erreur d'exécution '1004' : La méthode AutoFill de la classe Range a échoué.
    Voici mon code :

    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
    Sub EDS()
    
    Dim d As Range
    Dim DernLigne As Long
    
    Set d = ThisWorkbook.Sheets("UPR").Range("M2")
    DernLigne = Range("M" & Rows.Count).End(xlUp).Row
    
    With Sheets("UPR")
    d.Formula = "=IF(ISNA(VLOOKUP(" & d.Offset(0, -1).Address(False, False) & ",Correspondance!A$1:C$26,2,""faux"")),"""",VLOOKUP(" & d.Offset(0, -1).Address(False, False) & ",Correspondance!A$1:C$26,2,""faux""))"
    .Range("M2").AutoFill Destination:=.Range("M2:M" & DernLigne)
    End With
    
    
    End Sub
    J'ai effectué beaucoup de recherche ces derniers jours sans jamais trouver la solution.

    Pourriez vous m'indiquer où se situe mon erreur s'il vous plait ?

    Merci pour votre aide et votre retour.

    Cordialement,

  2. #2
    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
    Citation Envoyé par Swednoss Voir le message
    J'ai effectué beaucoup de recherche ces derniers jours sans jamais trouver la solution.
    Au cours de tes recherches, as-tu regardé le contenu de la variable DernLigne ? Et si c'est le cas, pourrais-tu nous faire part du résultat ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set d = ThisWorkbook.Sheets("UPR").Range("M2")
    DernLigne = Range("M" & Rows.Count).End(xlUp).Row
     
    With Sheets("UPR")
    Pourquoi avoir pris la peine de précéder Sheets("UPR") de ThisWorkbook dans l'assignation de "d" et ne pas l'avoir fait dans le With ?

    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ThisWorkbook.Sheets("UPR")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("M2").AutoFill Destination:=.Range("M2:M" & DernLigne)
    Perso, j'aurais plutôt écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("M2").Copy .Range("M2:M" & DernLigne)
    Mais c'est juste une question de goût.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Swednoss Voir le message
    Bonjour,

    • Il vaudrait mieux tester la dernière ligne sur une autre colonne que la colonne M.
    • Il faut ajouter le nom de l'onglet dans la destination de Autofill.


    Le code ci-dessous fonctionne.

    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 EDS()
     
    Dim d As Range
    Dim DernLigne As Long
     
        With Sheets("UPR")
            DernLigne = .Range("A" & Rows.Count).End(xlUp).Row
            Set d = .Range("M2")
            With d
                 .Formula = "=IF(ISNA(VLOOKUP(" & d.Offset(0, -1).Address(False, False) & ",Correspondance!A$1:C$26,2,""faux"")),"""",VLOOKUP(" & d.Offset(0, -1).Address(False, False) & ",Correspondance!A$1:C$26,2,""faux""))"
                 d.AutoFill Destination:=Sheets("UPR").Range("M2:M" & DernLigne)
            End With
            Set d = Nothing
        End With
     
    End Sub

  4. #4
    Membre habitué
    Homme Profil pro
    Analyste réseau
    Inscrit en
    Février 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste réseau

    Informations forums :
    Inscription : Février 2017
    Messages : 11
    Par défaut
    Merci Eric.
    Votre solution fonctionne parfaitement.
    Je n'avais pas pensé à étirer la formule au lieu de la cellule.

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

Discussions similaires

  1. [XL-2010] erreur '1004' vba Excel
    Par chewi90 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/03/2015, 10h22
  2. Erreur 1004, VBA et Tableau Croisé Dynamique
    Par manu.68 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/02/2012, 08h59
  3. Débutant - Erreur 1004 VBA
    Par ilyaundebutatou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/11/2010, 11h08
  4. [E-07] erreur '1004' vba Excel (suite)
    Par mrah1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/02/2009, 17h48
  5. erreur '1004' vba Excel
    Par mrah1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/02/2009, 16h56

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