Nettoyage des classeurs Excel

Nettoyage des classeurs Excel 004

  • Initiateur de la discussion Initiateur de la discussion Eric_49
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bonjour Laurent,

Suite à mon message d'hier, j'ai cherché un peu pour cette histoire de références non trouvées.
En fait, la recherche de la référence dans le classeur se solde par une erreur si :
- La référence n'existe pas
- Si la référence concerne une formule ou une constante.

Dans ton classeur, il s'agissait de formules, donc le libellé dans "Info" est incomplet.

J'ai modifié l'appli en ajoutant un commentaire supplémentaire dans l'info.

Ce sera pris en compte dans la prochaine version.

Bonne journée

Eric
 
Dernière édition:
Bonsoir Laurent

Les noms données à certaines zones du classeur, sont stockés dans la collection "Names" (ThisWorkbook.names).
L'application se contente de lister le contenu de la collection (de 1 à ThisWorkbook.Names.count) et d'afficher :
- Le nom donné à la zone (ThisWorkbook.names.(N°).Name)
- La référence dans le classeur (ThisWorkbook.names.(N°).RefersTo) en principe la feuille et les adresses cellules
Dans ton 1er cas, l'appli indique comme nom : "_xleta.DATE" et comme référence : "=#NAME?" d'où l'affichage de "Erreur" en info puisque il s'agit d'une erreur.

Lorsque ce n'est pas une erreur, l'appli tente de joindre la référence indiquée en affectant, à un objet Range, la plage définie par "RefersTo".
Si la plage est trouvée, l'infos est vide (j'aurais pu placer OK dans la cellule), par contre si cela déclenche une erreur, ce qui est le cas pour la zone "ASuivre", alors "Non trouvée" est affiché en info.

Pour ces deux cas je ne peut t'en dire plus. Le rapport ne fait que refléter le contenu du classeur.

Je me souviens d'avoir été étonné car la liste des Noms présents dans ton classeur (via Gestionnaire des noms) ne reflétait pas la liste du rapport.

Concernant le dépassement de capacité, je n'ai pas eu ce problème lorsque j'ai fait les tests avec ton classeur (que je n'ai plus). Peut-être un problème de mémoire disponible ?

A+

Eric
Salut Eric,
Merci pour ton retour.
A partir du rapport, j'ai été cherché à quoi correspondait _xleta.DATE ou _xlfn.DAYS.
L'erreur est comme si j'utilisais ses fonctions en ANGLAIS, qui viennent interférer avec les fonctions en Français. Pourtant, j'ai bien la dernière version d'excel. Le français est bien installer par défaut. A force de cherche, je me suis demander si cela était vraiment une erreur de mon fichier en lui-même.
En revanche, sur
Bonjour Laurent,

Suite à mon message d'hier, j'ai cherché un peu pour cette histoire de références non trouvées.
En fait, la recherche de la référence dans le classeur se solde par une erreur si :
- La référence n'existe pas
- Ou si la référence concerne une formule ou une constante.

Dans ton classeur, il s'agit de formules, donc le libellé dans "Info" est incomplet.

J'ai modifié l'appli en ajoutant un commentaire supplémentaire dans l'info.

Ce sera pris en compte dans la prochaine version.

En attendant je te joint le classeur de l'appli modifiée.

Bonne journée

Eric
MErci encore eric.
J'étais entrain de te repondre. 🙂
DU coup, je vais voir.
A+ et Bonne journée
Laurent
 
Dès que tu auras téléchargé l'appli modifiée, dis-le moi pour que je supprime le fichier.
Je ne voudrais pas que d'autres la télécharge (cela fausserait le décompte des téléchargements)
 
Dernière édition:
Bonsoir Laurent

Les noms données à certaines zones du classeur, sont stockés dans la collection "Names" (ThisWorkbook.names).
L'application se contente de lister le contenu de la collection (de 1 à ThisWorkbook.Names.count) et d'afficher :
- Le nom donné à la zone (ThisWorkbook.names.(N°).Name)
- La référence dans le classeur (ThisWorkbook.names.(N°).RefersTo) en principe la feuille et les adresses cellules
Dans ton 1er cas, l'appli indique comme nom : "_xleta.DATE" et comme référence : "=#NAME?" d'où l'affichage de "Erreur" en info puisque il s'agit d'une erreur.

Lorsque ce n'est pas une erreur, l'appli tente de joindre la référence indiquée en affectant, à un objet Range, la plage définie par "RefersTo".
Si la plage est trouvée, l'infos est vide (j'aurais pu placer OK dans la cellule), par contre si cela déclenche une erreur, ce qui est le cas pour la zone "ASuivre", alors "Non trouvée" est affiché en info.

Pour ces deux cas je ne peut t'en dire plus. Le rapport ne fait que refléter le contenu du classeur.

Je me souviens d'avoir été étonné car la liste des Noms présents dans ton classeur (via Gestionnaire des noms) ne reflétait pas la liste du rapport.

Concernant le dépassement de capacité, je n'ai pas eu ce problème lorsque j'ai fait les tests avec ton classeur (que je n'ai plus). Peut-être un problème de mémoire disponible ?

A+

Eric

Dès que tu auras téléchargé l'appli modifiée, dis-le moi pour que je supprime le fichier.
Je ne voudrais pas que d'autres la télécharge (cela fausserait le décompte des téléchargements)
c'est fait
 
Bonjour Laurent,

Suite à mon message d'hier, j'ai cherché un peu pour cette histoire de références non trouvées.
En fait, la recherche de la référence dans le classeur se solde par une erreur si :
- La référence n'existe pas
- Si la référence concerne une formule ou une constante.

Dans ton classeur, il s'agissait de formules, donc le libellé dans "Info" est incomplet.

J'ai modifié l'appli en ajoutant un commentaire supplémentaire dans l'info.

Ce sera pris en compte dans la prochaine version.

En attendant je te joint le classeur de l'appli modifiée.

Bonne journée

Eric
Tu peux le retirer, c'est fait...
Merci
 
Salut Eric,
Intéressant. Je pense que c'est lié à la traduction interne à Excel.

Voici la fonction Lambda ASUIVRE telle que je l'ai codé dans Excel.
Sa référence est non trouvée.
en Rouge, les fonctions Excel,
en Vert, les variables
en Bleu, les fonctions ou routines développées

LAMBDA(Ord;Ech;DEch;MR;Tps;SIERREUR(SI(Ord=0;0;1)*SI(SI(MOD(Ech;9)=6;6;SI(MOD(Ech;9)=0;9;0))=Ech9ou6(Ech);Ech9ou6(Ech);0)*SI(CNUM(DEch)<CNUM(MOIS.DECALER(AUJOURDHUI();MR));1;0)*SI(CNUM(DEch)>CNUM(MOIS.DECALER(AUJOURDHUI();Tps));1;0);"-"))

La même fonction que ton fichier test a relevé :
LAMBDA(Ord,Ech,DEch,MR,Tps,IFERROR(IF(Ord=0,0,1)*IF(IF(MOD(Ech,9)=6,6,IF(MOD(Ech,9)=0,9,0))=Ech9ou6(Ech),Ech9ou6(Ech),0)*IF(VALUE(DEch)<VALUE(EDATE(TODAY(),MR)),1,0)*IF(VALUE(DEch)>VALUE(EDATE(TODAY(),Tps)),1,0),"-"))

Sur les fonctions EXCEL :
Erreurs sur : _xleta.IFERROR et _xlfn.IFERROR - qui correspond sur SIERREUR
Erreur sur _xleta.VALUE qui correspond à CNUM
Erreur sur _xlfn.LAMBDA qui correspond à LAMBDA
Rien sur SI et IF
Rien sur MOD
Rien sur EDATE qui correspond MOIS.DECALER
Rien sur TODAY qui correspond à AUJOURDHUI()

Sur les variables :
Erreur sur _xlpm.Ord qui correspond à Ord
Erreur sur _xlpm.Ech qui correspond à Ech
Erreur sur _xlpm.DEch qui corespond à DEch
Erreur sur _xlpm.MR qui correspond à MR
Erreur sur _xlpm.Tps qui corespond à Tps

Sur les fonctions :
Erreur sur Ech9ou6
Erreur sur ASuivre

Je continue à pister.

Merci pour ton fichier.

Laurent
 
Oui en effet, les fonctions ont l'air d'être stockées en anglais.
C'est peut-être logique après tout. Si le classeur est donné à un anglais sur un ordi paramétré dans sa langue, les fonctions (en français) ne fonctionneraient plus.

Bonne recherches en tous cas

Eric
 
Bonjour Eric,

Je voulais tester votre programme mais à l'ouverture j'ai une erreur de Microsoft Forms
Je pense que ça vient de mon ordi, pouvez-vous m'aider ? j'ai Excel 2016
Capture d’écran 2025-02-11 222255.jpg

Après avoir cliqué sur "OK" pour passer l'erreur, si je clique sur "Choisir" j'ai une autre erreur, idem pour "Ouvrir et analyser".
Capture d’écran 2025-02-11 222915.jpg


Merci pour votre travail.
Cdlt.
 
Bonjour,

C'est un problème de bibliothèques non installées (ou non cochées) je pense.

Dans l'onglet "Développeur" >> "Visualiser le code" >> "Outils" >> "Références"
Voila ce qui doit être coché (à minima) :

1739335658658.png


En pièce jointe, un dossier pour l'installation de 2 DLL qui sont souvent manquantes sur certains ordinateurs.
Voir le fichier "Procédure d'installation" pour la marche à suivre.

@+ Eric
 

Pièces jointes

Dernière édition:
Bonjour,
Lorsque je lance ce classeur, une erreur de compilation est signalée et ne me permet donc pas de continuer.
Je suis avec Excel 2021 en windows 10.
J'ai bien coché l'option requise "accès approuvé au modèle d'objet du projet VBA"
Les macros sont bien activées.

Voici le module concerné:
Sub Traitement_en_cours(ByVal Pn, Optional Titre = "", Optional F = "") ' Byval pour Pn (modifié) et Byref pour les autres
....
....
' Barre de progression
With .ProgressBar1 ' Min=1, Max=10 par défaut

Erreur de compilation sur cette ligne

Méthode ou membre de données introuvable (Erreur 461)​


J'ai vérifié si des références manquaient, ou n'étaient pas cochées. Ce n'est pas le cas.

Merci de mettre sur une piste pour trouver d'où vient ce souci, car je sèche.

Belle initiative que ce nouveau classeur qui devrait alléger certains des développements réalisés ou dont j'ai hérité depuis quelques années
 

Pièces jointes

Erreur de compilation sur cette ligne

Méthode ou membre de données introuvable (Erreur 461)​

Bonjour,

J'ai téléchargé ton classeur et procédé au nettoyage. Aucune erreur de mon côté. Le nettoyage est bien effectué.

Je suis encore sous Excel 2016, Window10 64bits. Peut-être que cela est dû à Excel 2021, mais j'en doute car d'autres utilisateurs (ayant 2021) m'auraient averti. D'autant que cette procédure est présente dans d'autres applications (téléchargées ici et ailleurs de nombreuses fois).

L'erreur se produit sur l'affichage de la ProgressBar, donc c'est sûrement un problème de DLL.

Voici un petit utilitaire qui permet de lister les références utilisées par le classeur (ou présentes pour VBA).
Il s'agit d'un classeur dont le module spécifique est à ajouter au classeur à tester :
- Ouvrir le classeur à tester, puis le classeur de test (téléchargé ici)
- Dans Onglet développeur, Visualiser le code, clic droit sur "Module_Ref_VBA", le déplacer dans le classeur à tester


On lance la macro "Liste_Références_Vba_actives" qui ajoute une feuille au classeur et liste les références. Une fois exécutée, copier le résultat (image ou autre) et supprimer le module ainsi que la feuille ajoutée (ou fermer le classeur sans l'enregistrer).

Voilà ce que cela donne chez moi :

1739859917313.png


A voir chez toi ce qu'il en est.

A+

Eric
 

Pièces jointes

Dernière édition:
Bonsoir ERIC,
Avant de faire ce que tu m'as conseillé, j'ai relevé les DLL activées dans mon fichier. Il y avait 4 sur les 6 que tu trouves chez toi.
Manquait les 2 dernières de ta liste. (MS...)
J'ai ensuite installé dans mon fichier un nouveau module contenant le code "Module_Ref_VBA" et exécuté la macro "Liste_Références_Vba_actives"
Après cela les 6 dll se trouvaient bien activées dans mon fichier.
J'ai ensuite retéléchargé le fichier de nettoyage afin d'être certain d'avoir la version pas altérée par mes tests avec des plantages qui pourraient laisser des "scories".
Malheureusement je plante dès le début Sub Choix_Calcul(Optional i As Byte = 0) ' sur l'instrauction

' Mise à jour Feuil Main
With Sheets("Main")
.Unprotect
With .Label_Calcul PLANTAGE SUR CETTE INSTRUCTION

et avant même que j'ai pu presser le bouton "Choisir".
J'ai remarqué aussi que je ne peux pas marquer les 2 options (Fermeture et affichage) situées juste en dessous.
Via le debugging j'ai inhibé the With jusqu'au Endwith et enregistré.
J'ai relancé. Cette fois cela ne s'est pas planté et j'ai pu presser le bouton choisir et indiqué l'adresse de mon fichier à nettoyer.
Mais là je rencontre le même souci que décit dans mon premier message soit With .ProgressBar1 ' Min=1, Max=10 par défaut dans la sub "Traitement_en_cours(ByVal Pn, Optional Titre = "", Optional F = "")".

Je suis sur un PC 64 bits sous windows 10 avec "excel version LTSC Standard 2024" (et non comme dit précédemment en version excel 2021!)

Je n'ai pas trop le temps d'approfondir en cette période chargée et je crois que je vais laisser cet outil murir un peu pendant quelques mois....puis voir si je suis le seul à rencontrer ce genre de difficultés.
Merci à toi
 
Bonjour

Avant de faire ce que tu m'as conseillé, j'ai relevé les DLL activées dans mon fichier. Il y avait 4 sur les 6 que tu trouves chez toi.
Manquait les 2 dernières de ta liste. (MS...)
J'ai ensuite installé dans mon fichier un nouveau module contenant le code "Module_Ref_VBA" et exécuté la macro "Liste_Références_Vba_actives"
Après cela les 6 dll se trouvaient bien activées dans mon fichier.
Pour lister les références installées & utilisées, il faut placer le module "Module_Ref_VBA" dans le classeur de nettoyage et non dans le classeur à analyser.

Manquait les 2 dernières de ta liste. (MS...)
Il semble qu'il te manque la Dll Fm20.dll et l'Ocx Mscomctl.ocx. C'est justement ces références qui permettent à l'appli de fonctionner correctement.

Télécharge le Zip que j'ai joint dans un précédent message (Références OCX manquantes.zip) et installe les deux OCX. (voir fichier procédure d'instal)

Pour la référence "Microsoft Form 2.0 object library" elle doit être présente dans ton système, il suffit de la cocher:
Dans Références >> Parcourir >> Aller dans Windows\System32 (ou SysWOW64) et sélectionner le fichier FM20.DLL

Il ne sert à rien de bidouiller le code VBA, l'appli doit fonctionner. Elle a été téléchargée plus de 300 fois (ici et sur d'autres sites ; les seuls problèmes rencontrés étaient liés aux références manquantes ou à certains types de classeurs complexes. Il se peut que la version d'Excel y soit pour quelque chose, mais ne l'ayant pas, je ne peut pas tester (je n'ai aucune remontée d'anomalie liée à la version utilisée).

Bonne journée

Eric

Ps : A titre d'essai, tu peux télécharger l'appli "Gestion de ses comptes et budget prévisionnel annuel V35" que j'ai placé sur le site. Certaines procédures (sont identiques). Tu devrais rencontrer les mes problèmes. (téléchargée ici 69 fois et 8160 fois sur Excel-Pratique)
 
Dernière édition:
Bonsoir Eric,
J'ai tout fait mais çà ne marche quand même pas.
J'ai rajouté les OCX (une manquait), j'ai mis le Module_Ref_VBA dans le tableur "nettoyage classeur" mais je suis toujours face aux mêmes erreurs de compilation.
Peut-être pourrais-tu m'envoyer ton fichier "nettoyage classeur" qui marche chez toi ?

Je vais aussi tenter de recommencer depuis le début sur un autre PC en Windows 11 pour voir ce que ça donne.
Merci du temps que tu as bien voulu consacrer sur cette question.
 
Bonjour

Peut-être pourrais-tu m'envoyer ton fichier "nettoyage classeur" qui marche chez toi ?

Tu peux le télécharger sur le site, il n'y a pas de différence. Lien : Nettoyage des classeurs Excel 003
(les références VBA utilisées sont chargées à l'ouverture du classeur, elles ne sont pas intégrées au classeur)

Pour les références, envoie moi une copie d'écran de celles utilisées par le classeur de nettoyage, je regarderai.
(ouvrir le classeur de nettoyage, >>Développeur >> Visualiser le code >> Outils >>Références >> Touches Alt+Imp-Ecran et coller (CTrl+V) ici dans ton message de réponse)

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour