Trier les adresses IP dans Access

S’applique à
Access pour Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Cette rubrique décrit la procédure de tri des adresses IP (Internet Protocol) stockées dans une base de données Access.

Introduction

Si vous travaillez avec des adresses IP, vous savez probablement déjà que ce n’est pas aussi simple que de travailler avec du texte ou des chiffres. En effet, une adresse IP est en réalité un ensemble de quatre valeurs numériques séparées par un point (.), où chaque valeur est un nombre compris entre 0 et 255. Le tableau suivant présente les données avant l’application d’un ordre de tri.

ID ordinateur Employé Emplacement AdresseIP
1 ... ... 123.4.245.23
2 ... ... 104.244.253.29
3 ... ... 1.198.3.93
4 ... ... 32.183.93.40
5 ... ... 104.30.244.2
6 ... ... 104.244.4.1

Le tri des adresses IP dans Access est un défi, car Access ne fournit pas de type de données spécial pour le stockage des adresses IP. Bien qu’une adresse IP ne soit qu’une collection de nombres, vous ne pouvez pas stocker une adresse IP dans un champ numérique. En effet, un champ numérique ne prend en charge qu’une seule décimale (.), alors qu’une adresse IP contient trois points (.). Cela signifie que vous devez stocker les adresses dans un champ de texte.

Étant donné que vous stockez les adresses IP dans un champ de texte, vous ne pouvez pas utiliser les boutons de tri intégrés dans Access pour trier les adresses de manière significative. Les boutons de tri trient toujours les valeurs d’un champ de texte dans l’ordre alphabétique, même s’il s’agit de chiffres. En d’autres termes, les adresses sont triées selon le premier chiffre, puis selon le deuxième chiffre, et ainsi de suite, au lieu des valeurs numériques qui composent l’adresse. La table suivante indique les adresses de la table précédente triées par ordre alphabétique dans le champ AdresseIP.

ID ordinateur AdresseIP
3 1.198.3.93
2 104.244.253.29
6 104.244.4.1
5 104.30.244.2
1 123.4.245.23
4 32.183.93.40

Les adresses commençant par 1 s’affichent avant celles commençant par 2, et ainsi de suite. Le tableau suivant indique les adresses dans l’ordre croissant correct .

ID ordinateur AdresseIP
3 1.198.3.93
4 32.183.93.40
5 104.30.244.2
6 104.244.4.1
2 104.244.253.29
1 123.4.245.23

Pour faciliter la compréhension des étapes de tri de ces adresses, vous divisez les adresses IP en quatre parties numériques. Les adresses doivent être triées par première partie, puis pour chaque valeur de la première partie, puis par la deuxième partie, et ainsi de suite. Le tableau affiche chaque partie dans une colonne différente et, comme les colonnes contiennent des valeurs numériques simples, il devient possible de trier les colonnes de gauche à droite dans l’ordre croissant, comme indiqué dans le tableau suivant.

Partie I Partie II Partie III Partie IV
1 198 3 93
32 183 93 40
104 30 244 2
104 244 4 1
104 244 253 29
123 4 245 23

Trier les quatre parties séparément est l’astuce derrière le tri des adresses IP. Dans la procédure qui suit, vous créez une requête qui, en plus du champ d’adresse IP, comprend quatre colonnes calculées dans lesquelles chaque colonne stocke une partie des valeurs d’adresse. La première colonne calculée contiendra la première partie numérique de l’adresse, la deuxième colonne calculée contiendra la deuxième partie numérique de l’adresse, et ainsi de suite. Au lieu de trier les enregistrements par le champ AdresseIP, la requête les trie en fonction des quatre colonnes calculées.

Créer la requête

Vous allez créer une requête sélectionnée nommée Adresses IP triées qui affiche les enregistrements dans l’ordre croissant des adresses IP. Supposons que la base de données actuelle comporte une table nommée MachineDetails qui inclut un champ de texte intitulé AdresseIP.

  1. Cliquez sur Créer>une requête

  2. Sélectionnez Ajouter des tables (Afficher la table dans Access) et faites glisser Détails de l’ordinateur vers la section supérieure du mode Création.

  3. Faites glisser les champs MachineID et AdresseIP vers la grille de création de requête.

  4. Vous êtes maintenant prêt à ajouter les colonnes calculées. Dans la première colonne vide à droite, tapez l’expression PartI : Val(Left([IPAddress],(InStr(1,[IPAddress], ». »)-1))) dans la ligne Champ . L’expression renvoie les caractères précédant le premier point (.) dans le champ AdresseIP.
    À présent, examinez l’expression. Étant donné que vous ne savez pas combien de chiffres composent la première partie de l’adresse, vous utilisez la fonction DansChaîne pour trouver la position de la première période. La soustraction de 1 (pour exclure le point) renvoie le nombre de chiffres de la première partie. Vous utilisez ensuite ce nombre avec la fonction Gauche pour extraire ce nombre de caractères, en commençant par le caractère le plus à gauche, du champ AdresseIP. Enfin, vous appelez la fonction Val pour convertir les caractères renvoyés par la fonction Gauche en nombre. Cette dernière étape est nécessaire car le type de données sous-jacent est Texte.

  5. Enregistrez la requête en cliquant sur Enregistrer dans la barre d’outils Accès rapide. C’est une bonne idée de le faire après chaque étape intermédiaire.

  6. Ajoutez la colonne pour la deuxième partie d’adresse. Dans la colonne à droite de PartI, tapez PartII : Val(Mid([IPAddress],InStr(1,[IPAddress], ». »)+1,InStr(InStr(1,[AdresseIP], ». »)+1,[AdresseIP], ». »)-InStr(1,[IPAddress], ». »)-1)) dans la ligne Champ . L’expression renvoie les caractères situés entre le premier et le deuxième point dans le champ AdresseIP.
    Encore une fois, examinez l’expression. Parce que vous ne savez pas combien de chiffres composent la deuxième partie de l’adresse ni exactement où commence la deuxième partie (parce que vous ne savez pas combien de temps dure la première partie), vous utilisez la fonction DansChaîne pour trouver les positions des périodes. Vous utilisez ensuite la fonction Mid pour extraire les caractères qui suivent la première période mais précèdent la seconde. Enfin, vous appelez la fonction Val pour convertir les caractères renvoyés par la fonction Mid en un nombre. Cette dernière étape est nécessaire car le type de données sous-jacent est Texte.

  7. Ajoutez la colonne pour la troisième partie d’adresse. Dans la colonne à droite de PartII, tapez PartIII : Val(Mid([IPAddress],InStr(InStr(1,[IPAddress], ». »)+1,[AdresseIP], ». »)+1,InStr(InStr(InStr(1,[IPAddress], ». »)+1,[AdresseIP], ». »)+1,[AdresseIP], ». »)-InStr(InStr(1,[AdresseIP], ». »)+1,[AdresseIP], ». »)-1)) dans la ligne Champ . L’expression renvoie les caractères situés entre le deuxième et le troisième point dans le champ AdresseIP.
    Encore une fois, examinez l’expression. Étant donné que vous ne savez pas combien de chiffres composent la troisième partie de l’adresse ni exactement où commence la troisième partie (parce que vous ne savez pas quelle est la longueur des première et deuxième parties), vous utilisez la fonction DansChaîne pour rechercher les positions des périodes. Vous utilisez ensuite la fonction Mid pour extraire les caractères qui suivent la deuxième période mais précèdent la troisième. Enfin, vous appelez la fonction Val pour convertir les caractères renvoyés par la fonction Mid en un nombre. Cette dernière étape est nécessaire car le type de données sous-jacent est Texte.

  8. Ajoutez la colonne de la quatrième et dernière partie de l’adresse. Dans la colonne à droite de PartIII, tapez PartIV : Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress], ». »)+1,[AdresseIP], ». »)+1,[AdresseIP], ». »))) dans la ligne Champ . L’expression renvoie les caractères qui suivent le dernier point.
    Encore une fois, examinez l’expression. La clé est de trouver l’emplacement de la troisième période, puis d’extraire tous les caractères qui la suivent. Comme vous ne savez pas exactement où se trouve la troisième période, vous appelez la fonction DansChaîne trois fois pour trouver la position de la troisième période. Vous utilisez ensuite la fonction Len pour calculer le nombre de chiffres de la quatrième partie. Le nombre de chiffres renvoyés est ensuite utilisé avec la fonction Droite pour extraire ce nombre de caractères de la partie droite du champ AdresseIP. Enfin, vous appelez la fonction Val pour convertir les caractères renvoyés par la fonction Mid en un nombre. Cette dernière étape est nécessaire car le type de données sous-jacent est Texte.

  9. Définissez la ligne Trier des quatre colonnes calculées sur Croissant.
    Important La ligne Trier de la colonne AdresseIP doit être laissée vide.
    Si vous souhaitez trier sur la base d’autres valeurs de champ, en plus des adresses, placez les champs à gauche ou à droite des quatre colonnes calculées. Ne placez pas les autres champs de tri entre les colonnes calculées.

  10. L’étape suivante consiste à masquer les quatre colonnes calculées de la feuille de données. Mais avant cela, basculez en mode Feuille de données pour afficher le résultat des expressions dans les colonnes calculées. Le tableau suivant répertorie les colonnes que vous verrez en mode Feuille de données.

    ID ordinateur AdresseIP Partie I Partie II Partie III Partie IV
    3 1.198.3.93 1 198 3 93
    4 32.183.93.40 32 183 93 40
    5 104.30.244.2 104 30 244 2
    6 104.244.4.1 104 244 4 1
    2 104.244.253.29 104 244 253 29
    1 123.4.245.23 123 4 245 23
  11. Revenez en mode Création et désactivez la zone case activée dans Afficher la ligne des quatre colonnes calculées. Cela empêche l’affichage en mode Feuille de données des colonnes calculées.

  12. Si vous le souhaitez, spécifiez des critères d’exclusion d’enregistrements de la requête.

  13. Basculez en mode Feuille de données pour afficher les enregistrements dans l’ordre trié. Les enregistrements seront correctement triés dans l’ordre croissant des adresses IP.

Autres utilisations des adresses IP triées

Valider les adresses IP lors de la saisie de données

Si vous souhaitez valider des adresses sans écrire de code, vous pouvez le faire dans une certaine mesure en définissant la propriété InputMask du champ sur ###.####.###.## ; 0;" » et la propriété Format du champ d’adresse IP à &&&&&&&&&&&&.

À quoi sert le masque de saisie ? Lorsque vous commencez à taper dans le champ adresse, le masque de saisie vous empêche d’entrer des caractères autres que des chiffres et des espaces entre les trois points. Si une partie numérique est un nombre à deux chiffres, laissez le troisième chiffre vide ou tapez un espace à la place. Notez que ce masque de saisie n’avertit pas l’utilisateur s’il omet de taper une ou plusieurs parties de l’adresse ou s’il ne tape que des espaces au lieu d’une valeur numérique. Par exemple, « 345. .3. " serait acceptée comme adresse valide.

À quoi sert le format d’affichage ? Lorsque vous avez terminé la saisie et que vous quittez le champ, le format d’affichage supprime les espaces dans l’adresse et affiche uniquement les nombres et les points. Ainsi, si vous avez tapé « 354.35 .2 .12 », l’adresse s’affiche sous la forme « 354.35.2.12 ». Notez que si vous cliquez à l’intérieur de l’adresse ou appuyez sur F2 (pour entrer en mode d’édition) lorsque l’adresse est sélectionnée, les espaces réapparaîtront.

Conseil

Si vous souhaitez copier une adresse, passez à la colonne ou au contrôle précédent, appuyez sur TAB pour sélectionner l’adresse mise en forme, puis cliquez sur Copier. En procédant ainsi, vous ne copierez pas la chaîne d’adresse qui contient des espaces.

Trier les enregistrements d’un formulaire ou d’un état par adresses IP

Si vous devez créer un formulaire ou un état dans lequel les enregistrements sont triés par adresse IP, basez le nouvel objet sur une requête qui trie les adresses comme décrit précédemment, plutôt que sur la table qui stocke les adresses.

Haut de la page