Erreur 1004 erreur définie par l'application ou par l'objet avec range

Bonjour à tous,

J'ai cette erreur lorsque j'utilise une fonction range : "Erreur 1004 erreur définie par l'application ou par l'objet"

Voici mon code :

' ----- VARIABLES -----

    Dim projet As String
    Dim lastRowEFGL As Integer
    Dim lastColEFGL As Integer
    Dim colEFGL As Integer

' ----- MISE EN PLACE -----

    Application.DisplayAlerts = False

    'Définiton des chemins    
    strEFGL = Application.GetOpenFilename(, , "Choisir l'EFGL adapté")

    'Ouverture des fichiers
    Set WbAColler = ThisWorkbook
    Set WbEFGL = Workbooks.Open(strEFGL)
    ActiveSheet.AutoFilterMode = False

    'Création 2 nouvelles feuilles
    WbAColler.Sheets.Add.Name = "Data"
    WbAColler.Sheets.Add.Name = "Data2"

    'Dernière ligne et colonne de l'EFGL
    lastRowEFGL = WbEFGL.Worksheets("Synthèse").Range("F" & WbEFGL.Worksheets("Synthèse").Rows.Count).End(xlUp).Row
    lastColEFGL = WbEFGL.Worksheets("Synthèse").Cells(1, Columns.Count).End(xlToLeft).Column

    'Demande du projet à l'utilisateur
    projetDemande.Show
    projet = WbAColler.Worksheets("Data").Range("F1").Value

    'Copie des valeurs de l'EFGL
    For i = 0 To lastColEFGL

        If WbEFGL.Worksheets("Synthèse").Cells(1, i + 1).Value = projet Then
            colEFGL = i + 1

        End If
    Next i

    WbEFGL.Worksheets("Synthèse").Range("F12:F" & lastRowEFGL).Copy
    WbAColler.Worksheets("Data2").Range("A1").PasteSpecial Paste:=xlPasteValues

    WbEFGL.Worksheets("Synthèse").Range(Cells(12, colEFGL), Cells(lastRowEFGL, colEFGL)).Copy
    WbAColler.Worksheets("Data2").Range("B1").PasteSpecial Paste:=xlPasteValues

Et voici le code de ma boite de dialogue qui me renvoie le "projet" :

Private Sub ComboBox_projet_Change()
End Sub

Private Sub CommandButton_valider_Click()

    If ComboBox_projet.ListIndex = -1 Then
        MsgBox "Sélectionner un projet"
        Exit Sub
    End If

    Set WbAColler = ThisWorkbook
    projet = ComboBox_projet.Value
    WbAColler.Worksheets("Data").Range("F1") = projet
    Unload projetDemande
End Sub

Private Sub Label1_Click()
End Sub

Private Sub UserForm_Initialize()

    ComboBox_projet.AddItem "BCB_GSR2"    
End Sub

Pour résumer en quelques mots, je veux copier dans un fichier que j'appelle "WbAColler" certaines colonnes d'un fichier "WbEFGL" en fonction de ce que choisit l'utilisateur (pour l'instant il n'a qu'un seul choix).

La recherche de la colonne se passe bien mais l'erreur vient à la ligne :

    WbEFGL.Worksheets("Synthèse").Range(Cells(12, colEFGL), Cells(lastRowEFGL, colEFGL)).Copy
    WbAColler.Worksheets("Data2").Range("B1").PasteSpecial Paste:=xlPasteValues

De plus, lorsque je rentre dans le code le nom du projet plutôt que laisser l'utilisateur choisir cela fonctionne.

Avez-vous une idée d'où peut venir le problème ?

Merci d'avance

Tayrok

Bonjour Tayrok

Dans le module ne faut t'il pas déclarer une variable publique:

Public wbaColler

Sinon ajoute en tête du module et du UserForm :

Option Explicit

Compile pour vérifier que tout est bien défini.

Si cela ne passe pas transfère nous un classeur avec code VBA en format xlsm

Bonjour Scraper,

Merci pour ta réponse. J'ai ajouté Option Explicit et il m'a remonté quelques variables qui n'étaient pas définies. Merci pour cela, mon code est plus propre mais ça n'a malheureusement pas réglé mon problème.

Autre phénomène étrange, quand les onglets Data et Data2 sont créés avant de lancer la macro (je commente donc les lignes servants à les créer), cela fonctionne sans problème.

Les informations sur les fichiers que j'utilise sont privés, je ne peux pas les partager. Comment puis-je vous apporter les informations nécessaires sans pour autant vous envoyer mes fichiers ?

Merci

Re bonjour,

Une petite précision, les variables colEFGL et lastRowEFGL valent repectivement 470 et 904 (on fichier d'origine est assez énorme).

Est-ce que cela peut poser un problème ?

Pour vous aider, un utilitaire a été réalisé par l'admin du forum --> https://forum.excel-pratique.com/forum/anonymiser-les-donnees-confidentielles-des-fichiers-excel-107.

Merci c'est exactement ce qu'il me fallait !

Je joins donc à ce message le fichier dont je veux récupérer les données (il est tellement grand que je n'ai mis que les 2 colonnes que j'utilises, c-à-d la F et la RB. Le nombre de ligne est respecté).

Et le fichier dans lequel je veux les copier.

Rechercher des sujets similaires à "erreur 1004 definie application objet range"