Comparer adresse MAC avant ouverture (lecture) du fichier Excel

tyui95

XLDnaute Nouveau
Bonjour à tous,

Je suis nouveau dans ce genre de forum, je ne connais pas trop la marche à suivre, j’irai donc droit au but.

Je cherche à créer une macro qui :
- Permettrait de comparer l’adresse MAC d’un d’ordinateur avec une adresse MAC prédéfinie
- Dans le cas où les adresses MAC ne matcheraient pas, une authentification par mot de passe serait nécessaire, sinon l’ouverture du fichier SERAIT IMPOSSIBLE.
- L’adresse MAC prédéfinie pourra être changé et être remplacé par celle du nouveau PC - modification par Mot de passe.

J’ai tenté de récupérer des exemples sur le forum, mais j’ai pu comprendre que si un PC possédait plusieurs cartes réseaux, alors il pouvait y avoir plusieurs adresses MAC. Laquelle choisir comme référence ?

Je suis novice en VBA
J’utilise un PC avec version Excel 2010 (mais souhaiterai une compatibilité de la macro)

J’espère avoir été clair dans la description de mon besoin.

Merci d’avance

Cordialement
 

Gelinotte

XLDnaute Accro
Re : Comparer adresse MAC avant ouverture (lecture) du fichier Excel

Bonsoir,

Projet intéressant, il permettrait de ne pas se faire suer avec les droits et permissions sur le réseau. Ce pourrait être une liste de mac adresse pour les machines qui ont le droit de l'ouvrir; tout en laissant la souplesse de l'ouvrir à partir d'une autre machine avec le mot de passe (quoiqu'assez facile à outre passer, sauf pour les newbie).

G
 

Gelinotte

XLDnaute Accro
Re : Comparer adresse MAC avant ouverture (lecture) du fichier Excel

Bonsoir,

Une première étape, trouver la mac de la machine en cours.

J'ai utilisé le fichier des cases à cocher, ne soit pas surpris.

La Function créé temporairement le fichier "C:\MacGeli1.txt", puis l'efface.
Ce fichier est l'équivalent de ipconfig /all. La Function cherche ensuite la mac dans ce fichier.

G
 

Pièces jointes

  • TrouveMac1.xlsm
    32.4 KB · Affichages: 66

tyui95

XLDnaute Nouveau
Re : Comparer adresse MAC avant ouverture (lecture) du fichier Excel

Merci à vous THX.

@ carcharodon-carcharias : J'ai bien suivis le lien que tu m'as transmis, effectivement je récupère une adresse MAC mais j'ai le même problème que stagiaire6 je me retrouve avec une adresse MAC avec uniquement des 0.

@ Gelinotte : Merci il recupère bien une adresse MAC et le code a l'air abordable (à mon niveau), j'aime bien le select case dans sub() ; serait ce ici que l'on comparerait les adresse MAC?

=> Mais comment fait-on pour forcer le systeme à choisir une adresse MAC précise? car la par exemple il me prend l'adresse de ma carte réseau sans fil (j'utilise un laptop), mais dans le cas ou le PC n'a pas de carte wifi, est-il possible de forcer le code a prendre l'adresse MAC de l'ethernet (je pars du postulat que c'est la carte réseau minimum sur un PC)?
 

tyui95

XLDnaute Nouveau
Re : Comparer adresse MAC avant ouverture (lecture) du fichier Excel

Ci joint le fichier de la macro,

j'ai un petit soucis tout de même, je n'arrive pas a fermer le fichier lorsque le compteur de mot de passe arrive a 3, j'ai essayé activeworbook.close mais ça ne marche pas et application.quit et trop extreme.

En second dans mon select case je crois qu'il ne reconnais pas la chaine.

Si on pouvait partir du fichier ci-joint pour continuer l'exercice, se serait sympas il s'agit de la macro que gelinotte m'a transmise

cdlt
 

Le Pierre

XLDnaute Junior
Re : Comparer adresse MAC avant ouverture (lecture) du fichier Excel

Bonjour

J'ai eu aussi une erreur (est-ce la même que toi ?) résolue en ajoutant doevents dans le code
Function MacAddress1()

Dim A As Long, Ligne As String
Dim Fichier As String, T As String

'Crée le fichier avec toutes les info...
Fichier = "c:\MacGeli1.txt"
commande = Environ("comspec") & _
" /c " & "ipconfig /all > " & Fichier & """"
ret = Shell(commande, 1)

DoEvents ' <---------------

A = FreeFile

J'ai eu aussi une autre erreur car je ne peux pas écrire directement dans c:\
J'ai donc indiqué c:\tmp\
à plus
 

tyui95

XLDnaute Nouveau
Re : Comparer adresse MAC avant ouverture (lecture) du fichier Excel

Je viens d'essayer le Doevents que tu proposais mais il subsiste toujours une erreur le déboggeur signale cette ligne du code

"Open Fichier For Input Access Read As #A"

Ca te parle?
 

Gelinotte

XLDnaute Accro
Re : Comparer adresse MAC avant ouverture (lecture) du fichier Excel

Bonsoir,

Voilà un bout de fichier.
L'erreur sur A provenait du type déclaré du A.
J'ai pris le code sur le Net sans trop me méfié et, n'étant pas programmeur, j'ai tourné autour du pot un bout avant de cracher dedans.

À un moment, ma pauvre cellule a fini par comprendre la cause de l'erreur.

Il y avait aussi Select Case qui ne reconnaissait pas la MacAddress. J'ai trouvé qu'il y a une espace devant la Mac détectée. Je l'ai enlevée avec la commande Replace.

Examine cela. On avance. :eek:

G
 

Gelinotte

XLDnaute Accro
Re : Comparer adresse MAC avant ouverture (lecture) du fichier Excel

Bonsoir,

Bon, il ne semble plus y avoir de bug avec le A.

À tester de ton côté.

G

Légères modifications
G
 

Pièces jointes

  • macro5.xlsm
    19 KB · Affichages: 59
Dernière édition:

Gelinotte

XLDnaute Accro
Re : Comparer adresse MAC avant ouverture (lecture) du fichier Excel

Merci à vous THX.

=> Mais comment fait-on pour forcer le systeme à choisir une adresse MAC précise? car la par exemple il me prend l'adresse de ma carte réseau sans fil (j'utilise un laptop), mais dans le cas ou le PC n'a pas de carte wifi, est-il possible de forcer le code a prendre l'adresse MAC de l'ethernet (je pars du postulat que c'est la carte réseau minimum sur un PC)?

Ce n'est pas un problème, car ipconfig /all donne toujours les infos de la carte filaire en premier. Aussi, on obtient quand même la mac de la carte filaire s'il n'y a pas de fil qui y est branché.

Dans le traitement avec Select Case, les lettres de la mac sont sensibles à la casse. Il faut utiliser les majuscules.


G
 
Dernière édition:

Le Pierre

XLDnaute Junior
Re : Comparer adresse MAC avant ouverture (lecture) du fichier Excel

Bonjour

Effectivement le "Doenvents" est inadapté.
Il faut mettre une temporisation car l'instruction Shell de création de "Fichier1" n'est pas achevée.
Ajoute en début de procédure :
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
et ensuite remplace "Doenvents" par :
Sleep (1000) ' pause de 1 seconde
Il faudra peut être augmenter cette pause selon ta machine ?
Par ailleurs il faut définir A en Integer :
Dim A As Integer 'String
à plus
 

Statistiques des forums

Discussions
312 428
Messages
2 088 324
Membres
103 813
dernier inscrit
Lolo280277