Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/11/2006, 14h06   #1
Invité de passage
 
Inscription : février 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 33
Points : 4
Points : 4
Par défaut Vérifier l'activation d'une référence

Bonjour,

Je voudrais savoir si il existerait un moyen pour vérifier, à partir du code, si une référence est activée et, si possible, de l'activer si ce n'est pas le cas.

Merci d'avance
Pikasacha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2006, 16h09   #2
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 199
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 199
Points : 14 401
Points : 14 401
Envoyer un message via Skype™ à Pierre Fauconnier
Bonjour

Le code va différer selon que tu travailles avec VBA pour Access, Excel, Word, PowerPoint.

D'une façon générale, je conseille de
1. tester si la référence est active
2. Si elle ne l'est pas, l'activer.

Cela peut se faire au moyen d'une fonction et d'une procédure.
La fonction de test demande le nom de la référence. La procédure demande le nom du fichier, éventuellement avec son chemin complet (à ma connaissance,facultatif lorsque ce chemin se trouve dans l'arborescence de c:\windows)

ACCESS
1. Fonction de test de référence active
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Function ReferenceActive(Nom As String) As Boolean
    Dim i As Integer
    Dim NbreRef As Integer
 
    NbreRef = Application.VBE.ActiveVBProject.References.Count
 
    For i = 1 To NbreRef
        If Application.VBE.ActiveVBProject.References(i).Name = Nom Then
            ReferenceActive = True
            Exit Function
        End If
    Next i
End Function
2. Procédure d'activation
Code :
1
2
3
Sub ActiverReference(NomFichier As String)
    Application.VBE.ActiveVBProject.References.AddFromFile NomFichier
End Sub
EXCEL, WORD, POWERPOINT
Pour Excel, Word ou PowerPoint, c'est la même démarche, mais les références font partie de l'objet actif, soit:
Pour Excel, ThisWorkbook
Pour Word, ThisDocument
Pour PowerPoint, ActivePresentation
Voici le code pour Excel. Pour les autres applications, il faudra remplacer ThisWorkbook par l'objet actif
1. Fonction de test
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Function ReferenceActive(Nom As String) As Boolean
    Dim i As Integer
    Dim NbreRef As Integer
 
    NbreRef = ThisWorkbook.VBProject.References.Count
 
    For i = 1 To NbreRef
        If ThisWorkbook.VBProject.References(i).Name = Nom Then
            ReferenceActive = True
            Exit Function
        End If
    Next i
End Function
2.Procédure d'activation
Code :
1
2
3
Sub ActiverReference(NomComplet As String)
    ThisWorkbook.VBProject.References.AddFromFile NomComplet
End Sub
Utilisation de la fonction et de la procédure
Attention! La procédure d'activation renvoie une erreur si la référence est déjà active. Dès lors, je propose le code suivant, qui fonctionne dans tous les cas, y compris Access. Par exemple, pour tester et activer le scripting Runtime
Code :
    If Not ReferenceActive("scripting") Then ActiverReference "scrrun.dll"
Ok?
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/11/2006, 13h19   #3
Invité de passage
 
Inscription : février 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 33
Points : 4
Points : 4
Merci beaucoup, tout marche
Pikasacha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 15h23   #4
Invité de passage
 
Inscription : juin 2009
Messages : 1
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 1
Points : 0
Points : 0
Par défaut controle version

J'ai amélioré les conditions avec la version utilisé car l'emplacement des référence change selon les version (voir table http://officesystemaccess.seneque.ne...constantes.htm)

De plus ma version la condition if Not ne résout pas le problème j'ai 'solutionné' par une mise en variable .... je suis pas développeur ...


Si cela peut aider quelqu'un sait on jamais

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
Sub Workbook_Open()
 
 'TESTE SI LA REFERENCE WORD EST PRESENTE.
    q = ReferenceActive("Word")
 
    'SI BONNE VERSION
    If Verssion = 10 Or 11 Or 12 Then
 
 
            'SI PAS PRESENTE
            If q = False Then
                ThisWorkbook.VBProject.references.AddFromFile "MSWORD.OLB" 'ON LA MET
                MsgBox "MIS"
                Else
                'Sinon on l'enleve et la remet
                ThisWorkbook.VBProject.references.remove ThisWorkbook.VBProject.references("Word")
                ThisWorkbook.VBProject.references.AddFromFile "MSWORD.OLB" 'ON LA MET
                MsgBox "REMIS"
            End If
 
 
    Else
    'SINON on dit pas possible et quitte
     MsgBox "Attention Votre version d'Excel ne supportera pas l'export Word. Cette fonction marche à partir de la version 2002."
 
     End If
 
End Sub
adripagos est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h13.


 
 
 
 
Partenaires

Hébergement Web