XL 2013 Réouvert - Aide - Macro compilation de fichier

Hugo156

XLDnaute Nouveau
Bonjour à tous,

J'ai adapté une macro pour compiler la même feuille de plusieurs fichiers dans un seul fichier global, mais quand je lance celle-ci j'ai une erreur 400 qui s'affiche :(. Tous les fichiers sont dans le même dossier.

Je ne comprends pas pourquoi.

Voici mon code :

VB:
Option Explicit

Sub Importfiles()
Dim WbDest As Workbook, WbSource As Workbook
Dim WksNewSheet As Worksheet
Dim NomFichier As String, Chemin As String
Dim I As Long

  Set WbDest = ActiveWorkbook

  Chemin = "W:\Etudes\SUPERSONIC\Compilation\"
  NomFichier = Dir(Chemin & "*.xls") 'définit les fichiers à importer en l’occurence tous les fichiers excel se trouvant dans ce répertoire
    
  Do While NomFichier <> ""                     'démarre la boucle jusqu’au dernier fichier disponible dans le répertoire
    Set WbSource = Workbooks.Open(Chemin & NomFichier)   'ouvre le fichier actuel à importer
    Set WksNewSheet = WbSource.Sheets("positionnement-etude") 'sélectionne la feuille de données à importer positionnement-etude
    WksNewSheet.Activate                        'active cette feuille
    WksNewSheet.Select
    Range("A5:B120").Select    'selection des données que l’on veut importer
    Selection.Copy                              'copie les données sélectionnées
    WbDest.Activate                             'retourne vers le fichier de départ
    I = ActiveSheet.UsedRange.Rows.Count        'compte le nombre de lignes déjà utilisées dans ce fichier
    Cells(I + 1, 1).Select                      'sélection de la cellule où on veut coller les données (la première vide)
    ActiveSheet.Paste                           'colle les données
    Application.CutCopyMode = False             'termine l'opération
    WbSource.Close                              'ferme le fichier source
    'NomFichier = Dir                            'va vers le fichier suivant à importer
  Loop                                          'recommence la boucle avec le fichier suivant
  WbDest.Activate

End Sub

Je vous mets en pièce jointe mon fichier macro et en we transfer le lien vers les fichiers que je voudrais compiler "trop volumineux pour être sur le site :

Ces fichiers sont en .xls mais il y a des macros est-ce pour ça que cela ne va pas ? Je préfère vous mettre les fichiers originaux pour éviter les erreurs.

Dans mon code, je ne compile que compil que les fichiers .xls mais pensez vous qu'il est possible de compiler les fichiers .xlsx dans la même macro en ajoutant :

NomFichier = Dir(Chemin & "*.xls" & "*.xlsx")

Merci à vous et bonne année :) !!!!

Hugo
 

Pièces jointes

  • compil.xlsm
    15.1 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Hugo,
En premier lieu, il y a une erreur sur la déclaration de Chemin : Chemin = "C:\Users\hfieve\Documents\Test compil macro"
NomFichier est alors : "C:\Users\hfieve\Documents\Test compil macroNomFichier.xls" Il manque un séparateur à la fin : "\"
Chemin = "C:\Users\hfieve\Documents\Test compil macro\"
Essayer avec cette syntaxe, c'est peut être l'origine de votre problème.
Pour le second point, vous pouvez faire : NomFichier = Dir(Chemin & "*.xls*") qui compilera les fichiers xls, xlsx,xlsm
 

Hugo156

XLDnaute Nouveau
Je n'ai plus l'erreur 400. Par contre, lorsque j'utilise NomFichier = Dir(Chemin & "*.xls*") l'erreur n’apparaît plus mais rien ne se passe ....

Quand j'utilise NomFichier = Dir(Chemin & "*.xls"), l'erreur apparaît 1004 en me disant ==> Erreur d'éxecution 1004 : erreur définir par l'application ou l'objet.

Hmmm je ne sais plus quoi faire
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Après : Sub Importfiles()
Ajoutez:
On Error GoTo Fin

Avant : End Sub
Ajoutez :
Exit Sub
Fin:
MsgBox (Chemin & Chr(13) & Chr(10) & NomFichier)

Cela donnera au moins le nom de fichier utilisé lorsque l'erreur arrive.
Dans ce fichier la feuille "positionnement-etude" existe t-elle bien ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je viens de vérifier un point :

Soit la macro :
VB:
Sub Macro1()
    Sheets("Feuil1").Select
    Range("B2:C34").Select
    Selection.Copy
End Sub
Si cette macro est dans la feuille 2 alors j'ai erreur 1004 : Erreur définie par l'application.
Si cette macro est dans un module je n'ai pas d'erreur.

Je pense qu'il vous faut mettre cette macro dans un module. C'est vrai que le comportement est different suivant l'endroit où est positionné la macro.

Car si je met cette macro dans feuille 1, ça marche.
Une macro dans une feuille ne peut acceder qu'à cette feuille.
Je pense que votre problème vient de là.
Question : Pourquoi avoir positionné votre macro dans une feuille ? Y a t-il une raison particulière ?
d'autant qu'il ne s'agit pas d'une macro événementielle, donc aucun intérêt.
 

Hugo156

XLDnaute Nouveau
J'ai essayé de mettre cette macro dans un module mais j'ai toujours le même problème. Soit rien ne se passe, soit j'ai une erreur 1004. Après, je dois bien avouer ne pas avoir tout compris dans votre explication ... Désolé, cela fait que je n'ai pas fat de macro.

Je commence à me demander si ce n'est la forme de mes fichiers d'origine qui ne va pas.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Essayer cette PJ pour voir.
Déja, la ligne NomFichier = Dir() était en commentaire. Or c'est cette ligne qui permet de boucler sur tous les fichiers.
J'ai rajouté une macro pour vérifier si le classeur examiné possède bien une feuille "positionnement-etude".
J'ai fait un essai rapide avec juste un fichier correct et ça à l'air de marcher.
Là je suis un peu coincé pour le test complet, je n'ai pas votre contexte.
 

Pièces jointes

  • essai module.xlsm
    16.1 KB · Affichages: 8

Hugo156

XLDnaute Nouveau
En fait, j'aimerais compiler l'ensemble de mes fichiers études dans un seul pour me faire une base données.

Tous ces fichiers sont des fichiers fournis par Orange avec des macros et formules qui nous permettent des remplissages automatique.
D'ailleurs, j'ai une question qui me vient à l'esprit, si ce sont des macros et des formules qui remplissent mes fichiers études, peut-être est-ce normal de rien avoir car il me colle les formules mais sans référence, ne faudrait-il pas faire un copier coller mais en valeur et non formule ?
 

Discussions similaires

Réponses
9
Affichages
340
  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
744

Statistiques des forums

Discussions
315 080
Messages
2 116 020
Membres
112 637
dernier inscrit
pseudoinconnu