[VB] Classer par plage des adresses IP via une macro VB V2
Bonjour,
Je reviens avec ce sujet car j'ai une autre contrainte. Voici ce que j'ai :
Adr IP |
192.246.213.1 |
205.10.253.45 |
192.246.210.104 |
25.140.69.1 |
192.246.62.18 |
En gros ce que je veux obtenir c'est ce résultat là :
192.246.xxx.xxx |
205.10.253.45 |
25.140.69.1 |
Je m'explique. Je veux rassembler les adresses IP qui ont leurs deux premiers groupes de chiffres (ex : "192.246") et laisser les autres adresses IP qui n'ont pas de doublons tels qu'elles sont.
J'ai essayé quelque chose de très flou qui n'a évidemment pas fonctionné vu mon niveau de connaissance dans ce domaine. Ce que j'ai fais c'est que je parcours 1 à 1 les cellules de mon tableau et je compare avec la case d'après et si elles sont équivalentes je remplace par "le_debut_de_l'adresse.xxx.xxx" .
Pouvez-vous m'aiguiller ?
1 pièce(s) jointe(s)
Classer par plage des adresses IP via une macro VB V2
Merci pour ta réponse.
Cependant il faut que cela fonctionne pour n'importe quel adresse IP qui se ressemble à partir des deux premiers.
Je te fourni mon tableau si cela peut t'apporter un peu plus de précision.
Je vais quand même tester ta méthode en essayant de l'appliquer à mon besoin.
Pièce jointe 232589
Classer par plage des adresses IP via une macro VB V2
Les adresses IP que tu vois là peuvent être différente tous les jours je ne peux donc pas faire un select case car je ne suis pas censé connaître les adresses IP à l'avance. Enfaite toute les semaines j'ai un fichier contenant des adresses IP que je doit traiter comme tel pour réaliser des plages.
Classer par plage des adresses IP via une macro VB V2
Merci pour vos réponses, je reviendrais vers vous si il y a un soucis.
1 pièce(s) jointe(s)
Classer par plage des adresses IP via une macro VB V2
Bonjour,
J'ai essayé avec l'idée du dictionnaire, je suis à 95% satisfait du résultat. Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
Dim Long_TAB_ADR_IP As Long
Dim Key As String
Dim Value As String
Dim Step_int As String
Dim c As Long
Dim MonDico As New Scripting.Dictionary
Long_TAB_ADR_IP = WorksheetFunction.CountA(Columns(9)) - 2
For c = 8 To Long_TAB_ADR_IP + 7
Key = Left(Cells(c, 9), InStr(Cells(c, 9), ".") - 1) & "."
Step_int = Mid(Cells(c, 9), InStr(Cells(c, 9), ".") + 1)
Step_int = Left(Step_int, InStr(Step_int, ".") - 1)
Key = Key & Step_int 'Recupération de la partie gauche c'est à dire les deux premiers groupes de chiffres
Value = Mid(Cells(c, 9), InStr(Cells(c, 9), ".") + 1) ' Récupération des deux derniers groupes de chiffres
Value = Mid(Value, InStr(Value, "."))
If Not MonDico.Exists(Key) Then
MonDico.Add Key, Key & Value
Cells(c, 9) = MonDico(Key)
Else
Value = Key & ".xxx.xxx"
Cells(c, 9) = Value
End If
Next |
Voici le résultat : A gauche la colonne de départ ; A droite la colonne après le traitement
Pièce jointe 233087
Mon soucis c'est que si il existe plusieurs fois le premier doit aussi prendre cette valeur :
Ex : 192.255.23.4 |
21.245.3.1 |
192.255.235.61 |
Résultat voulu :
192.255.xxx.xxx |
21.245.3.1 |
Si quelqu'un a une idée ?
Classer par plage des adresses IP via une macro VB V2
Re,
J'ai trouvé ma solution. Enfaite je refais un traitement une fois que j'ai réalisé mon Dictionnaire pour arrivé à mes fins.
Je poste le traitement pour compléter mon message du dessus. Je vous remercie pour les réponses apportées.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
For c = 8 To Long_TAB_ADR_IP + 7
Recherche_ip_day = Left(Cells(c, 9), InStr(Cells(c, 9), ".") - 1) & "."
test = Mid(Cells(c, 9), InStr(Cells(c, 9), ".") + 1)
test = Left(test, InStr(test, ".") - 1)
Recherche_ip_day = Recherche_ip_day & test
For j = 8 To Long_TAB_ADR_IP + 7
Recherche_ip_day2 = Left(Cells(j, 9), InStr(Cells(j, 9), ".") - 1) & "."
test2 = Mid(Cells(j, 9), InStr(Cells(j, 9), ".") + 1)
test2 = Left(test2, InStr(test2, ".") - 1)
Recherche_ip_day2 = Recherche_ip_day2 & test2
If j <> c Then
If Recherche_ip_day = Recherche_ip_day2 Then
Cells(c, 9) = Recherche_ip_day2 & ".xxx.xxx"
End If
End If
Next
Next |
Classer par plage des adresses IP via une macro VB V2
Merci pour ta solutions qui est 100 fois plus rapide et plus optimisé que la mienne.