Microsoft 365 Nettoyage de fichier

C.Laurent

XLDnaute Nouveau
Supporter XLD
Bonjour à tous

J'ai un fichier un poil complexe qui présente des bizarreries. Je cherche un code VBA que j'ai déjà utilisé avec succès mais que ma méthode de classement a égaré ...

Il y a très très très longtemps sur MPFE, une gentille âme m'avait fait suivre un code qui depuis un fichier1.xls copiait toutes les feuilles et données dans un nouveau classeur2.xls et copiait aussi les zones nommées, les modules VBA, les graphes et TCD. En fait, il recréait le même fichier.

J'ai cherché ici sans succès, j'ai bien vu des codes pour faire fondre les fichiers à cause de la dernière cellule mais ce n'est pas ça que je cherche.

Avez vous une idée d'où puis-je trouver mon graal ?

Par avance merci pour votre aide.
@+Laurent
 
Solution
Il y a très très très longtemps sur MPFE, une gentille âme m'avait fait suivre un code qui depuis un fichier1.xls copiait toutes les feuilles et données dans un nouveau classeur2.xls et copiait aussi les zones nommées, les modules VBA, les graphes et TCD. En fait, il recréait le même fichier.
J'avais eu un bug sur un classeur qui me divisait certaines feuilles en 2 entités VBE et avant de comprendre que c'était dû à des boutons sur la feuille qu'il suffisait de remplacer par des shapes j'avais réalisé un classeur pour recopier le fautif.
Je te le met pour recopier ton classeur mais je doute fort qu'il te permette de corriger le bug TCD que tu as et dont il faudrait analyser plus finement la cause pour pouvoir le corriger.

C.Laurent

XLDnaute Nouveau
Supporter XLD
Bonjour à tous

Je reviens, j'ai trouvé la solution du problème !

Ma liste d'opérations commence à la cellule A4 et fini à la cellule AC642 (en tenant compte de la ligne d'entêtes toutes en haut). J'ai nommé les colonnes de cette liste avec des noms définis par
VB:
=DECALER(Opérations!$G$4;1;;VarNombreOpé;1)
Donc je désigne l'entête de la colonne, je décale de 1 vers le bas pour avoir la première valeur du tableau puis j'étends sur le nombre de ligne (variable écrite en dur dans une cellule) et sur une largeur 1.

Ça va bien pour presque tout mais pas pour ce cas : en faisant mon TCD, si je coche "Ajouter ces données au modèle de données", il ne veut plus faire la somme d'un champ car il trouve du texte.

Si je nomme mes colonnes comme ça ...
VB:
=DECALER(Opérations!$G$5;;;VarNombreOpé;1)
... ça marche :cool: mon TCD fonctionne avec "Ajouter ces données au modèle de données" !!!

Je ne veux pas crier au bug (It's not a bug, it's a feature) mais si quelqu'un connait une bonne raison, je prends :)


Merci à tous pour votre implication.
@+Laurent
 

gbinforme

XLDnaute Impliqué
Bonsoir Laurent,
C'est bien vrai que c'est assez curieux.:(
Si ta colonne fait partie d'un tableau structuré, tu peux éviter ta fonction et mettre simplement si tu es dans la colonne "dates" par exemple pour nommer ta plage
VB:
=Tableau1[dates]
et ton tableau s’agrandit sans souci et cela t'évites de calculer la taille.
 

Discussions similaires

Statistiques des forums

Discussions
314 655
Messages
2 111 601
Membres
111 216
dernier inscrit
mauphico