XL 2016 Code VBA ne trouve pas fichiers alors que bien présents

Aloha

XLDnaute Accro
Bonjour,
Un code qui fonctionne depuis plus de 10 ans ne trouve tout d'un coup plus les fichiers qu'il doit ouvrir et copier.
J'ai préparé un exemple, enlevé tout ce qui n'est pas essentiel, j'ai essayé le code avec un fichier factice et le code le trouve, alors que l'architecture du tout est la même que dans la réalité.
Le bout de code responsable:
Code:
Pfad = ActiveWorkbook.Path
SuchPfad = Pfad & "\TobeCopied"
ChDir SuchPfad
'---check if there are files to be copied----
FNames = Dir("*.xls")
If Len(FNames) = 0 Then
    MsgBox "No files in the Directory"
    ChDir Pfad
    Exit Sub
End If
Cela m'embête énormément.
Quelqu'un parmi vous aurait-il une idée à quoi cela pourrait tenir?
J'ai tout vérifié: le chemin est exact, les fichiers dans le dossier "ToBeCopied sont bien des fichiers ".xls", et le fichier contenant le code est aussi le bon.
Bonne journée
Aloha
 

Staple1600

XLDnaute Barbatruc
Re

Je n'utilise pas varData dans mon code.
Donc précises ton choix, camarade.

Soit tu comptes utiliser le code que je te propose.
Soit tu cherches pourquoi ton code initial produit désormais une erreur.

Mais si tu mixes ton code avec le mien, tu risques de te mélanger les pinceaux

Prends le temps de faire deux fichiers exemples plus détaillés.
Dans ton code initial, tu parcours toutes les feuilles de tous les classeurs.
Or ton classeur Classeur1.xls contient 3 feuilles dont deux vides
(et sans entêtes sur la ligne 1)

Pour faire un test plus pointu, il nous faudrait.
1) un fichier classeur1.xls avec des données sur les trois feuilles
(et avec des données dans toutes les cellules à recopier)
2) Dans le fichier Base, sur la feuille Database, il faudrait une copie manuelle des valeurs d'au moins une feuille du classeur Classeur1.xls
(avec les valeurs copiées dans les bonnes cellules de destination)

NB: On part bien du principe que tous les classeurs ont la même structure, sur toutes leurs feuilles et que les cellules à récopier sont toutes les mêmes dans tous les classeurs?

C'est à dire celles-ci, si on reprends ton dernier exemple?
U1,BA1,BA3,A5,AY6:AY18,AY22:AY24,AW28:AX28,AV38:AX44,BA41,BA45,AV46:AX46,BA49,AY52:AY53,BA53,BA57,AX59:AY59,BA61,AY62:AY63,AU65,BA65,AE67:AF67,AH67,AY67
 

Aloha

XLDnaute Accro
Re,
Sorry, j'ai oublié de joindre les fichiers.
Toutes les fiches dans tous les classeurs sont identiques. Seulement, j'y pense à l'instant, il y a, en plus des feuilles pour les salariés, dans chaque fichier aussi 3 feuilles qu'il ne faut pas copier: Codes, Tableau, et Résumé (non affiché).
A+
Aloha

P.S.: j'ai supprimé les fichiers sauf Base pour y ajouter les 3 feuilles à ne pas copier.
 

Pièces jointes

  • Base.xlsm
    516.2 KB · Affichages: 19
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Heureusement que je t'avais suggéré de prendre ton temps pour créer ces derniers exemples
(qui en l'état ne me servent à rien)

Ce qu'il me faut c'est la correspondance exacte
(PS: normalement das une base de données digne de ce nom, la première ligne contient les entêtes
Donc voila ce qu'il faut
Month (colonne 1) => A5
Nom (colonne 2) =U1
Service (colonne 3) =>BA1
etc..

Et ton fichier ABC serait plus parlant avec des vraies données anoymes
(et surtout avec des entêtes en ligne 1)
Exemple:
NOMS|PRENOMS|ADRESSES
NOM1 PRENOM1 ADRESSE1
NOM2 PRENOM2 ADRESS2
 

Aloha

XLDnaute Accro
Re,

Comme j'étais parti je n'ai pas encore eu le temps de préparer les fichiers, mais je compte le faire.

Ce qui me manque toujours, c'est un lien entre 3 macros qui font la copie: celle-ci, une nouvelle qui copie des données inexistantes auparavant et puis celle qui remplace les formules dans les fichiers traités par la macro précédente.

Comme je n'arrive pas à faire mieux et à les intégrer dans celle-ci, je dois réouvrir les fichiers déjà ouverts auparavant.

Bonne soirée
Aloha
 

Aloha

XLDnaute Accro
Re,


En effet, avec 2 légères modifications de mon vieux code, Excel trouve à nouveau les fichiers !

J'ai remplacé
Code:
Pfad = ActiveWorkbook.Path

par
Code:
Pfad = ThisWorkbook.Path

et ajouté

Code:
Chdrive Suchpfad
après

Code:
Chdir Suchpfad
et il trouve à nouveau les fichiers.

Je ne sais pas si tu veux continuer malgré cela. D’un côté ce serait dommage pour le travail que tu as déjà fait (je ne veux surtout pas abuser de ta générosité, ça me mettrait mal à l’aise si tu avais ce sentiment !), d’un autre côté il reste encore du travail à faire.

Si tu veux continuer, je veux bien ; j’utiliserais le tien alors qui me semble plus cousu et plus conséquent que le mien auquel moi j’ai déjà apporté des modifications certainement pas toujours optimales.

Qui plus est, comme le mien a fait la grève d’un moment à l’autre il n’est pas exclu que ça lui arrivera encore.

Si tu veux continuer je préparerai les fichiers que tu désires, mais seulement demain dans l’après-midi.

Ce qui me manque toujours, c'est un lien entre les 3 macros qui font la copie: celle-ci, une nouvelle qui copie des données inexistantes auparavant et puis celle qui remplace les formules dans les fichiers traités par la macro précédente. Ce serait l’occasion de joindre les 3.

Sinon, comme je n'arrive pas à faire mieux, je dois réouvrir les fichiers déjà ouverts auparavant.

Bonne nuit

Aloha

.
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado