Probleme Set Object et ScreenUpdating Macro

flosauveur69

XLDnaute Occasionnel
Bonjour a tous,

Tout d`abord je vous explique le but de ma macro pour ensuite vous expliquer un problème surement bête mais que je n`arrive à résoudre,

Macro doit ouvrir chaque fichier de 2 répertoires, et copier une plage de cellules. Le classeur est ouvert si il n`a jamais été ouvert et si son datelastmodified est compris entre 2 dates.

Le problème c`est que quand je compile, j`ai un message d`erreur Object Required
Second problème, la macro ouvre chaque fichier en bas de l`écran avant de copier les données ce qu`elle ne devra pas faire grâce au Application.ScreenUpdating = False


Merci de votre aide, je mets mon fichier en PJ, la macro est Public Sub cmdRecupere_Click() en feuil1
 

Pièces jointes

  • test.zip
    354.1 KB · Affichages: 44
  • test.zip
    354.1 KB · Affichages: 46
  • test.zip
    354.1 KB · Affichages: 42

Gorfael

XLDnaute Barbatruc
Re : Probleme Set Object et ScreenUpdating Macro

Salut flosauveur69 et le forum
Pas envie de répondre, je suis sous V.2003 et la conversion crée des problèmes, et de plus, un fichier d'essai n'a pas besoin d'être complexe, juste d'avoir le minimum pour comprendre le problème.
Le problème c`est que quand je compile, j`ai un message d`erreur Object Required
Essaie en pas-à-pas, et regarde la valeur de tes variables juste avant d'exécuter la ligne où ça buggue.
Second problème, la macro ouvre chaque fichier en bas de l`écran avant de copier les données ce qu`elle ne devra pas faire grâce au Application.ScreenUpdating = False
Tu ouvres un fichier, il vient se loger dans la barre de tâche => ça, c'est du windows (ou l'OS), pas du excel : comme le ScreenUpDating ne concerne qu'Excel et son affichage...
A+
 

flosauveur69

XLDnaute Occasionnel
Re : Probleme Set Object et ScreenUpdating Macro

bonjour,

j`avais essayé de la déclarer et ça ne marchait pas, et j`ai ressaye au cas où mais toujours le même problème.

en faisant le pas à pas je sais que c`est cette ligne qui pose problème et plus précisément le « Fichier » qui est mal déclaré mais je ne vois pas pourquoi.
If Fichier.DateLastModified >= UserGuide!I1 And Fichier.DateLastModified <= UserGuide!J1 Then

Merci de votre aide
 

Roland_M

XLDnaute Barbatruc
Re : Probleme Set Object et ScreenUpdating Macro

re

au pas à pas il y a une erreur "objet requis" sur > UserGuide!I1 et UserGuide!J1

'il faut modifier ceci:
If Fichier.DateLastModified >= UserGuide!I1 And Fichier.DateLastModified <= UserGuide!J1 Then

'tout d'abord init var
Dim DatMin As Date, DatMax As Date
DatMin = Sheets("UserGuide").Range("I1")
DatMax = Sheets("UserGuide").Range("J1")
'puis les deux tests comme ceci
If Fichier.DateLastModified >= DatMin And Fichier.DateLastModified <= DatMax Then
 
Dernière édition:

flosauveur69

XLDnaute Occasionnel
Re : Probleme Set Object et ScreenUpdating Macro

Re,

oui merci de ton aide car du coup provisoirement j`avais rentré les dates en dur dans le code dans les déclarer as Date.
Le problème que je rencontre avec ce code c`est qu`il ne fait pas correctement le compris entre les 2 dates. C`est a dire qu`il m`exclut certain fichiers alors qu`il ne devrait pas et vice versa.
J`ai essayé de voir s`il y avait un bug sur le format de date car mon PC est en US mais j`ai essayé sur un PC en Fr et il y le même problème.
Une idée?
Je mets en PC une des fichiers que la macro doit récupérer ou pas selon les dates données et mon fichier avec la macro.
Mais je sens qu`on touche au but !
 

Pièces jointes

  • test2.zip
    357.3 KB · Affichages: 36
  • test2.zip
    357.3 KB · Affichages: 36
  • test2.zip
    357.3 KB · Affichages: 33

Roland_M

XLDnaute Barbatruc
Re : Probleme Set Object et ScreenUpdating Macro

re

ce n'est pas facile d'essayer comme ça sur des répertoires différents même en remplaçant les chemins
pour les essais ensuite on sait pas très bien le déroulement souhaité !?

mais ici:
If Fichier.DateLastModified >= DatMin And Fichier.DateLastModified <= DatMax Then '<<< alors quoi !?
ElseIf strFile <> strWB And Worksheets("Calcul2").Columns("C").Find(strFile, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then

lorsque la condition est vrai il ne se passe rien !!!!!! Then ... quoi !?
 

flosauveur69

XLDnaute Occasionnel
Re : Probleme Set Object et ScreenUpdating Macro

re

ce n'est pas facile d'essayer comme ça sur des répertoires différents même en remplaçant les chemins
pour les essais ensuite on sait pas très bien le déroulement souhaité !?

mais ici:
If Fichier.DateLastModified >= DatMin And Fichier.DateLastModified <= DatMax Then '<<< alors quoi !?
ElseIf strFile <> strWB And Worksheets("Calcul2").Columns("C").Find(strFile, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then

lorsque la condition est vrai il ne se passe rien !!!!!! Then ... quoi !?

En effet oui... en effet je veux que le workbook.open se lance si ces deux conditions sont réunies mais apparemment ce n'est pas un then qu'il faut.
En tout cas tu as raison, le problème vient bien de la car quand je supprime la 2eme condition, la 1ere condition sur les dates fonctionne.
 

Roland_M

XLDnaute Barbatruc
Re : Probleme Set Object et ScreenUpdating Macro

re

'c'est ceci qui te pose problème !
ElseIf strFile <> strWB And Worksheets("Calcul2").Columns("C").Find(strFile, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then


'si toutes les conditions doivent être réunies !?
If (Fichier.DateLastModified >= DatMin And Fichier.DateLastModified <= DatMax) _
And strFile <> strWB _
And Worksheets("Calcul2").Columns("C").Find(strFile, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then

'si seule la première est pas les autres, essai avec Not !?
If (Fichier.DateLastModified >= DatMin And Fichier.DateLastModified <= DatMax) _
And Not (strFile <> strWB _
And Worksheets("Calcul2").Columns("C").Find(strFile, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing) Then
 
Dernière édition:

flosauveur69

XLDnaute Occasionnel
Re : Probleme Set Object et ScreenUpdating Macro

re

'c'est ceci qui te pose problème !
ElseIf strFile <> strWB And Worksheets("Calcul2").Columns("C").Find(strFile, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then


'si toutes les conditions doivent être réunies !?
If (Fichier.DateLastModified >= DatMin And Fichier.DateLastModified <= DatMax) _
And strFile <> strWB _
And Worksheets("Calcul2").Columns("C").Find(strFile, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then

'si seule la première est pas les autres, essai avec Not !?
If (Fichier.DateLastModified >= DatMin And Fichier.DateLastModified <= DatMax) _
And Not (strFile <> strWB _
And Worksheets("Calcul2").Columns("C").Find(strFile, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing) Then

Merci à toi, toutes les conditions devaient être réunies donc j'ai pris ta formule qui fonctionne.
J'avais fait des essais avec des and mais je ne les avais pas placés correctement.
Dernier point bloquant pour ma macro, en fait j'ai deux macro un en feuil1 et une en module1 (voir mon classeur plus haut dans la discussion) et donc deux boutons pour les lancer. J'aimerais les regrouper sous une seule macro et donc un seul bouton, j'ai fait des essais (avec des next ou autre) et cela fonctionne jusqu'au passage de l'une à l'autre.

Pour info, la 2eme macro me sert à récupérer certaines donnes des classeurs ouverts et copier par la 1ere macro.

Voici mon debut d'essai en PJ, merci encore
 

Pièces jointes

  • Copy of KPI BT2 test2.zip
    354.8 KB · Affichages: 45

Roland_M

XLDnaute Barbatruc
Re : Probleme Set Object et ScreenUpdating Macro

re

il te faut placer la macro de la feuil1 > Public Sub cmdRecupere_Click()
dans le module1 que tu renommes > Public Sub cmdRecupere()
tu as déjà dans le module1 celui-ci > Public Sub Seeking_dates()

tu crées un nouveau Sub. exp: (selon l’ordre d’exécution 1’cmdRecupere 2’Seeking_dates ou inverse)
Public Sub LanceRecupere()
Dim Reponse As Boolean
Reponse = MsgBox("Lancer la procédure de récupe ?", vbYesNo, "Récupération")
If Reponse <> vbYes Then Exit Sub
cmdRecupere
Seeking_dates
End Sub

et sur un des deux boutons tu fais Affecter une macro... et tu y colles > LanceRecupere
 

flosauveur69

XLDnaute Occasionnel
Re : Probleme Set Object et ScreenUpdating Macro

re

il te faut placer la macro de la feuil1 > Public Sub cmdRecupere_Click()
dans le module1 que tu renommes > Public Sub cmdRecupere()
tu as déjà dans le module1 celui-ci > Public Sub Seeking_dates()

tu crées un nouveau Sub. exp: (selon l’ordre d’exécution 1’cmdRecupere 2’Seeking_dates ou inverse)
Public Sub LanceRecupere()
Dim Reponse As Boolean
Reponse = MsgBox("Lancer la procédure de récupe ?", vbYesNo, "Récupération")
If Reponse <> vbYes Then Exit Sub
cmdRecupere
Seeking_dates
End Sub

et sur un des deux boutons tu fais Affecter une macro... et tu y colles > LanceRecupere

OK d'accord, l’idée c'est de faire une macro qui appelle les 2 autres. Par contre quand le msgbox apparait et que je clique sur Yes rien ne se passe...
 

flosauveur69

XLDnaute Occasionnel
Re : Probleme Set Object et ScreenUpdating Macro

Bonjour,

je voudrais rajouter une condition à cette macro, je voudrais qu'elle ne m'ouvre que les fichiers dont le nom commence par "passed" ou "failed", j'insiste sur le mot commence car j'y arrive si le nom du fichier est "passed" ou "failed" mais pas commence.

merci encore une fois
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 016
dernier inscrit
Mokson