Erreur 424

Fermé
mdelusse56 Messages postés 31 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 25 juin 2020 - Modifié le 24 juin 2020 à 17:15
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 juin 2020 à 15:45
Bonjour,

Je me permets de vous contacter car je suis bloquée sur mon code VBA du moment :)

J'ai créée une fonction qui permet de vérifier un fichier existant et de l'ouvrir.

Je veux donc utiliser cette fonction pour ouvrir mon fichier Excel et je souhaite copier les cellules d'une feuille de ce classeur vers celui ou je travaille actuellement (ce qui fonctionne) mais juste après, ma dernière ligne (close) ne passe pas, j'ai une erreur avant 424 (objet requis) et je ne sais pas pourquoi…

Voici le code :
Public Function FonctionFichier(Fichier As String)
 
If Len(Dir(Fichier)) = Empty Then
 MsgBox "Le fichier n'a pas été trouvé."
End If

Dim Application As Object
Set Application = CreateObject("Shell.Application")
Application.Open (Fichier)

End Function
---

Sub Test()

Dim wkDest As Workbook

Set wkDest = FonctionFichier("C:\Classeur1.xlsx")

wkDest.Sheets("Feuil1").Cells.Copy ThisWorkbook.Sheets("Tarifs").Range("A1")

wkDest.Close True

End Sub




En vous remerciant par avance pour votre aide :)

3 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
24 juin 2020 à 17:14
bonjour,
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
moi je ferais plutôt:
Set wkDest = workbooks.open("C:\Classeur1.xlsx")
0
mdelusse56 Messages postés 31 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 25 juin 2020
25 juin 2020 à 10:11
Oups oui pardon :(
Le problème c’est que du coup ma fonction ne serait plus utilisée ..
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > mdelusse56 Messages postés 31 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 25 juin 2020
25 juin 2020 à 11:50
ton code est tellement bourré de fautes que je ne peux pas te conseiller.
si tu veux utiliser une fonction, commence peut-être par un exercice plus simple. par exemple une fonction qui double un nombre.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
25 juin 2020 à 12:14
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié le 25 juin 2020 à 15:45
Bonjour,

Cette partie de ton code sous-entends que la fonction FonctionFichier doit retourner un Objet Workbook.
Dim wkDest As Workbook
Set wkDest = FonctionFichier("C:\Classeur1.xlsx")

Or là, elle ne retourne rien.
Nulle part, dans ta fonction, on ne voit une ligne qui commence par :
FonctionFichier = .....


Pour le coup, si tu souhaites conserver le même type de schéma avec une fonction, il faut :
1- que tu types ta fonction "As Workbook"
2- que tu lui attribues une valeur de retour.

Exemple :
Option Explicit

Public Function FonctionFichier(Fichier As String) As Workbook
    If Dir(Fichier) <> vbNullString Then
        Set FonctionFichier = Workbooks.Open(Fichier)
    End If
End Function

Sub essai()
Dim wb As Workbook
    Set wb = FonctionFichier("C:\Users\Desktop\Importer tableau.xlsm")
    If Not wb Is Nothing Then
        'Ton code ici
    End If
End Sub


Ce code est donné ici à titre d'exemple.
Il est bien entendu que ce type de fonction n'est pas "réellement" utile...
0