Erreur : Objet requis

Bonjour à tous,

Je vous sollicite car je bloque au niveau de mon code pour une macro sur une erreur d'objet requis mais je ne comprends pas pourquoi. L'erreur apparaît au niveau du module "B_Journal_de_vente" sur la ligne ci-dessous.

NumLigneRecherchev = Recherchev.Row

Le but étant qu'en fonction des 5 premiers caractères du nom du fichier importé et par une recherchev, la cellule en colonne C du fichier "test" correspondant à ce nom de fichier se remplisse grâce à la formule qui est codé par la suite.

Pour que cela soit plus clair pour vous, je vous joins mon fichier "test" ainsi qu'un fichier utilisé pour l'importation.

Je vous remercie par avance de votre aide sur ce sujet.

6test.xlsm (76.08 Ko)

bonjour,

comme tu l'as codé Recherchev n'est pas un objet.

une proposition de correction

    Set AnalytiqueCentre = Range("A5:A" & DernierAnalytique)

    Set Recherchev = AnalytiqueCentre.Find(Left(FichierImporté.Name, 5), lookat:=xlWhole, LookIn:=xlValues)
    If Recherchev Is Empty Then
        MsgBox "ligne fichier importé " & FichierImporté & " non trouvée"
    Else
        NumLigneRecherchev = Recherchev.Row

        RecapFlux.Range("C" & NumLigneRecherchev).Value = Workbooks(FichierImporté).Range("O2").Value - Workbooks(FichierImporté).Range("Q2").Value
    End If

Bonjour h2so4,

Merci pour ton aide, j'ai essayé le code dont tu m'as fait part mais j'arrive encore à une erreur d'objet requis sur la ligne de code ci-dessous.

If Recherchev Is Empty Then

Je dois bien garder ma variable "Recherchev" en tant que Variant ? Ou bien je défini mal ma variable ?

Je dois bien garder ma variable "Recherchev" en tant que Variant

définis-la comme object. et remplace Empty par Nothing

If Recherchev Is Nothing Then

Merci beaucoup, cela marche parfaitement.

J'en profite pour te demander de l'aide sur la formule qui suivait que j'ai modifié car elle n'était pas bonne mais maintenant j'ai un message d'indice qui n'appartient pas à la sélection. Pourrais-tu m'aider à ce sujet, voici le code que j'ai mis pour ma formule

RecapFlux.Range("C" & NumLigneRecherchev).Value = FichierImporté.Sheets("journal").Range("O2").Value - FichierImporté.Sheets("journal").Range("Q2").Value

L'idée étant de faire la soustraction des cellules O2 et Q2 du fichier importé pour remplir le fichier "test" grâce au numéro de ligne trouvé grâce au code que tu m'as fourni précédemment.

re,

essaie ainsi

 RecapFlux.Range("C" & NumLigneRecherchev).Value = FichierImporté.Sheets("journal").Range("O2").Value - FichierImporté.Sheets("journal").Range("Q2").Value

Re,

Je suis désolé mais je ne vois pas de différence avec ce que j'ai mis précédemment, peut être une erreur ?

oups,

désolé j'ai fait la correction sur base de la macro de ton fichier, pas sur base de la correction que tu as mise sur le forum.

je n'ai pas de problème en exécutant ta macro corrigée en utilisant les fichiers que tu as mis. Vérifie que ta feuille dans le fichier à importer se nomme bien "journal"

Je crois que je vais devenir fou, j'ai ressayé de mon côté et ça ne marche toujours pas. Je te joins la dernière version du fichier, peux-tu me dire si cela marche de ton côté ?

10test.xlsm (79.42 Ko)

C'est bon j'ai trouvé mon problème, je n'avais pas enlevé le "RecapFlux" avant le "Range("C"&NumLigneRecherchev).value".

Encore merci pour ton aide h2so4 et le temps consacré.

Bonne journée

Bonjour à tous,

J'ai trouvé :

@Cleme, attention votre code est très (trop) sensible : pour lancer votre macro il faut que le nom du fichier contienne "JV" en MAJUSCULES UNIQUEMENT. Hors lors du partage de fichiers sur le forum, le nom passe en minuscules. De ce fait votre macro ne se lançait pas lors de l'import du document.

La correction à effectuer dans le module A_macro_principale :

If InStr(1, FichierImporté.Name, "jv") Then

Par

If InStr(1, FichierImporté.Name, "jv" , vbTextCompare) Then

Qui compare majuscules/minuscules sans distinctions.

Ensuite dans votre macro, le problème est assez simple. Vous avez écrit :

RecapFlux.Range("C" & NumLigneRecherchev).Value = FichierImporté.Sheets(1).Range("O2").Value - FichierImporté.Sheets(1).Range("Q2").Value

Mais RecapFlux est un objet Workbook, un classeur ! pas une feuille ! Donc appeller .Range dessus n'a aucun sens. Corrigez en ajoutant le nom de la feuille, FLUX_2024 je suppose, et ce devrait etre bon.

RecapFlux.Worksheets("FLUX_2024").Range("C" & NumLigneRecherchev).Value = FichierImporté.Sheets(1).Range("O2").Value - FichierImporté.Sheets(1).Range("Q2").Value

Bonjour saboh12617,

Merci d'avoir attiré l'attention sur le nom du fichier qui peut être en majuscule ou bien minuscule, j'ai donc fait la modification pour ne pas avoir de mauvaises surprises.

Ensuite concernant la modification par rapport à la formule, j'ai rajouté ce que tu m'as dit avec le "Worksheets("FLUX 2024")" mais lorsque je lance ma macro aucune donnée ne remonte alors que lorsque je laisse la formule présente ci-dessous, les données remontent bien.

Range("C" & NumLigneRecherchev).Value = FeuilleImporté.Range("O2").Value - FeuilleImporté.Range("Q2").Value

En tout cas merci de t'être penché sur le sujet.

Rechercher des sujets similaires à "erreur objet requis"