Import fichiers Excel
Bonsoir les amis,
Voici que je beug sur une petite procédure toute simple qui consiste à venir importer toutes les données de 7 fichiers Excel enregistrés sous le format xlsx.
Le fichier " Suivi Gestion Elecs" format xlsm, doit à partir de sa première page venir compiler toutes les données des 7 fichiers sur un tableau type dont j'ai défini l'intitulé de chaque colonne.
Le seul souci c'est qu'il ne semble pas vouloir tout importer ... ??? Pourquoi donc je suis un peu perdu !!
IL me met ensuite en erreur : " ERREUR EXECUTION 1004 problème import fichier... " alors que 4 ont pu être compilés....
Si qqn peut m'aider à résoudre ce problème je lui en serais super reconnaissant. J'ai vraiment besoin de ce fichier pour mon travail, votre aide me sera bien précieuse
Merci à chacun pour ses conseils
Amicalement
Régis
Bonsoir REX, bonsoir le forum,
C'est plus facile à comprendre quand tout est spécifié et, en principe, ça ne plante pas :
Le code modifié :
Option Explicit
Sub Consolider()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TET As Variant 'déclare la variable TET (Tableau des En-Têtes))
Dim I As Byte 'déclare la variable I (incrément)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim F As String 'déclare la variable F (Fichier)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Application.DisplayAlerts = False 'interdit les messages d'Excel
Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets("Compilation") 'définit l'onglet destination OD
OD.Columns("A:O").Clear 'efface les colonne A à O de l'onglet OD
TET = Array("NA", "RUB", "LIBELLE RUB", "LIBELLE NA", "DATE COMMANDE", "DATE FACT", "MATRICULE-FOURNISSEURS", "BON LIVRAISON", _
"DENOMINATION", "QUANTITE", "ETAT", "FAP", "MONTANT", "MONTANT", "CHANTIERS") 'définit le tableau TET
For I = 1 To 15 'boucle sur les 15 colonnes d'en-tête I
OD.Cells(1, I).Value = TET(I - 1) 'envoie dans la cellule ligne 1 colonne I, la donnée I-1 du tableau TET
Next I 'prochaine colonne de la boucle
OD.Range("A1:O1").Font.Color = vbWhite
OD.Range("A1:O1").Interior.Color = vbBlue
CA = "C:\Users\regis.berthe\Desktop\Test compilation\" 'définit le chemin d'accès CA (ne pas oublier le "\" à la fin...)
F = Dir(CA & "*.xlsx") 'définit le premier fichier Excel F du dossier ayant CA comme chemin d'accès
Do While F <> "" 'exécute tant qu'il existe des fichiers F
Workbooks.Open CA & F 'ouvre le fichier F
Set CS = ActiveWorkbook 'définit le classeur source CS
Set OS = CS.Worksheets(1) 'définit l'onglet source OS
DL = OS.UsedRange.Rows.Count 'définit la dernière ligne éditée DL de l'onglet source
Set DEST = OD.Cells(OD.UsedRange.Rows.Count + 1, "A") 'définit la cellule de destination DEST de l'onglet OD
OS.Range("A2:O" & DL).Copy 'copie la plage A2:O... de l'onglet source
DEST.PasteSpecial (xlPasteValues) 'colle les valeurs dans DEST
CS.Close SaveChanges:=False 'ferme le classeur source sans enregistrer
F = Dir 'définit le prochain fichier Excel F du dossier ayant CA comme chemin d'accès
Loop 'boucle
Application.DisplayAlerts = True 'autorise les messages d'Excel
'le ScreenUpdating = True est superflu car cela se fait automatiquement
End Subwahou mais tu m'as pondu un truc de fou là !!!!
Je teste et reviens vers toi mais franchement un grand MERCCIIIIIIIIIIIIIII
Re Bonsoir TauThème,
Alors je viens de faire un essai avec cette super programmation en VBA sauf que je ne sais pas pourquoi je retrouve le même type d'erreur...
Ci joint l'erreur rencontrée pour laquelle je t'ai transmise les captures d'écran.
Serait il possible s'il te plait de me transmettre le fichier avec les modifications apportées qui fonctionnent sur ton PC, car là pour moi ça n'a pas l'air de vouloir marcher
Merci pour le temps que tu m'accordes, j'apprécie vraiment
Bonne soirée à toi
Régis
Bonsoir,
Le fichier en pièce jointe. J'ai laissé en commentaire le chemin d'accès CA que j'utilisais pour mes tests et ça fonctionnait impeccable... Je pense que le problème est dans ce chemin d'accès.
Bonjour ThauThème,
Je viens de l'essayer alors ça y est nous serions passé à une étape supérieur c'est à dire qu'il compile les 3 premiers fichiers Excel jusqu'à encadrement après il s'arrête et ne trouve plus le chemin d'accès. Comme si la boucle était limitée en nombre de tour ?
Peux tu s'il te plait réessayer la compilation avec le dossier ci-joint ?
En te remerciant pour ton retour et l'aide apportée
Bonne journée à toi
Régis
Re,
Tout semble fonctionner chez moi. En pièce jointe le fichier obtenu après la macro. J'ai vérifié rapidement et ça me semble correct.
Merci ThauThème pour ce retour
Alors après essaie je bute sur le même souci ( erreur 1004.. ) à ne rien comprendre vraiment, je vais essayer ce soir sur un autre ordi pour voir si cela vient de chez moi ?
Toutefois j'ai tenté de déplacer le code dans l'onglet concerné et la surprise ça semble fonctionner jusqu'à "3-Pointages Encadrements"
Puis cela affiche "Erreur 400... "
Aurais tu une idée pour résoudre le pbl ?
Merci bcp pour ta patience et le temps que tu prends pour m'aider à résoudre ce souci
Bien à toi
Re,
Désolé mais je ne pourrais pas t'aider davantage vu que je n'ai pas le problème chez moi...
Remplace, au cas ou, le type de la variable DL. Met le type Long à la place de Integer...
Thau Thème tu es un chef
Merci pour ton implication ça vient de fonctionner. En fait je me suis aperçu qu'il s'agissait d'une fichier xlsx qui ne fonctionnait pas : erreur d'enregistrement ....
Grâce à toi je vais pouvoir faire le débours de chacun de mes projets de manière très efficace.
Belle poursuite à toi
Bien à toi
Régis