Bug macro : Projet ou bibliothèque introuvable

mikael2235

XLDnaute Occasionnel
Bonjour à tous,

Depuis le changement d'ordinateur, une macro ne veut plus s'executer correctement, et mets systèmatiquement le message d'erreur suivant :
"Erreur de compilation - Projet ou bibliothèque introuvable"
et ça correspond à la ligne : ThisWorkbook.Worksheets("Datas").Range("B2")

Savez vous d'ou vient ce problème ?

Merci. Mikael.
 

Dranreb

XLDnaute Barbatruc
Pour écrire une date venant d'une TextBox1 par exemple indiquez la valeur de cellule que vous voulez y mettre, par exemple
Cells(x, y).Value = CDate(TextBox1.Text). Ne laissez surtout pas Excel devoir interpréter lui même le texte brut de la TextBox ! Parce que lui, pour pouvoir au final enregistrez ça en Double, en vrai, il peut peut être être conduit à adapter le format …
C'est vrai aussi en général pour tout ce qui n'est pas à stocker sous forme de texte, utilisez les fonctions CDbl et CCur pour convertir un texte en nombre à destination de cellules.
 

Barnes

XLDnaute Nouveau
Pour écrire une date venant d'une TextBox1 par exemple indiquez la valeur de cellule que vous voulez y mettre, par exemple
Cells(x, y).Value = CDate(TextBox1.Text). Ne laissez surtout pas Excel devoir interpréter lui même le texte brut de la TextBox ! Parce que lui, pour pouvoir au final enregistrez ça en Double, en vrai, il peut peut être être conduit à adapter le format …
C'est vrai aussi en général pour tout ce qui n'est pas à stocker sous forme de texte, utilisez les fonctions CDbl et CCur pour convertir un texte en nombre à destination de cellules.

En fait la correction que j'ai apportée est plus pragmatique pour moi puisque les valeurs ne changent jamais de cellule et elle se retrouve de sheets(1) en sheets(1)
contrôle de saisie pour toute date
If TxtDate <> Format(TxtDate, "dd/mm/yyyy") Then
MsgBox "la Date est incorrect. Le Format attendu : 01/01/2000 !"
End If
La saisie effectué sur formulaire
Sheets(1).Range("A2").Value = Format(TxtDate, "m/d/yyyy")

Ces points particuliers sont immuables dans tous les classeurs étant le départ d'un calcul sur un espace-temps, d'aujourd'hui à 1 ans jusqu'à l'an 22 480 (Référence des algorithmes) d'où la nécessite originale de créer un format dans le module date Excel sous m/jj/aaaa. dès le début en 2012 cela fonctionnait mêm sur les évolutions successives jusqu'en 2016 ou ela commençait à se détraquer, un peu, beaucoup ... pationnément ... Allez comprendre pourquoi d'un seul coup cela c'est détraqué ????
 

Dranreb

XLDnaute Barbatruc
Oui ben ce n'est pas bon. Dans le pire des cas il l'enregistre sous forme de texte, et peut être d'en d'autres il refait sa sauce à lui qui ne convient pas. Sauf si ç'est du texte, n'essayez jamais de mettre dans une cellule ce que vous voulez y voir, car ce que vous y verrez ne sera jamais que purement indicatif visuellement, totalement ignoré des formules s'y référant et résultant toujours de la recombinaison de sa valeur avec son format de nombre. Quant à sa valeur proprement dite elle n'a rien à voir avec ce texte: c'est du binaire virgule flottante double précision.
 

Pièces jointes

  • ValeursExcelVsVBA.xlsm
    69.8 KB · Affichages: 7
Dernière édition:

Barnes

XLDnaute Nouveau
Mais dites donc vous êtes comme moi, on ne dors pas beaucoup.
Alors en ce qui concerne l'interprétation de la Date d'Excel il est dit par microsoft que l'interprétation du transfert txtbox vers la feuille, le format de la cellule qui reçoit la valeur texte ou autre indiquant son départ (De la txtbox) et sera reçu sur la feuille, la cellule receptrice de la valeur (peu importe string ou numérique) interprétera à la date du module excel qui sera défini par l'utilisateur. Soit ma cellule est defini comme le départ de l'information
"m/d/yyyy" correspondant au format français (Régional), effectivement traduit par les américians.

Maintenant que ce programme arrive presque à son terme, il sera révisé par un professionnel de l'informatique pour réaliser les interfaces utilisateur/internet, lui même jugera de l'interprétation à donner pour que cela fonctionne. Le fait que ce programme est destiné à l'europe voir l'international (nous le souhaitons), il y a de fortes chances qu'il bascule en UTH ou UHT pour la synchronisation des horloges (Dates). Ce programme est une maquette remplaçant le cahier des charges.

Je sais aborder les protocoles et calculer la complexité mais écrire le langage informatique a été une difficulté que j'ai réduit juste au nécessaire basique pour rédiger une maquette avec en plus, peut-être, 2 doigts de "gamberge" en plus ... sur le clavier. Je ne suis pas seul mais chacun travaille de son coté pour raison logique de protection des modules maquette. Je ne copie pas sur les modules dont je ne suis pas l'auteur pour raison logiques aussi, je ne reproduis pas la faute du copain, c'est en assemblant lors de nos rencontres et résolvons les difficultés.

Pour l'anecdote je ne suis pas le seul à posséder ce problème de bibliothèque introuvable (Donc une statistique peut-être faite) même en échangeant avec les autres, la clairvoyance auprès de microsoft sur ce sujet est extrêmement gloque.

C'est certain, il y a problème à ce niveau. C'est pourquoi nous avons commencé sur microsoft et nous ne pouvons pas changer. Nous allons certainement demander d'établir l'interface à partir de GNU. Trop de mal-habiles informaticiens chez microsoft ferait courir un danger à l'entreprise future.

Enfin, toutjours est-il que je ne ferai jamais la maintenance de ce programme, et nous souhaitons trouver ceux dont c'est le métier informatique qui puissent le faire à notre place. En relisant mes lignes, je m'aperçois de la faute : La Date est incorrect ... Même en orthographe cela devient catastrophique, pas pour microsoft mais pour moi.
 

Barnes

XLDnaute Nouveau
Suivez mon conseil: convertissez les dates saisies dans les TextBox en Date au moyen de la fonction CDate et vous n'aurez plus de problème.

L'origine en 2012 était comme ceci : Sheets(1).Range("A2").Value = CDate (Format (TxtDate), "m/d/yyyy")

Le problème était l'extrapolation passée 9999 années date limite informatique. Par conséquence, le générateur construit pour nos calculs n'arrivait jamais à finir son travail, il ramait et sans cesse en recalculs. Par information microsoft, il proposait une version d'écrire dont je n'ai pas retenu la logique puisque dès le générateur lancé, il plantait. donc la format m/jj/aaaa a été inventé et cela fonctionnait parfaitement, jusqu'en 2016. à partir de 2016, nous avons été confronté pas uniquement à ce genre de difficultés mais de plantage sur plantage parce la stricte interprétation windows et office divergée même entre-eux. Des compromis d'interprétations on donc été trouvé pour stabilisé nos échanges de Bases en Bases mais à chaque fois il fallait revoir les protocoles parce que tout ce plantait (Pas tout mais si un code se détraque, la théorie des dominos est applicable).

Alors révision de nos protocoles d'approches et des solutions ter à ter (Pragmatique puisque nous connaissons la finalité, il n'y a pas besoin pour la maquette de démontrer j'usqu'à l'an 22 480 pour exposer l'absolu vrai, passer outre l'an 9999 nous savons.

D'où, le binaire mis en marge pour raison de version non cohérente chez microsoft (windows et office parce qu'il y a aussi Access avec, alors cela compliquait la possibilité de cohérence entre nos modules. Abandon du binaire (xlsb retour depuis peu à xlsm). Chez l'un cela fonctionne, chez moi c'est stable mais le format m/jj/aaa ne veut pas disparaitre, je dois me débrouiller à le faire disparaitre.

Virus ! Avec le dernier cri de protection informatique je pourrai charger un virus, le logiciel dont nous disposons l'éradique immédiatement, voir une virgule de travers, il bloque les applications et demande l'action à suivre.

Non, c'est réellement un problème microsoft windows 10 et office pro 2016. Quand on voit comment ils ré-installe les applications office ou windows 10, il y a de quoi s'inquiéter de leurs compétences, mêmes les adresses de mise à jour office sont très légère voir inoppérentes. Ils gardent en mémoires tous les systèmes et vous disent, c'est bon c'est fait la nouvelle installation fonctionne comme de fait, elle fonctionne comme l'autre précédemment soit, ils vous endorment et vous collent n'importe quoi sur votre machine.

L'actualisation de correction windows c'est identique, ils apportent des corrections qui déstabilisent vos travaux, alors c'est à vous d'être le mécanicien de leur voiture qui ne roule pas comme ils disent, c'est un vrai taco. on ne réactualise plus windows 10 pour arrêter l'émoragie des bêtises invraissemblables

Il faut faire avec pour l'instant mais c'est évident, nous resterons pas sous windows et office c'est clair pour les échanges européens.

Ondrive : Parlons-en, l'espion en tête de liste. 2015 on échange par partage et qu'est-ce que l'on retrouve sur les sites américains, une partie de nos algorithmes ???????????????????? expliqué pour qu'il fonctionne (morceau du générateur). HOULA ! Plus de connection à ondrive, nada plus rien tant que le logicciel n'est pas sur le marché.

Alors wibdows et consorts, nous en avons soupé et nous le rendons tous les jours par indigestion ! Heureusement la fin est proche !
Si notre entreprise prospère, nous aurons au moins du grain à moudre sur windows et consorts pour donner l'explication de l'exploitation avec GNU.
 

Barnes

XLDnaute Nouveau
Bonjour,
Voici un classeur avec une feuille. Le format date personnalisée m/j/aaaa, j'ai tout essayé pour le radier en vain. Nettoyer chacun feuille, voir transposer sans automation, colonne par colonne et vérifier si le format était présent, j'enregistrais, tout décomposé. Vérifié chaque macro alimentant les infos, vérifier toutes les lignes de codes, les propriétés et formats txtbox .... Rien absolument rien, ce format disparait sur des classeur vierge, n'ai pas présent l'ors de l'enregistrement, et revient à l'ouverture, sans cesse ??? On le supprime à noveau du classeur, PAF, il plante Excel.
J'étais sur xlsb, c'etait infernal sous xlsm, c'est stable sauf ce ...... de ....... m/j/aaaa dès qu'il est supprimé, il plante excel.

Essayez voir si chez vous cela fait la même chose ... C'est une feuille sur laquelle des infos ont été supprimées

Bon courage (Anti-virus Kaspersky full options) Ce n'est pas un virus, pour moi, c'est un bug microsoft. Ce format a été créé sur excel mais ne veut plus le quitter même avec l'ensemble des solutions office proposée pour réparer, rien !

Si quelqu'un sait comment accéder techniquement aux formats excel pour radier ce format, je suis preneur. Merci
 

Pièces jointes

  • Fond de base Algo_1.xlsm
    54.6 KB · Affichages: 5

Barnes

XLDnaute Nouveau
Bonjour.
En principe un format non utilisé ne gène pas, mais vous pouvez le supprimer.
Il ne devrait pas revenir si vous ne forcez pas Excel à interpréter un String comme date au lieu de lui fournir directement une Date.
Bonjour,
Vrai ce format (inventé) ne gène pas, ce qui est plus cocasse, c'est lors d'enregistrements d'une date parfaitement calibrée à la date régionale, excel la traduit comme date m/j/aaaa. Toutes les textbox expédient des dates sur les feuilles conforment au format régional ("m/d/yyyy") voir sans aucunement forcer la date d'une textbox qui renvoie normalement un string et sur la feuille, ce string prend le format indiqué dans la cellule, Excel met la date en m/j/aaaa, alors qu'il est précisé en format (*14/03/2012) format régional en tête des colonnes ("header")... Aller comprendre.

Je supprime donc ce format inventé inutile maintenant et c'est là que cela se complique, puisqu'il détecte une erreur et ne veut pas enregistrer le classeur. Essayer les références manquantes n'en parlons pas, une catastrophe, il plante tout.

Je laisse ce format, effectivement il enregistre le classeur correctement. Nous pourrions dire :
Alors laissez cette date dans ce format dans les dll d'excel ! Oui MAIS !
Est-ce que vous, vous auriez confiance dans vos résultats si vous savez un résiduel faux dans vos formats et qu'il peut à tout moment prendre la place d'un vrai format ? Ceci ne garanti pas l’intégrité du programme ....

J'ai donc mis une garantie de format après le dépôt des informations dates sur la feuille en obligeant le format régional.

Depuis l'origine puisque nous avons du grossir nos systèmes d'échanges, je suis en windows 10 64 bits, office 2016 pro 64 bits, dont excel est dans cet office 2016 pro à l'origine est en 32 bits. une capacité mémoire de 128 Go, 8 processeurs dont 1 calculateur, vitesse d'horloge (4,2 htz) Malheureusement je ne peux pas grossir la mémoire d'échange à plus 9 ..Go (Celle des échanges gérés par windows. Pourquoi ?)

Anecdote de dernière minute : Dans les références disponibles en VBA, excel a ajouté automatiquement la référence OLE Automation sans que je manipule quoi que ce soit ???. Je le supprime, il revient. Qui se permet de modifier office que j'ai acheté ?? ET automation interprète échange automatique, allez savoir ce que ces gens trafiquent à votre insu ...( J'ai expédié à Kaspersky une demande à ce sujet et lui demande pourquoi il n'intervient pas dans ce type de modification des programmes par l'extérieur (Sachant que personne n'est habilité à modifier quoi que ce soit) et précise que toute sortie de mon ordinateur sur le web doit être interdit sauf par la voie que je spécifie, HDCP (Seul mon collaborateur peut y accéder et sans partage en groupe) ...)

Pour l'instant je passe mon temps à me défendre contre microsoft qui par les faits espionne mon ordinateur par la voie de ces offices et ce format excel qui ne veut plus quitter les dll. Ces échanges sont bien évidemment mis en archives puisque pour raisons déjà évoquées sur le piratage intellectuel, nous avons déjà un cas identifié chez les américains ... Oui, les américains n'ayant aucune notion intellectuelle sont obligés de pirater les ordinateurs européens pour se servir de vos projets et se les attribuer ... OLE automation s'entant mis tout seul, il me semble que c'est de cet acabit).
 

Dranreb

XLDnaute Barbatruc
Cette bibliothèque stdole existe depuis longtemps et elle est aussi chargée automatiquement chez moi dans un nouveau classeur.
Heureusement qu'il charge automatiquement les bibliothèques incontournables: Excel, Office, stdole et VBA.
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Je ne sais pas s'il est mieux de remonter ce vieux sujet en deux parties (2011 et 2019) ou au contraire d'en ouvrir un autre sur le même sujet. Du coup j'essaye ici... ;)

Quand j'ouvre mon classeur, j'ai le même message d'erreur :
Erreur de compilation :
Projet ou bibliothèque introuvable
Et Excel m'affiche la macro fautive et l'endroit où ça bloque : "Date"
En voici un extrait :
With Sheets("Lalala")
If .Range("D2") <> Date Then


Quand je vais dans le menu "Outils \ Références..." je vois bien un "MANQUANT", comme indiqué au message #2 de ce fil :
MANQUANT : Microsoft Word 16.0 Object Library


Je décoche ce "MANQUANT", j'enregistre le classeur, je ferme le classeur, je rouvre le classeur et tout semble fonctionner correctement.
Est-ce que ça veut dire que du coup Excel va chercher l'expression "Date" dans une bibliothèque plus ancienne ?

Petite précision : c'est un classeur qui fait de nombreux aller/retour entre chez moi et le boulot.
Chez moi je suis en Excel 2013 64 bits et au boulot je suis en Excel 2016 (32 bits, je crois).
 

Dranreb

XLDnaute Barbatruc
Bonjour.
J'ai plus l'impression qu'il abandonne purement et simplement la résolution des liaisons anticipées aux objets non connus au moment de la compilation, lorsqu'une des bibliothèques susceptible d'en contenir la définition est portée MANQUANT.
 

TooFatBoy

XLDnaute Barbatruc
Merci pour ta réponse. :)

Si j'ai bien compris ce que tu dis, et pour tenter de le vérifier, j'ai ajouté deux instructions au début de la macro dans le classeur dans lequel j'ai décoché le "MANQUANT" :
VB:
AAA = Date
Stop
    With Sheets("Lalala")
        If .Range("D2") <> Date Then
            .Range("D2").Value = Date

A l'arrêt de la macro, la variable AAA contient bien la date d'aujourd'hui.

Je pense donc qu'Excel va chercher l'expression Date dans les DLL de MS-Office 2013.

Cette modification du code de la macro apporte-t-elle réellement un enseignement ?
Si oui, lequel ?
 

Dranreb

XLDnaute Barbatruc
Ce que je voulais dire c'est qu'au moment ou il veut résoudre Date, il ne sait pas à priori que c'est VBA.Date. Il cherche donc partout. Et quand dans ce partout où il cherche il tombe sur un fichier qui n'existait pas il fait: "Vous vous foutez de ma gueule, je laisse tout tomber !"
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil et ses intervenants

•>Marcel32
Quand j'ai un souci de ce genre, parfois en ajoutant VBA devant la "commande", cela résout le problème.
(et pas forcément que pour Date)
Exemples
VB:
Sub Tests()
MsgBox VBA.Date
MsgBox VBA.Split(Application.VBE.Version, ".")(0)
MsgBox VBA.StrConv(VBA.Mid(Application.Caption, 3, 3), vbProperCase)
End Sub
EDITION: message posté sans avoir vu la réponse précédente (celle de Dranreb)
 

Discussions similaires

Statistiques des forums

Discussions
315 168
Messages
2 116 931
Membres
112 922
dernier inscrit
Lobo-ASTUTO