Vba:détecter à l'avance, les erreurs type "erreur de compilation:projet introuvable"?

Tonino7

XLDnaute Occasionnel
Bonjour à tous,

après avoir créer un fichier excel, 2 problèmes éventuels peuvent se produire sur d'autres postes utilisateurs que le mien.

Premier problème : "Erreur de compilation : Projet ou bibliothèque introuvable"

solution pour l'utilisateur --> ouvrir VBE puis aller dans Outils/références et décocher les références manquantes


Maintenant, quel macro pourrais-je créer à l'ouverture du fichier, pour qu'il détecte ça à l'avance, et qu'une MessageBox lui indique la procédure à suivre. Enfin, après réflexion, il me semble que le probleme se déclare tout de suite à l'ouverture, donc il faudrait créer un code du genre "ON ERROR.... MSGBOX...." Mais j'aimerais savoir le code adéquate de l'erreur en question..


Et je voudrais appliquer le meme principe pour l'autre problème éventuel, à savoir : "L'accès par programme au projet visual basic n'est pas fiable"
la procédure pour l'utilisateur --> Outils/macro/sécurité et cocher "faire confiance au projet visual basic"

donc pareil, comment faire pour que l'erreur ne se déclare pas en anticipant le probleme via une msgBox...?


Merci pour tout
 

Tonino7

XLDnaute Occasionnel
Re : Vba:détecter à l'avance, les erreurs type "erreur de compilation:projet introuvable"?

up (désolé, j'ai pas pu m'en empecher. C'est juste pour inciter les gens à répondre. Voir "1 réponse" peut créer un effet boule de neige lol)
 

tirex28

XLDnaute Occasionnel
Re : Vba:détecter à l'avance, les erreurs type "erreur de compilation:projet introuvable"?

Bonsoir,

A mettre dans ThisWorkbook et à adapter à tes besoins spécifiques:

Code:
Private Sub Workbook_Open()
    On Error GoTo errh
    Dim NomProjet As String, ref As Object, NomFichier

    'Test l'accessibilite du projet
    NomProjet = ThisWorkbook.VBProject.Name

    'Pas d'erreur, on verifie les références
    With ThisWorkbook.VBProject
        For Each ref In .References
            If ref.IsBroken And ref.Type = 1 Then '1=vbext_rk_Project
                MsgBox "Projet manquant: " & vbCrLf & vbCrLf & ref.Name

                'Suppression de la référence manquante
                .References.Remove ref

                'Selection d'un fichier
                NomFichier = Application.GetOpenFilename( _
                    FileFilter:="Microsoft Excel (*.xls), *.xls", _
                    Title:="Sélectionnez le fichier à référencer")

                'Ajout de la reference
                If Not VarType(NomFichier) = vbBoolean Then
                    Set ref = .References.AddFromFile(NomFichier)
                Else
                    MsgBox "Installation annulée."
                End If
            End If
        Next
    End With
Exit Sub
errh:
    If Err.Number = 1004 Then
        MsgBox "Outils>Macros>Securite>Editeurs Approuves " & vbCrLf & _
            "Cochez la case 'Faire confiance au projet Visual Basic'"
    Else
        MsgBox Err.Number & Err.Description
    End If
End Sub

Cordialement,

Tirex28/
 

Tonino7

XLDnaute Occasionnel
Re : Vba:détecter à l'avance, les erreurs type "erreur de compilation:projet introuva

Merci Tirex,

mais le code pour les références ne marche toujours pas.

à l'ouverture du fichier, j'ai cette MSGBOX qui doit s'afficher : MsgBox "Welcome!" & Chr(10) & Chr(10) & "L'enregistrement des données s'effectuera automatiquement à la fermeture du fichier." & Chr(10) & Chr(10) & "Enjoy !", vbOKOnly, "Bienvenue sur la saison 2006/2007 du championnat de France de Football"

et en fait, sur un pc, ça met le message de biblio introuvable sur cette msgbox. Visiblement ça bugg sur le Chr(10). Et dans les références manquantes y'a celle-ci : Microsoft windows common control-2 6.0 (SP4)

et donc, avec ton code, ça ne change rien du tout. Mais peut-etre que les références manquantes se déclarent lorsqu'elles sont confronté à des codes qu'elles ne connaissent pas. Et dans le cas échéant, ton code s'applique lorsque le probleme n'a pas encore été déclaré.?

Sinon pour le fait de faire confiance au projet vbe.. ben ca m'fait pas l'erreur au démarrage là.. alors que c'est pas coché... Rhalala j'y comprends plus rien à ces conneries.
 
C

Compte Supprimé 979

Guest
Re : Vba:détecter à l'avance, les erreurs type "erreur de compilation:projet introuvable"?

Salut tout le monde,
Salut Tonino7,

Le fait d'avoir une bibliothèque manquante, engendre systématiquement des erreurs, même dans des fonctions ausi simple que CHR()

Il faut décocher la/les référence(s) manquante(s), et ton code devrait s'exécuter sans problème !

Voilà ;)
 

tirex28

XLDnaute Occasionnel
Re : Vba:détecter à l'avance, les erreurs type "erreur de compilation:projet introuvable"?

Bonjour,

>Sinon pour le fait de faire confiance au projet vbe.. ben ca m'fait pas l'erreur au démarrage là.. alors que c'est pas coché... Rhalala j'y comprends plus rien à ces conneries.

Ca fonctionne chez moi(xl2003), tu as bien un gestionnaire d'erreur type on error goto etiquette et non pas on error resume next ?

Essaye de remplacer tes chr(10) par vbCrLf et dis moi ce qui se passe.

Pour ta référence manquante, ce que je t'ai donné ne gère que les références à un autre classeur. Si tu veux prévoir des références à des bibliotheques il va falloir adapter.

Coche faire confiance ...
Coche toutes les références dont tu as besoin et exécute ceci:
Code:
Sub ListRef()
    Dim i As Long
    With ThisWorkbook.VBProject.References
        For i = 1 To .Count
            Debug.Print .Item(i).Name & " : " & .Item(i).FullPath
            Debug.Print .Item(i).GUID
        Next
    End With
End Sub
Ensuite publie ta procédure Workbook_Open et les infos récoltés, j'essaierai de reproduire ton probleme. Quelle version d'excel utilise tu?

Dans l'attente,

Tirex28/
 

Tonino7

XLDnaute Occasionnel
Re : Vba:détecter à l'avance, les erreurs type "erreur de compilation:projet introuvable"?

salut à tous,

en fait, j'ai du mal m'exprimer,notamment pour Bruno. J'ai aucun souci chez moi, mais quand j'ouvre le fichier sur un autre ordi. Et pour régler ce probleme , j'ai aucun souci également, je sais qu'il faut décocher les références manquantes. Mais je cherche à repérer ce probleme à l'avance pour un utilisateur de mon fichier qui l'ouvrirait sur son PC et qui aurait ce probleme. Afin qu'il ne soit pas perdu, je veux l'orienter via des MSGBOX pour qu'il résolve tout seul le probleme.

Pour tout à l'heure, j'étais au travail, là où le fichier connait des problemes, donc maintenant c'est foutu pour faire des tests car chez moi ça marche nickel lol.. tant pis

merci quand meme
 

tirex28

XLDnaute Occasionnel
Re : Vba:détecter à l'avance, les erreurs type "erreur de compilation:projet introuvable"?

>Pour tout à l'heure, j'étais au travail, là où le fichier connait des problemes, donc maintenant c'est foutu pour faire des tests car chez moi ça marche nickel lol.. tant pis

Les références manquantes peuvent etre causées par deux systemes d'exploitation différents qui stockent les bibliothèques dans différents répertoires. Si tel est le cas on doit pouvoir s'en sortir avec AddFromGuid.

Par contre si une bibliothèque n'est pas installé sur un poste il faudra l'installer à la mano.

Cordialement,
Tirex28/
 

Discussions similaires

Statistiques des forums

Discussions
312 202
Messages
2 086 177
Membres
103 152
dernier inscrit
Karibu