Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment récupérer une "Mac Adresse"

19 réponses
Avatar
C'est moi que Vla
Bonjour à tous,

Je cherche à récupérer la mac adresse de mon PC par le biais d'un code VBA.
Sur le net j'ai trouvé comment trouver un N° de série d'un disque dur mais
nulpart il est expliqué comment récupérer la mac adresse.

Est-ce par ce ce n'est pas possible ?

Merci pour vos suggestions !

@+
Paul

10 réponses

1 2
Avatar
michdenis
Bonjour toi, c'est moi,


'A mettre dans un module Standard

Public Const NCBASTAT As Long = &H33
Public Const NCBNAMSZ As Long = 16
Public Const NCBRESET As Long = &H32

Public Type NET_CONTROL_BLOCK
ncb_command As Byte
ncb_retcode As Byte
ncb_lsn As Byte
ncb_num As Byte
ncb_buffer As Long
ncb_length As Integer
ncb_callname As String * NCBNAMSZ
ncb_name As String * NCBNAMSZ
ncb_rto As Byte
ncb_sto As Byte
ncb_post As Long
ncb_lana_num As Byte
ncb_cmd_cplt As Byte
ncb_reserve(9) As Byte
ncb_event As Long
End Type

Public Type ADAPTER_STATUS
adapter_address(5) As Byte
rev_major As Byte
reserved0 As Byte
adapter_type As Byte
rev_minor As Byte
duration As Integer
frmr_recv As Integer
frmr_xmit As Integer
iframe_recv_err As Integer
xmit_aborts As Integer
xmit_success As Long
recv_success As Long
iframe_xmit_err As Integer
recv_buff_unavail As Integer
t1_timeouts As Integer
ti_timeouts As Integer
Reserved1 As Long
free_ncbs As Integer
max_cfg_ncbs As Integer
max_ncbs As Integer
xmit_buf_unavail As Integer
max_dgram_size As Integer
pending_sess As Integer
max_cfg_sess As Integer
max_sess As Integer
max_sess_pkt_size As Integer
name_count As Integer
End Type

Public Type NAME_BUFFER
name As String * NCBNAMSZ
name_num As Integer
name_flags As Integer
End Type

Public Type ASTAT
adapt As ADAPTER_STATUS
NameBuff(30) As NAME_BUFFER
End Type

Public Declare Function Netbios Lib "netapi32.dll" (pncb As NET_CONTROL_BLOCK) As Byte
'------------------------------------------
Public Function MACAddress() As String
Dim macAdr As String
Dim ncb As NET_CONTROL_BLOCK
Dim adapter As ASTAT

ncb.ncb_command = NCBRESET
Call Netbios(ncb)

ncb.ncb_command = NCBASTAT
ncb.ncb_lana_num = 0
ncb.ncb_callname = "* "
ncb.ncb_buffer = VarPtr(adapter)
ncb.ncb_length = Len(adapter)

Call Netbios(ncb) 'renvoie entre autre la mac adresse dans une structure
For i = 0 To 5
macAdr = macAdr & Format$(Hex(adapter.adapt.adapter_address(i)), "00") & " "
Next i

macAdr = Trim(macAdr) 'Enlève les espces à droite et à gauche de la chaîne
MACAddress = macAdr

End Function
'-------------------------
Private Sub Form_load()
MsgBox MACAddress
End Sub
'-------------------------


Salutations!





"C'est moi que Vla" a écrit dans le message de news:
Bonjour à tous,

Je cherche à récupérer la mac adresse de mon PC par le biais d'un code VBA.
Sur le net j'ai trouvé comment trouver un N° de série d'un disque dur mais
nulpart il est expliqué comment récupérer la mac adresse.

Est-ce par ce ce n'est pas possible ?

Merci pour vos suggestions !

@+
Paul
Avatar
Jacques93
Bonjour C'est moi que Vla,

Plusieurs exemple, à adapter, ici :

http://vbnet.mvps.org/index.html?code/network/macaddress.htm

Attention au cas où tu as plusieurs cartes réseaux,
Ethernet filaire, Wifi, etc... Chacune a son adresse MAC

Bonjour à tous,

Je cherche à récupérer la mac adresse de mon PC par le biais d'un code VBA.
Sur le net j'ai trouvé comment trouver un N° de série d'un disque dur mais
nulpart il est expliqué comment récupérer la mac adresse.

Est-ce par ce ce n'est pas possible ?

Merci pour vos suggestions !

@+
Paul





--
Cordialement,

Jacques.

Avatar
C'est moi que Vla
Bonjour Michdenis,

Je te remerci pour ta réponse, je m'apperçois à la vu de ton code que c'est
bien loint d'être simple pour récupérer la Mac Adresse.

J'ai donc lancé la procédure "Form_load" en laissant le code tel quel, sans
le retoucher (j'en serais bien incapable...je ne l'ai pas encore compris)
mais elle me donne comme adresse :
00 00 00 00 00 00
au lieu de :
00 40 95 46 c8 66

Faut-il que je lance qqchose d'autre que la procédure Form_load ?

@+
Paul

Je ne pense
"michdenis" a écrit dans le message de news:

Bonjour toi, c'est moi,


'A mettre dans un module Standard

Public Const NCBASTAT As Long = &H33
Public Const NCBNAMSZ As Long = 16
Public Const NCBRESET As Long = &H32

Public Type NET_CONTROL_BLOCK
ncb_command As Byte
ncb_retcode As Byte
ncb_lsn As Byte
ncb_num As Byte
ncb_buffer As Long
ncb_length As Integer
ncb_callname As String * NCBNAMSZ
ncb_name As String * NCBNAMSZ
ncb_rto As Byte
ncb_sto As Byte
ncb_post As Long
ncb_lana_num As Byte
ncb_cmd_cplt As Byte
ncb_reserve(9) As Byte
ncb_event As Long
End Type

Public Type ADAPTER_STATUS
adapter_address(5) As Byte
rev_major As Byte
reserved0 As Byte
adapter_type As Byte
rev_minor As Byte
duration As Integer
frmr_recv As Integer
frmr_xmit As Integer
iframe_recv_err As Integer
xmit_aborts As Integer
xmit_success As Long
recv_success As Long
iframe_xmit_err As Integer
recv_buff_unavail As Integer
t1_timeouts As Integer
ti_timeouts As Integer
Reserved1 As Long
free_ncbs As Integer
max_cfg_ncbs As Integer
max_ncbs As Integer
xmit_buf_unavail As Integer
max_dgram_size As Integer
pending_sess As Integer
max_cfg_sess As Integer
max_sess As Integer
max_sess_pkt_size As Integer
name_count As Integer
End Type

Public Type NAME_BUFFER
name As String * NCBNAMSZ
name_num As Integer
name_flags As Integer
End Type

Public Type ASTAT
adapt As ADAPTER_STATUS
NameBuff(30) As NAME_BUFFER
End Type

Public Declare Function Netbios Lib "netapi32.dll" (pncb As
NET_CONTROL_BLOCK) As Byte
'------------------------------------------
Public Function MACAddress() As String
Dim macAdr As String
Dim ncb As NET_CONTROL_BLOCK
Dim adapter As ASTAT

ncb.ncb_command = NCBRESET
Call Netbios(ncb)

ncb.ncb_command = NCBASTAT
ncb.ncb_lana_num = 0
ncb.ncb_callname = "* "
ncb.ncb_buffer = VarPtr(adapter)
ncb.ncb_length = Len(adapter)

Call Netbios(ncb) 'renvoie entre autre la mac adresse dans une
structure
For i = 0 To 5
macAdr = macAdr & Format$(Hex(adapter.adapt.adapter_address(i)),
"00") & " "
Next i

macAdr = Trim(macAdr) 'Enlève les espces à droite et à gauche de la
chaîne
MACAddress = macAdr

End Function
'-------------------------
Private Sub Form_load()
MsgBox MACAddress
End Sub
'-------------------------


Salutations!





"C'est moi que Vla" a écrit dans le message de
news:
Bonjour à tous,

Je cherche à récupérer la mac adresse de mon PC par le biais d'un code
VBA.
Sur le net j'ai trouvé comment trouver un N° de série d'un disque dur mais
nulpart il est expliqué comment récupérer la mac adresse.

Est-ce par ce ce n'est pas possible ?

Merci pour vos suggestions !

@+
Paul





Avatar
C'est moi que Vla
Bonjour Jacques,

Merci pour ton lien.

Vu ma connaissance en anglais, j'ai seulement réussi à comprendre que cette
page web parle effectivement de la façon de faire pour récupérer une Mac
Adresse. Mais c'est tout.
Je suis de la génération qui cose plus Patois que l'Anglais ;-) même si je
reconnais, bien volontié, que le Patois n'est pas guère employé sur le Net.

@micalement
Paul

"Jacques93" a écrit dans le message de news:

Bonjour C'est moi que Vla,

Plusieurs exemple, à adapter, ici :

http://vbnet.mvps.org/index.html?code/network/macaddress.htm

Attention au cas où tu as plusieurs cartes réseaux,
Ethernet filaire, Wifi, etc... Chacune a son adresse MAC

Bonjour à tous,

Je cherche à récupérer la mac adresse de mon PC par le biais d'un code
VBA. Sur le net j'ai trouvé comment trouver un N° de série d'un disque
dur mais nulpart il est expliqué comment récupérer la mac adresse.

Est-ce par ce ce n'est pas possible ?

Merci pour vos suggestions !

@+
Paul



--
Cordialement,

Jacques.



Avatar
Jacques93
Bonjour C'est moi que Vla,

Effectivement, le code de michdenis, ainsi que le code similaire sur le
lien que j'ai indiqué (utilisant NetBios) renvoie 00 00 00 00 00 00

Ci joint un classeur, utilisant SendARP

http://cjoint.com/?lgprgHFLFk

Est ce que c'est bon pour toi ?

Bonjour Jacques,

Merci pour ton lien.

Vu ma connaissance en anglais, j'ai seulement réussi à comprendre que cette
page web parle effectivement de la façon de faire pour récupérer une Mac
Adresse. Mais c'est tout.
Je suis de la génération qui cose plus Patois que l'Anglais ;-) même si je
reconnais, bien volontié, que le Patois n'est pas guère employé sur le Net.

@micalement
Paul



--
Cordialement,

Jacques.

Avatar
michdenis
Bonjour C'est moi que Vla,

J'ai mis tout le code proposé dans un module standard

Et dans le formulaire, j'ai inséré ceci. J'obtiens bien que ce que
la prétention de cette procédure est supposé me donner !

Ceci a été testé sous Windows Xp pro et Excel 2003.

'-----------------------
Private Sub UserForm_Initialize()
MsgBox MACAddress
End Sub
'-----------------------


Salutations!



"C'est moi que Vla" a écrit dans le message de news:
Bonjour Michdenis,

Je te remerci pour ta réponse, je m'apperçois à la vu de ton code que c'est
bien loint d'être simple pour récupérer la Mac Adresse.

J'ai donc lancé la procédure "Form_load" en laissant le code tel quel, sans
le retoucher (j'en serais bien incapable...je ne l'ai pas encore compris)
mais elle me donne comme adresse :
00 00 00 00 00 00
au lieu de :
00 40 95 46 c8 66

Faut-il que je lance qqchose d'autre que la procédure Form_load ?

@+
Paul

Je ne pense
"michdenis" a écrit dans le message de news:

Bonjour toi, c'est moi,


'A mettre dans un module Standard

Public Const NCBASTAT As Long = &H33
Public Const NCBNAMSZ As Long = 16
Public Const NCBRESET As Long = &H32

Public Type NET_CONTROL_BLOCK
ncb_command As Byte
ncb_retcode As Byte
ncb_lsn As Byte
ncb_num As Byte
ncb_buffer As Long
ncb_length As Integer
ncb_callname As String * NCBNAMSZ
ncb_name As String * NCBNAMSZ
ncb_rto As Byte
ncb_sto As Byte
ncb_post As Long
ncb_lana_num As Byte
ncb_cmd_cplt As Byte
ncb_reserve(9) As Byte
ncb_event As Long
End Type

Public Type ADAPTER_STATUS
adapter_address(5) As Byte
rev_major As Byte
reserved0 As Byte
adapter_type As Byte
rev_minor As Byte
duration As Integer
frmr_recv As Integer
frmr_xmit As Integer
iframe_recv_err As Integer
xmit_aborts As Integer
xmit_success As Long
recv_success As Long
iframe_xmit_err As Integer
recv_buff_unavail As Integer
t1_timeouts As Integer
ti_timeouts As Integer
Reserved1 As Long
free_ncbs As Integer
max_cfg_ncbs As Integer
max_ncbs As Integer
xmit_buf_unavail As Integer
max_dgram_size As Integer
pending_sess As Integer
max_cfg_sess As Integer
max_sess As Integer
max_sess_pkt_size As Integer
name_count As Integer
End Type

Public Type NAME_BUFFER
name As String * NCBNAMSZ
name_num As Integer
name_flags As Integer
End Type

Public Type ASTAT
adapt As ADAPTER_STATUS
NameBuff(30) As NAME_BUFFER
End Type

Public Declare Function Netbios Lib "netapi32.dll" (pncb As
NET_CONTROL_BLOCK) As Byte
'------------------------------------------
Public Function MACAddress() As String
Dim macAdr As String
Dim ncb As NET_CONTROL_BLOCK
Dim adapter As ASTAT

ncb.ncb_command = NCBRESET
Call Netbios(ncb)

ncb.ncb_command = NCBASTAT
ncb.ncb_lana_num = 0
ncb.ncb_callname = "* "
ncb.ncb_buffer = VarPtr(adapter)
ncb.ncb_length = Len(adapter)

Call Netbios(ncb) 'renvoie entre autre la mac adresse dans une
structure
For i = 0 To 5
macAdr = macAdr & Format$(Hex(adapter.adapt.adapter_address(i)),
"00") & " "
Next i

macAdr = Trim(macAdr) 'Enlève les espces à droite et à gauche de la
chaîne
MACAddress = macAdr

End Function
'-------------------------
Private Sub Form_load()
MsgBox MACAddress
End Sub
'-------------------------


Salutations!





"C'est moi que Vla" a écrit dans le message de
news:
Bonjour à tous,

Je cherche à récupérer la mac adresse de mon PC par le biais d'un code
VBA.
Sur le net j'ai trouvé comment trouver un N° de série d'un disque dur mais
nulpart il est expliqué comment récupérer la mac adresse.

Est-ce par ce ce n'est pas possible ?

Merci pour vos suggestions !

@+
Paul





Avatar
Jacques93
Bonjour C'est moi que Vla,

Une autre méthode utilisant l'API GetIfTable :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/getiftable.asp

qui permet d'énumérer toutes les interfaces réseaux :

http://cjoint.com/?lgqpru7hOc

Ne fonctionne pas sous Win95

Bonjour Jacques,

Merci pour ton lien.

Vu ma connaissance en anglais, j'ai seulement réussi à comprendre que cette
page web parle effectivement de la façon de faire pour récupérer une Mac
Adresse. Mais c'est tout.
Je suis de la génération qui cose plus Patois que l'Anglais ;-) même si je
reconnais, bien volontié, que le Patois n'est pas guère employé sur le Net.

@micalement
Paul

"Jacques93" a écrit dans le message de news:


Bonjour C'est moi que Vla,

Plusieurs exemple, à adapter, ici :

http://vbnet.mvps.org/index.html?code/network/macaddress.htm

Attention au cas où tu as plusieurs cartes réseaux,
Ethernet filaire, Wifi, etc... Chacune a son adresse MAC


Bonjour à tous,

Je cherche à récupérer la mac adresse de mon PC par le biais d'un code
VBA. Sur le net j'ai trouvé comment trouver un N° de série d'un disque
dur mais nulpart il est expliqué comment récupérer la mac adresse.

Est-ce par ce ce n'est pas possible ?

Merci pour vos suggestions !

@+
Paul



--
Cordialement,

Jacques.







--
Cordialement,

Jacques.



Avatar
Ricky
Bonjour *Jacques93*

Etonnant
Chez moi en utilisant simplement la fonction =MacAddress() dans une cellule, ça fonctionne.

| Bonjour C'est moi que Vla,
|
| Effectivement, le code de michdenis, ainsi que le code similaire sur
| le
| lien que j'ai indiqué (utilisant NetBios) renvoie 00 00 00 00 00 00
|
| Ci joint un classeur, utilisant SendARP
|
| http://cjoint.com/?lgprgHFLFk
|
| Est ce que c'est bon pour toi ?
|
| | Bonjour Jacques,
| |
| | Merci pour ton lien.
| |
| | Vu ma connaissance en anglais, j'ai seulement réussi à comprendre
| | que cette page web parle effectivement de la façon de faire pour
| | récupérer une Mac Adresse. Mais c'est tout.
| | Je suis de la génération qui cose plus Patois que l'Anglais ;-)
| | même si je reconnais, bien volontié, que le Patois n'est pas guère
| | employé sur le Net.
| |
| | @micalement
| | Paul

--
Ricky [MVP] Visitez les faq....
http://www.faqoe.com http://faqword.free.fr
http://dj.joss.free.fr/faq.htm http://www.excelabo.net
Avatar
michdenis
Il y a une façon plus facile d'obtenir cette information

Dans une fenêtre "DOS", tu écris ceci à l'invite :
c:>Ipconfig /All > MacAdresse.txt

Ceci génère un fichier texte avec toute l'information dont tu as besoin et beaucoup plus.

Il est alors possible d'extraire l'information désirée de ce fichier texte et de supprimer ce dernier.


Salutations!



"michdenis" a écrit dans le message de news: %
Bonjour C'est moi que Vla,

J'ai mis tout le code proposé dans un module standard

Et dans le formulaire, j'ai inséré ceci. J'obtiens bien que ce que
la prétention de cette procédure est supposé me donner !

Ceci a été testé sous Windows Xp pro et Excel 2003.

'-----------------------
Private Sub UserForm_Initialize()
MsgBox MACAddress
End Sub
'-----------------------


Salutations!



"C'est moi que Vla" a écrit dans le message de news:
Bonjour Michdenis,

Je te remerci pour ta réponse, je m'apperçois à la vu de ton code que c'est
bien loint d'être simple pour récupérer la Mac Adresse.

J'ai donc lancé la procédure "Form_load" en laissant le code tel quel, sans
le retoucher (j'en serais bien incapable...je ne l'ai pas encore compris)
mais elle me donne comme adresse :
00 00 00 00 00 00
au lieu de :
00 40 95 46 c8 66

Faut-il que je lance qqchose d'autre que la procédure Form_load ?

@+
Paul

Je ne pense
"michdenis" a écrit dans le message de news:

Bonjour toi, c'est moi,


'A mettre dans un module Standard

Public Const NCBASTAT As Long = &H33
Public Const NCBNAMSZ As Long = 16
Public Const NCBRESET As Long = &H32

Public Type NET_CONTROL_BLOCK
ncb_command As Byte
ncb_retcode As Byte
ncb_lsn As Byte
ncb_num As Byte
ncb_buffer As Long
ncb_length As Integer
ncb_callname As String * NCBNAMSZ
ncb_name As String * NCBNAMSZ
ncb_rto As Byte
ncb_sto As Byte
ncb_post As Long
ncb_lana_num As Byte
ncb_cmd_cplt As Byte
ncb_reserve(9) As Byte
ncb_event As Long
End Type

Public Type ADAPTER_STATUS
adapter_address(5) As Byte
rev_major As Byte
reserved0 As Byte
adapter_type As Byte
rev_minor As Byte
duration As Integer
frmr_recv As Integer
frmr_xmit As Integer
iframe_recv_err As Integer
xmit_aborts As Integer
xmit_success As Long
recv_success As Long
iframe_xmit_err As Integer
recv_buff_unavail As Integer
t1_timeouts As Integer
ti_timeouts As Integer
Reserved1 As Long
free_ncbs As Integer
max_cfg_ncbs As Integer
max_ncbs As Integer
xmit_buf_unavail As Integer
max_dgram_size As Integer
pending_sess As Integer
max_cfg_sess As Integer
max_sess As Integer
max_sess_pkt_size As Integer
name_count As Integer
End Type

Public Type NAME_BUFFER
name As String * NCBNAMSZ
name_num As Integer
name_flags As Integer
End Type

Public Type ASTAT
adapt As ADAPTER_STATUS
NameBuff(30) As NAME_BUFFER
End Type

Public Declare Function Netbios Lib "netapi32.dll" (pncb As
NET_CONTROL_BLOCK) As Byte
'------------------------------------------
Public Function MACAddress() As String
Dim macAdr As String
Dim ncb As NET_CONTROL_BLOCK
Dim adapter As ASTAT

ncb.ncb_command = NCBRESET
Call Netbios(ncb)

ncb.ncb_command = NCBASTAT
ncb.ncb_lana_num = 0
ncb.ncb_callname = "* "
ncb.ncb_buffer = VarPtr(adapter)
ncb.ncb_length = Len(adapter)

Call Netbios(ncb) 'renvoie entre autre la mac adresse dans une
structure
For i = 0 To 5
macAdr = macAdr & Format$(Hex(adapter.adapt.adapter_address(i)),
"00") & " "
Next i

macAdr = Trim(macAdr) 'Enlève les espces à droite et à gauche de la
chaîne
MACAddress = macAdr

End Function
'-------------------------
Private Sub Form_load()
MsgBox MACAddress
End Sub
'-------------------------


Salutations!





"C'est moi que Vla" a écrit dans le message de
news:
Bonjour à tous,

Je cherche à récupérer la mac adresse de mon PC par le biais d'un code
VBA.
Sur le net j'ai trouvé comment trouver un N° de série d'un disque dur mais
nulpart il est expliqué comment récupérer la mac adresse.

Est-ce par ce ce n'est pas possible ?

Merci pour vos suggestions !

@+
Paul





Avatar
Jacques93
Bonjour Ricky,

Etonnant, oui et non. En fait, tous les appels à la fonctioon NetBios me
renvoie une Erreur NRC_BRIDGE (35) ;
NRC_BRIDGE 0x23 /* ncb_lana_num field invalid

j'ai essayé de faire varier :

NCB.ncb_lana_num

mais sans succès pour l'instant. C'est certainement un problème de
config réseau, d'ailleurs il est indiqué :

'For machines with multiple network adapters you need to
'enumerate the LANA numbers and perform the NCBASTAT
'command on each. Even when you have a single network
'adapter, it is a good idea to enumerate valid LANA numbers
'first and perform the NCBASTAT on one of the valid LANA
'numbers. It is considered bad programming to hardcode the
'LANA number to 0 (see the comments section below).



Bonjour *Jacques93*

Etonnant
Chez moi en utilisant simplement la fonction =MacAddress() dans une cellule, ça fonctionne.

| Bonjour C'est moi que Vla,
|
| Effectivement, le code de michdenis, ainsi que le code similaire sur
| le
| lien que j'ai indiqué (utilisant NetBios) renvoie 00 00 00 00 00 00
|
| Ci joint un classeur, utilisant SendARP
|
| http://cjoint.com/?lgprgHFLFk
|
| Est ce que c'est bon pour toi ?
|
| | Bonjour Jacques,
| |
| | Merci pour ton lien.
| |
| | Vu ma connaissance en anglais, j'ai seulement réussi à comprendre
| | que cette page web parle effectivement de la façon de faire pour
| | récupérer une Mac Adresse. Mais c'est tout.
| | Je suis de la génération qui cose plus Patois que l'Anglais ;-)
| | même si je reconnais, bien volontié, que le Patois n'est pas guère
| | employé sur le Net.
| |
| | @micalement
| | Paul




--
Cordialement,

Jacques.

1 2