Erreur de code

guez

XLDnaute Nouveau
Bonjour,

Savez-vous pourquoi la macro bloque sur la ligne Windows(fichier).Close savechanges:=False
Merci

Code:
Sub recup()
 'Parametre d'importation
ThisWorkbook.Activate
Dim Source As String

ligne = 1 'ligne d'ecriture
colonne = 1 ' colonne d'ecriture

For n = 12 To 18
 
Source = Sheets("BASE").Range("O" & n)
fichier = Source & ".xls"
Workbooks.Open Filename:=fichier
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
 
'localisation des données à extraire
Dim Effectif As String, NumGestion As String, Jours As String

Effectif = Sheets("BALANCE").Range("D89")
NumGestion = Sheets("PARAMETRES").Range("D9")
Jours = Sheets("RESULTAT").Range("C8")

'Extraction des données
ThisWorkbook.Sheets("AjoutEffectif").Activate
Cells(ligne, colonne) = NumGestion
Cells(ligne, colonne + 1) = Effectif
Cells(ligne, colonne + 2) = Jours
ligne = ligne + 1

Windows(fichier).Close savechanges:=False 'fermeture du fichier sources sans enregistrer les changements
Range("A65536").End(xlUp).Offset(1, 0).Select
 
 
Next
 End Sub
 

guez

XLDnaute Nouveau
Re : Erreur de code

Salut Pierrot,
J'ai déjà essayé avec workbooks, ça change rien.
Oui j'ai le chemin complet dans mon fichier excel mais je stocke le fichier excel dans "Fichier", pkoi c'est normal que ça plante??
 

guez

XLDnaute Nouveau
Re : Erreur de code

Mon code entier:

Code:
Sub recup()
 'Parametre d'importation
ThisWorkbook.Activate
Dim Source As String, Fichier As String

ThisWorkbook.Sheets("EXPORT").Activate ' vider la feuille EXPORT
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select

ThisWorkbook.Sheets("BASE").Activate 'filtrer les sites sur lequel il y a du CA
ActiveSheet.Range("$A$1:$O$2999").AutoFilter Field:=12, Criteria1:="1"
ActiveSheet.Range("$A$1:$O$2999").AutoFilter Field:=6, Criteria1:="=*T1*", _
        Operator:=xlAnd
        
Columns("A:O").Select 'coller la nouvelle base dans EXPORT
Selection.Copy
Sheets("EXPORT").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ligne = 2 'ligne d'ecriture
colonne = 16 ' colonne d'ecriture

For n = 12 To 18
 
Source = Sheets("BASE").Range("O" & n)
Fichier = Source & ".xl" + "**"
Workbooks.Open Filename:=Fichier
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
 
'localisation des données à extraire
Dim Effectif As String, NumGestion As String, Jours As String

Effectif = Sheets("BALANCE").Range("D89")
NumGestion = Sheets("PARAMETRES").Range("D9")
Jours = Sheets("RESULTAT").Range("C8")

'Extraction des données
ThisWorkbook.Sheets("EXPORT").Activate
Cells(ligne, colonne) = NumGestion
Cells(ligne, colonne + 1) = Effectif
Cells(ligne, colonne + 2) = Jours
ligne = ligne + 1

Windows(Fichier).Close savechanges:=False 'fermeture du fichier sources sans enregistrer les changements
ThisWorkbook.Activate
Range("p65536").End(xlUp).Offset(1, 0).Select
 
 
Next
 End Sub

ça plante tjs pour fermer le fichier?!
 

Pierrot93

XLDnaute Barbatruc
Re : Erreur de code

Re,

bah..; le classeur ne se nomme pas "c:\mesdoc\classeur.xls" mais "classeur.xls".... utilise une variable objet :
Code:
Dim wb As Workbook
Set wb = Workbooks.Open(Filename:=Fichier)
'ton code
wb.Close False
 

guez

XLDnaute Nouveau
Re : Erreur de code

C'est bon, je ferme mon fichier comme cela:

Code:
'localisation des données à extraire
Dim Effectif As String, NumGestion As String, Jours As String

Effectif = Sheets("BALANCE").Range("D89")
NumGestion = Sheets("PARAMETRES").Range("D9")
Jours = Sheets("RESULTAT").Range("C8")
ActiveWorkbook.Close savechanges:=False 'fermeture du fichier sources sans enregistrer les changements

Par contre, ma macro beugue lorsqu'elle ne trouve pas le fichier. J'ai un probleme avec mon GoTo, il fonctionne sur une premiere erruer mais pas sur la suivante. Tu peux m'aider??
Code:
Sub recup()
 'Parametre d'importation
ThisWorkbook.Activate
Dim Source As String ' Fichier As String

ThisWorkbook.Sheets("EXPORT").Activate ' vider la feuille EXPORT
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select

ThisWorkbook.Sheets("BASE").Activate 'filtrer les sites sur lequel il y a du CA
ActiveSheet.Range("$A$1:$O$2999").AutoFilter Field:=12, Criteria1:="1"
ActiveSheet.Range("$A$1:$O$2999").AutoFilter Field:=6, Criteria1:="=*T1*", _
        Operator:=xlAnd
        
Columns("A:O").Select 'coller la nouvelle base dans EXPORT
Selection.Copy
Sheets("EXPORT").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ligne = 2 'ligne d'ecriture
colonne = 16 ' colonne d'ecriture

For n = 2 To 1637
 
Source = Sheets("EXPORT").Range("O" & n)
Fichier = Source & ".xl" + "**"
Workbooks.Open Filename:=Fichier
On Error GoTo Suite
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
 
'localisation des données à extraire
Dim Effectif As String, NumGestion As String, Jours As String

Effectif = Sheets("BALANCE").Range("D89")
NumGestion = Sheets("PARAMETRES").Range("D9")
Jours = Sheets("RESULTAT").Range("C8")
ActiveWorkbook.Close savechanges:=False 'fermeture du fichier sources sans enregistrer les changements

'Extraction des données
ThisWorkbook.Sheets("EXPORT").Activate
Cells(ligne, colonne) = NumGestion
Cells(ligne, colonne + 1) = Effectif
Cells(ligne, colonne + 2) = Jours

Suite:

ligne = ligne + 1

'Workbooks(Fichier).Close savechanges:=False 'fermeture du fichier sources sans enregistrer les changements
ThisWorkbook.Activate
Range("p65536").End(xlUp).Offset(1, 0).Select
 
Next
 End Sub
 

guez

XLDnaute Nouveau
Re : Erreur de code

Il bloque tjs sur la 2eme erreur.
Avec la fonction DIR ça a l'air de fonctionner, ce qui m'embete c'est que dans le cas ou le fichier n'existe pas, il faudrait pouvoir sauter une ligne pour que mes données soient tjs en face des fichiers, sinon j'ai un décallage de ligne.
 

guez

XLDnaute Nouveau
Re : Erreur de code

Ca fonctionne. Il y'a ptete des choses en trop mais il me saute bien les lignes en cas d'erreur et ne bloque plus à la 2éme.

Merci Pierrot, on dirait que tu es mon aide attitré ;)
Allez, on va pouvoir rentrer maintenant, bonne soirée.
 

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 882
Membres
103 981
dernier inscrit
vinsalcatraz