À partir de VBA Excel/Word Computer name et local IP address [Résolu]

go4t 7 Messages postés lundi 16 décembre 2002Date d'inscription 2 décembre 2004 Dernière intervention - 27 nov. 2004 à 19:31 - Dernière réponse : go4t 7 Messages postés lundi 16 décembre 2002Date d'inscription 2 décembre 2004 Dernière intervention
- 2 déc. 2004 à 20:39
Bonjour !
Je désire créer une macro VBA dans un document Word ou un fichier Excel qui récupérera:
1- le nom de l'ordinateur et
2- l'adresse IP local de l'ordinateur.

Le but est de permettre AUTOMATIQUEMENT l'ouverture du document Word ou du fichier Excel mais SEULEMENT en fonction d'une contrainte de "nom" et "d'adresse IP local" prédéterminés dans le programme VBA de Word ou Excel.

En passant, la commande VBA:
Shell ("command.com /k ipconfig")
n'est donc pas suffisante. Il doit y avoir un autre moyen pour ramener ces valeurs récupérées dans Word ou Excel pour fin de validation en vu d'une ouverture ou non de fichier.

Bienvenue aux fûtés. Merci bien !
Afficher la suite 

9 réponses

Meilleure réponse
go4t 7 Messages postés lundi 16 décembre 2002Date d'inscription 2 décembre 2004 Dernière intervention - 2 déc. 2004 à 20:39
3
Merci
ReBonjour PAT,
Il faut te dire que pour avoir eu de l'inspiration, quoique non "matériel_lement" suffisante, d'autant plus que je ne suis pas programmeur, ça m'a coûté quelques maux de tête et de la transpiration.
Toutefois, j'ai fini par "catcher" (comprendre), avoir de l'inspiration, et faisant ce que tu m'as dit, les résultats ont été les mêmes sur les deux (2) systèmes réseaux indépendants, équipés de:
Windows 2000 Professionnel et Office XP (licencié)

Dans Visual Basic Editor: Fenêtre Microsoft Visual Basic
"Le contrôle n'a pas été créé parce qu'il n'est pas correctement licencié."
Et ce en cliquant sur l'aide, la fenêtre de l'aide reste vide, également sur les deux (2) réseaux indépendants.

Bien que relativement néophyte en VBA, pour le plaisir, j'ai certes apprécié et admiré tes qualités d'expert en la matière et je t'en suis reconnaissant. La solution est là pour ceux qui ont un contrôle Microsoft Winsoc control 6.0 "correctement licencié".
Merci énormément PAT !!! Au revoir, Charles.

Merci go4t 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

pjcleder 184 Messages postés jeudi 4 février 2010Date d'inscription 16 septembre 2011 Dernière intervention - 28 nov. 2004 à 17:51
0
Merci
PAT

Il faut que tu utilises des API Windows.
Exemple pour récupérer le nom de l'ordinateur:
Dans un module de classe, dans l'éditeur VB, copie celà :

Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Ensuite tu peux récuperer le nom de l'ordinateur comme çà :

Dim StrMachine as string
Dim nLong as Long

strMachine = Space$(256)
n = GetComputerName(strMachine, Len(strMachine))

strMachine contient le nom de la Machine.
pjcleder 184 Messages postés jeudi 4 février 2010Date d'inscription 16 septembre 2011 Dernière intervention - 28 nov. 2004 à 17:52
0
Merci
PAT

Rectification :

La déclaration doit se faire dans un module standard.
Excuse-moi.
go4t 7 Messages postés lundi 16 décembre 2002Date d'inscription 2 décembre 2004 Dernière intervention - 29 nov. 2004 à 01:39
0
Merci
PAT
Merci bien pour le conseil. Cependant, étant donné que je ne suis pas un fûté de la pgm, ça ne marche pas. Mais voici ce que j'ai tenté de faire:
Module ordinaire, puis de classe sous Visual Basic Editor.
Puis, sous Microsoft Srcipt Editor, Objets événements clients: Window et On load. C'est encore négatif étant donné probablement mes connaissances limitées.

Enfin, j'ai mis le tout dans un Workbook Open car si les données, nom du poste et numéro IP de l'ordinateur ne correspondent pas, le fichier ne doit pas s'ouvrir.

Je tente de récupérer ces données, par exemple dans un fichier Excel. Voici donc la programmation que j'ai fait mais qui ne marche pas: (Merci bien encore une fois PAT) Go4t, Charles.

Private Sub Workbook_Open()

Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Dim StrMachine As String
Dim nLong As Long

StrMachine = Space$(256)
n = GetComputerName(StrMachine, Len(StrMachine))

End Function

'Pour écrire les valeurs si récupérées dans la variable plg _
ayant une référence de cellule à un nom défini comme Nom01 _
en fait, ici dans ce chiffrier, c'est à la cellule B5

Dim plg As Range

Set plg = ActiveWorkbook.ActiveSheet.Range("Nom01")

'Pour positionner le curseur au nom défini dans le _
chiffrier comme étant: Nom01
Application.Goto Reference:="Nom01"

'Pour tenter de récupérer la valeur de n dans la variable plg
plg = n

'Pour écrire la valeur de plg dans la cellule du nom de Nom01

With plg

'Changer la police de caractèes de la cellule courante

With .Font
.Name = "Arial"
.Size = 10
End With

End With

End Sub
pjcleder 184 Messages postés jeudi 4 février 2010Date d'inscription 16 septembre 2011 Dernière intervention - 29 nov. 2004 à 08:19
0
Merci
PAT

Tu mets UNIQUEMENT le declare dans le module standard.

La suite, tu la mets là où tu veux récupérer le nom de la machine.
go4t 7 Messages postés lundi 16 décembre 2002Date d'inscription 2 décembre 2004 Dernière intervention - 30 nov. 2004 à 22:06
0
Merci
ReBonjour PAT,
Merci bien PAT, c'est un pas dans la bonne direction. En effet, j'ai réussi à obtenir le nom de la machine tel que désiré en mettant le declare dans un module standard et la suite dans un autre, tel que tu me l'as conseillé. J'ai utilisé le programme que je t'avais soumis pour récupérer les valeurs dans la feuille de calcul.

Ayant essayé sur deux (2) ordi. appartenant à des réseaux différents et indépendants, c'est parfait pour le nom de la machine StrMachine. Toutefois, quant à la valeur du n, le chiffre 1 un, est renvoyé dans tous les cas d'essais d'ordinateur pour l'adresse IP. Que faire PAT ? Pour récupérer l'adresse IP spécifique à l'ordinateur.

Merci bien encore une fois PAT et bravo !
pjcleder 184 Messages postés jeudi 4 février 2010Date d'inscription 16 septembre 2011 Dernière intervention - 1 déc. 2004 à 07:57
0
Merci
PAT

Voilà une piste pour l'IP.

Il faut récupérer le controle VB Winsock. Une fois que ce controle figure dans ton projet, Tu peux récupérer l'IP local de la machine.

Essaye un truc : Dans un projet standard VB.

Tu fais Projet ---> Composants --->Microsoft winsock control 6.0

Tu colles ce controle à ta form. tu y mets un label.

tu fais label1.caption = winsock1.localIP.

Ca va te donner de l'inspiration !
pjcleder 184 Messages postés jeudi 4 février 2010Date d'inscription 16 septembre 2011 Dernière intervention - 1 déc. 2004 à 08:03
0
Merci
PAT

Dans Excel, il faut une UserForm, et sur la boite à outils un clic droit pour sélectionner "Contrôles supplémentaires" et faire ce que je t'ai dit.

Il faut que tu saches aussi que TOUT ce que tu peux faires à la main sous Excel , tu peux l'écrires en VBA.
go4t 7 Messages postés lundi 16 décembre 2002Date d'inscription 2 décembre 2004 Dernière intervention - 2 déc. 2004 à 20:39
0
Merci
ReBonjour PAT,
Il faut te dire que pour avoir eu de l'inspiration, quoique non "matériel_lement" suffisante, d'autant plus que je ne suis pas programmeur, ça m'a coûté quelques maux de tête et de la transpiration.
Toutefois, j'ai fini par "catcher" (comprendre), avoir de l'inspiration, et faisant ce que tu m'as dit, les résultats ont été les mêmes sur les deux (2) systèmes réseaux indépendants, équipés de:
Windows 2000 Professionnel et Office XP (licencié)

Dans Visual Basic Editor: Fenêtre Microsoft Visual Basic
"Le contrôle n'a pas été créé parce qu'il n'est pas correctement licencié."
Et ce en cliquant sur l'aide, la fenêtre de l'aide reste vide, également sur les deux (2) réseaux indépendants.

Bien que relativement néophyte en VBA, pour le plaisir, j'ai certes apprécié et admiré tes qualités d'expert en la matière et je t'en suis reconnaissant. La solution est là pour ceux qui ont un contrôle Microsoft Winsoc control 6.0 "correctement licencié".
Merci énormément PAT !!! Au revoir, Charles.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.