[VBA] action sur les adresses IP

Bonjour à tous, je me pose une question concernant la création de fonction (via une macro) en lien avec des adresses IPs.

Je m'explique, j'ai des sous réseaux IP (environ 400), découpés avec des masque différents.

et j'ai environ 9000 enregistrements ARP au niveau de mes équipements de routage.

Je souhaiterais réaliser une macro sous excel qui me permet de classer les adresses IP utilisées dans chaque sous réseaux. Je mets en PJ un fichier test qui ne contient aucune donnée réelle afin de vous montrer le résultat souhaité.

J'aimerais obtenir l'avis de personnes qui ont la connaissance VBA (ce que je n'ai pas) sur la faisabilité de cela.

Je suis conscient qu'il faut d'excellentes bases en VBA et en plus maitriser le tri des IPs (et donc avoir quelques notions)

https://cric.grenoble.cnrs.fr/Administrateurs/Outils/CalculMasque/ ici une aide pour le calcul des IPs

Pensez vous cela réalisable?

Le fichier joint comporte 4 feuilles:

  • la liste des adresses utilisée
  • la liste des subnets qui sont affectés (à un vlan par exemple)
  • tableau de résultat attendu
  • tableau dans lequel la macro peut aller classer ses résultats

peut être qu'une solution plus simple existe: je dispose des sous réseaux que j'ai affecté et des adresses connus dans la tableau ARP et affectés à un hôte (serveur, routeur, switchs etc)

Merci.

Bruno

Bonjour,

une proposition, même si cela ne correspond pas tout à fait au résultat souhaité (j'ai fait l'hypothèse que les différences étaient des fautes de frappe de ta part, car je n'ai pas trouvé la logique pour obtenir exactement ton tableau souhaité). Lancer la macro aargh par alt-F8

de plus je pense qu'avec 5 bits pour la définition des adresses par sous-réseau, la dernière adresse pourrait être 31 et non 30. (si mes souvenirs sont bons !)

Bonjour merci à toi

la dernière adresse pour un réseau en /27 est bien 31 mais il s'agit de l'adresse de broadcast.

Lorsque j'emploie le terme dernière IP, je sous entends qu'il s'agit de la dernière IP attribuable à un serveur par exemple.

Défaut de langage de ma part.

J'ai testé la macro, j'ai une erreur à ce niveau

image image

Avant de toucher à quoique ce soit de mon côté, as tu une idée?

Et par la même occasion je vais tenter d'être plus clair sur mon approche.

La table ARP me donne "toutes" les adresses utilisées au sein de mon réseau. Ces adresses ne sont pas forcément classées et ne me permettent pas de savoir quelles adresses sont encore disponibles au sein d'un réseau.

J'imagine donc dans un premier temps une feuille dans laquelle apparait en vrac toutes ces adresses (ARP).

Sur une seconde feuille, le liste l'ensemble des subnets que j'ai créé.

Ces subnets peuvent avoir un masque allant de /16 à /30. Dans mon exemple, je n'ai mis que des /27 pour simplifier.

Le but est au final d'analyser la valeur d'une adresse ARP et de définir dans quelle sous réseau elle se trouve.

exemple:

pour le réseau 192.168.1.0/27, la première adresse disponible est la .1, la dernière (affectable) est la .30 et l'adresse de broadcast est la .31, la macro analyse les valeurs de ARP, si elle trouve une adresse dans la plage 192.168.1.1 (comprise) et 192.168.1.30 (comprise), elle le renseigne dans les colonnes suivantes.

Mais si mon réseau est 192.168.1.128/25: la première est .129 la dernière 254 et le broadcast 255.

La complexité réside dans le fait de pouvoir créer une macro qui analyse une adresse réseau (quel que soit le masque) et qui est capable de classer celle-ci dans la colonne "IP utilisée" du bon sous réseau.

bonsoir,

pour répondre à cette question :

Avant de toucher à quoique ce soit de mon côté, as tu une idée?

remplace l'instruction en erreur par celle-ci

 .ListObjects.Add(xlSrcRange, .UsedRange, , xlYes).Name = "Table IP"

Pour le reste, je jetterai un oeil à l'occasion.

J'ai apporté la modification demandée, désormais j'ai l'erreur sur la ligne suivante

ActiveSheet.ListObjects("Table IP").TableStyle = "TableStyleMedium6"

(l'indice n'appartient pas à la sélection)

Je te remercie

Bonne journée à toi

bonjour,

une nouvelle proposition qui tient compte de tes demandes additionnelles et corrige le bug que tu as mentionné.

Merci. Cela est il du à une différence des versions excel?

Cette partie fonctionne désormais.

Reste à savoir si je peux adapter/m'aider pour des sous réseaux dont le masque serait différent.

Encore merci pour ta participation

re,

Merci. Cela est il du à une différence des versions excel?

non, un manque de test de ma part, (il y avait un bug lorsque la feuille "résultat", n'était pas sélectionnée au moment de l'exécution de la macro).

Reste à savoir si je peux adapter/m'aider pour des sous réseaux dont le masque serait différent.

je t'ai mis une version adaptée, voir modifications de ma réponse précédente. (j'ai fait l'hypothèse que la feuille sous réseaux contient bien la liste de tous les sous réseaux).

Mea culpa nos messages se sont croisés et je ne l'avais pas vu.

J'ai inséré le module dans mon fichier "réel".

J'ai le msgbox que tu as créé "sous réseaux 10.10.8 présent 2 fois dans la table des sous-réseaux".

J'imagine que cela est du au fait que dans les sous réseaux réels que j'ai il y a :

10.10.8.0/28
10.10.8.16/28
10.10.8.32/28
10.10.8.48/28
10.10.8.64/28
10.10.8.80/28
10.10.8.96/28
10.10.8.112/28
10.10.8.128/28
10.10.8.144/28
10.10.8.160/28
10.10.8.176/28
10.10.8.192/28
10.10.8.208/28
10.10.8.224/28
10.10.8.240/28

Cela sera valable aussi pour d'autres subnets qui ont été découpés. Pour autant l'adresse 10.10.8.1 si elle est utilisée dans ma table ARP appartient au sous réseau 10.10.8.0/28 quand l'adresse 10.10.8.241 elle appartient au 10.10.8.240/28. Suite à ce message, qui d'un point de vue de la macro est vue comme une incohérence, la macro ne traite donc pas les données.

re,

J'ai le msgbox que tu as créé "sous réseaux 10.10.8 présent 2 fois dans la table des sous-réseaux".

oups, je crois que je devrai revoir ma copie.

il n'y a que celui qui ne fait rien qui ne se trompe jamais

re,

voici, à tester donc.

Arfff, maintenant j'obtiens le message "sous-réseau A.B.C.D non répertorié"

je suppose qu'il s'agit des réseaux que j'ai créé mais pour lesquels je n'ai pas encore d'IP affecté.

re,

"sous-réseau A.B.C.D non répertorié"

la macro n'a pas trouvé le réseau correspondant à une adresse IP de la table ARP. Mais la macro affiche une mauvaise information.

une nouvelle correction

Bonjour Camarade, après un week end de repos je teste cette nouvelle macro.

Malheureusement le résultat n'est pas encore celui attendu.

Je te montre en MP un extrait

bonjour,

une nouvelle version, pfff...

Super! Cela à l'air de fonctionner comme il se doit.

Allez comme je veux être pointilleux, peut on envisager de ne sortir les résultats uniquement des réseaux qui ont une adresse qui est présente dans la table ARP?

Si un réseau ne dispose d'aucune entrée dans le tableau ARP, je ne créée pas la ligne.

et autre point, peut-on supprimer le pop up qui annonce qu'un réseau n'est pas répertorié car dans mon cas j'ai du valider plusieurs centaines de fois le pop up

re,

une nouvelle version.

Merci beaucoup pour ce travail à mon profit. Cela fonctionne à merveille. Je vais le mettre en pratique et si toutefois j'avais des axes d'amélioration en tête je me permettrai de te solliciter.

Par ailleurs, afin de comprendre certaines parties du code, je t'enverrai en MP quelques questions pour ma compréhension de ce que tu as mis en place.

Encore un grand merci

Bruno

Rechercher des sujets similaires à "vba action adresses"