Il suffit de connaître la syntaxe des fichiers ini qui sont des fichiers
textes.
Donc pour la suite tu ouvres un fichier texte truc.ini en écriture et tu
ajoutes tes données sous forme de texte en faisant attention à la façon dont
tu veux que ce soit compris.
En fait à partir du moment où tu peux les afficher à l'écran, tu peux les
écrire dans un fichier texte.
"squat541" a écrit dans le message de
news:
> Merci Patrice tu ma bien orienté g reussi grace a toi,mais g une autre
> question maintenant que g les resultat que souhaité je voudrais les mettre
> dans un fichier.ini
> exemple: g la liste des 28 sous reseau et lorsque je clic sur un sous
> reseau
> il m'affiche les adresses de 0 à 255.
> je voudrait que les resultat soit en meme temps copier sur le fichier.ini
> (est ce deja possible).
> merci d'avance
>
> "Patrice Henrio" a écrit :
>
>> Déjà remplace tous les
>>
>> If <var> = true then
>>
>> par
>>
>> If <var> then
>>
>> ça ne change pas le fonctionnement mais c'est plus propre (discussion
>> déjà
>> tenue sur ce forum).
>>
>> Pour ton problème, il me semble qu'un tableau de 28 entiers (voire byte)
>> ferait l'affaire : dans ce tableau je mets les troisième nombre de
>> l'adresse
>> (puisque tu les connais)
>>
>> Donc T(1 to 28) as byte
>>
>> Ensuite, au lieu d'écrire une boucle do, tu peux utiliser un for next
>> For I=1 to 28
>> adr3=T(I)
>> Next I
>>
>> > If Option4.Value = True Then
>> > 'je tape le premier champ
>> > Adr2Start = 22
>> > Adr2End = 22
>> > Adr3Start = 5
>> > Adr3End = 5
>> > Fin = 254
>> > End If
>> devient
>>
>> If Option4.Value Then
>> 'je tape le premier champ
>> Adr2Start = 22
>> Adr2End = 22
>> Adr3Start = T(1)
>> Adr3End = T(28)
>> Fin = 254
>> End If
>>
>> > Loop
>> > Adr3Start = Adr3Start + 1
>> devient
>>
>> If Option4.Value then
>> I=I+1
>> Adr3Start=T(I)
>> Else
>> Adr3Startr3Start+1
>> End If
>>
>> Quelques conseils supplémentaires, les noms des variables doivent être
>> adaptées au problème, ici adr3Start n'est l'adresse de départ mais
>> l'adresse
>> courante qui parcourt la plage de Start à End, il serait donc plus
>> judicieux
>> d'écrire adr3 tout seul, voir définr un type adr de la façon suivante
>>
>> type adresse
>> champ1 as byte
>> champ2 as byte
>> champ3 as byte
>> champ4 as byte
>> end type
>> Encore mieux un objet dont les propriétés permettraient de gérer
>> l'affichage
>> et le valeur
>> une propriété Adresse
>> AdresseIp(A as byte, B as byte, C as byte, D as byte) as double
>> AdresseIp=D+256*(C+256*(B+256*A))
>> fin
>>
>> .... etc
>>
>> "squat541" a écrit dans le message
>> de
>> news:
>> > Je vous remercie tous de vous intéresser à mon cas,c presque ca sauf
>> > que
>> > je
>> > veux pouvoir les choisirs et pas aleatoire sinon c une bonne idée.je
>> > vous
>> > met
>> > le prog du bouton commande qui vous aidera a me comprendre
>> > Private Sub Command1_Click()
>> > If Command1.Caption = "Analyse" Then
>> > Command1.Caption = "Stopper"
>> > Dim Depart As Integer 'variables utilisées pour la barre
>> > Dim Fin As Integer 'de défilement
>> > Dim Iptest As String
>> > Dim Result As String
>> > Dim Adr1Start As Integer
>> > Dim Adr1End As Integer
>> > Dim Adr2Start As Integer 'variables utilisées pour les
>> > Dim Adr2End As Integer 'adresses Ip
>> > Dim Adr3Start As Integer
>> > Dim Adr3End As Integer
>> > Dim Cpt As Integer 'Utilisée pour définir le dernier champ
>> > 'de l'adresse IP
>> > '********************
>> > '* initialistaion *
>> > '********************
>> > ListView1.ListItems.Clear
>> > Depart = 0
>> > If Option1.Value = True Then
>> > Adr2Start = 0
>> > Adr2End = 255
>> > Adr3Start = 0
>> > Adr3End = 255
>> > Fin = 766
>> > End If
>> > If Option2.Value = True Then
>> > Adr2Start = Val(Text4.Text)
>> > Adr2End = Val(Text4.Text)
>> > Adr3Start = 0
>> > Adr3End = 255
>> > Fin = 510
>> > End If
>> > If Option3.Value = True Then
>> > Adr2Start = Val(Text4.Text)
>> > Adr2End = Val(Text4.Text)
>> > Adr3Start = Val(Text5.Text)
>> > Adr3End = Val(Text5.Text
>> > Fin = 254
>> > End If
>> > If Option4.Value = True Then
>> > 'je tape le premier champ
>> > Adr2Start = 22
>> > Adr2End = 22
>> > Adr3Start = 5
>> > Adr3End = 5
>> > Fin = 254
>> > End If
>> > ProgressBar1.Visible = True
>> > ProgressBar1.Max = Fin
>> > ProgressBar1.Min = Depart
>> > Do Until Adr2Start > Adr2End
>> > 'boucle correspondant au deuxième champs de l'adresse IP
>> > Do Until Adr3Start > Adr3End
>> > 'Boucle correspondant au troisième champs de l'adresse IP
>> > 'réinitialisation de cpt
>> > Cpt = 1
>> > 'Cpt = 100
>> > Do Until Cpt > 254
>> > 'boucle correspondant au quetrième champs de l'adresse IP
>> > If Command1.Caption = "Analyse" Then Exit Sub
>> > 'Définition de l'adresse IP à tester
>> > Iptest = Text3.Text + "." & Adr2Start & "." &
>> > Adr3Start
>> > & "." & Cpt
>> > DoEvents
>> > Result = Echo(Iptest)
>> > With ListView1.ListItems.Add
>> > .Text = Iptest
>> > If Result = "Failure" Then
>> > .SubItems(2) = Result
>> > DoEvents
>> > Enregistrement Iptest, False
>> > Else
>> > '.SubItems(1) = GetHostName(ConvertIp(Iptest))
>> > 'Dim test As Double
>> > 'test = CDbl(ConvertIp(Iptest))
>> > ' On Error Resume Next
>> > '.SubItems(1) > >> > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
>> > '.SubItems(1) > >> > gethostbyaddr(ConvertIp(Iptest),
>> > 4, AF_INET)
>> > '.SubItems(1) > >> > GetHostName(CLng(ConvertIp(Iptest)))
>> > DoEvents
>> > '.SubItems(1) = HostName(Iptest)
>> > .SubItems(1) = GetHostNameFromIP(.Text)
>> > DoEvents
>> > Enregistrement Iptest, True
>> > End If
>> > End With
>> > Cpt = Cpt + 1
>> > Depart = Depart + 1
>> > ProgressBar1.Value = Depart
>> > Loop
>> > Adr3Start = Adr3Start + 1
>> > Loop
>> > Adr2Start = Adr2Start + 1
>> > Loop
>> >
>> > ProgressBar1.Visible = False
>> >
>> > Else
>> > ProgressBar1.Visible = False
>> > Command1.Caption = "Analyse"
>> > End If
>> >
>> > End Sub
>> >
>> > Voila mon prob ce trouve a l'option 4,je cherche a modifier le 3eme
>> > champ
>> > en
>> > lui donnant 28 valeur mais que je ne modifie pas ces 28 reseau
>> > corresponde
>> > au
>> > reseau d'une entreprise,ce sont des adresses qui ne change pas.
>> > un exemple 85.22.5.(0à255)
>> > 85.22.10.(0à255)
>> > 85.22.18.(0à255)
>> > :
>> > :
>> > je modifie seulement le troisieme champ je choisie les 28 et ca reste
>> > toujours meme.si j'explique mal dit le moi je detaillerai plus.
>> >
>> >
>> > "LE TROLL" a écrit :
>> >
>> >> Oh là mes brave:
>> >>
>> >> L'exemple indique pour le 4eme groupe IP (1, 5, 79...), et
>> >> il dit "ip mais qui NE se suivent", donc c'est bien
>> >> traitement aléatoire qu'il faut mettre dans la boucle, en
>> >> vérifiant que l'aléatoire n'a pas causé de mitoyenneté d'IP,
>> >> moi y'en a m'essayer à ce jeu:
>> >> -----------------------
>> >>
>> >> Sub cree_ip()
>> >> Dim i As Long
>> >> Dim j As Long
>> >> Dim k As Long
>> >> Dim ip(256) As Long
>> >> Dim ip_ok(30) As Long ' ip retenues
>> >> Dim hasard As Long
>> >> Dim presente As String
>> >> Dim trans As Long
>> >> '
>> >> For i = 0 To 255 ' choix des ip
>> >> ip(i) = Format(i, "000")
>> >> Next i
>> >> Randomize
>> >> hasard = 0
>> >> '
>> >> For i = 1 To 30
>> >> Do While ip(hasard) = 256 ' = déjà choisit
>> >> hasard = Int((255 - 0 + 1) * Rnd + 0) ' pseudo
>> >> aléatoire
>> >> Loop
>> >> If hasard > 0 Then ip(hasard - 1) = 256 ' enlève - 1:
>> >> interdit mitoyenneté
>> >> ip(hasard) = 256 ' ip à ne plus sélectionner
>> >> ip_ok(i) = hasard ' ip sélectionnée
>> >> If hasard < 255 Then ip(hasard + 1) = 256 ' enlève + 1:
>> >> interdit mitoyenneté
>> >> Next i
>> >> '
>> >> For i = 1 To 30 ' tri croissant
>> >> For j = 1 To 30
>> >> For k = 1 To 30
>> >> If j = k Then Exit For
>> >> If ip_ok(j) < ip_ok(k) Then
>> >> trans = ip_ok(j)
>> >> ip_ok(j) = ip_ok(k)
>> >> ip_ok(k) = trans
>> >> Exit For
>> >> End If
>> >> Next k
>> >> Next j
>> >> Next i
>> >> '
>> >> presente = "" ' présentation
>> >> For i = 1 To 30
>> >> presente = presente & Format(ip_ok(i), "000") & vbLf
>> >> Next i
>> >> MsgBox presente, vbInformation
>> >> End Sub
>> >> -----------------------testé OK
>> >>
>> >>
>> >> "squat541" a écrit dans
>> >> le message de news:
>> >>
>> >> > salut a tous,voila j'explique,g un prog qui me liste tout
>> >> > les ip des adresses
>> >> > de classe a,b,c.
>> >> > par exemple,je tape 85.22.55. adresse de classe c,et il
>> >> > me sort tout les ip
>> >> > du reseau 85.22.55. (de 0 a 255).
>> >> > je voudrais afficher seulement 30 ip mais qui ne suivent
>> >> > pas85.22.55.(1,5 ,
>> >> > 79,101, 103,119.....),quel boucle je dois utiliser pour
>> >> > faire cela vu que ce
>> >> > n'est pas des chiffres qui se suivent?
>> >> > merci de repondre
>> >>
>> >>
>> >>
>>
>>
>>
Il suffit de connaître la syntaxe des fichiers ini qui sont des fichiers
textes.
Donc pour la suite tu ouvres un fichier texte truc.ini en écriture et tu
ajoutes tes données sous forme de texte en faisant attention à la façon dont
tu veux que ce soit compris.
En fait à partir du moment où tu peux les afficher à l'écran, tu peux les
écrire dans un fichier texte.
"squat541" <squat541@discussions.microsoft.com> a écrit dans le message de
news: 2E9BC2F9-4A98-409E-B9F0-1335C7C9C8F0@microsoft.com...
> Merci Patrice tu ma bien orienté g reussi grace a toi,mais g une autre
> question maintenant que g les resultat que souhaité je voudrais les mettre
> dans un fichier.ini
> exemple: g la liste des 28 sous reseau et lorsque je clic sur un sous
> reseau
> il m'affiche les adresses de 0 à 255.
> je voudrait que les resultat soit en meme temps copier sur le fichier.ini
> (est ce deja possible).
> merci d'avance
>
> "Patrice Henrio" a écrit :
>
>> Déjà remplace tous les
>>
>> If <var> = true then
>>
>> par
>>
>> If <var> then
>>
>> ça ne change pas le fonctionnement mais c'est plus propre (discussion
>> déjà
>> tenue sur ce forum).
>>
>> Pour ton problème, il me semble qu'un tableau de 28 entiers (voire byte)
>> ferait l'affaire : dans ce tableau je mets les troisième nombre de
>> l'adresse
>> (puisque tu les connais)
>>
>> Donc T(1 to 28) as byte
>>
>> Ensuite, au lieu d'écrire une boucle do, tu peux utiliser un for next
>> For I=1 to 28
>> adr3=T(I)
>> Next I
>>
>> > If Option4.Value = True Then
>> > 'je tape le premier champ
>> > Adr2Start = 22
>> > Adr2End = 22
>> > Adr3Start = 5
>> > Adr3End = 5
>> > Fin = 254
>> > End If
>> devient
>>
>> If Option4.Value Then
>> 'je tape le premier champ
>> Adr2Start = 22
>> Adr2End = 22
>> Adr3Start = T(1)
>> Adr3End = T(28)
>> Fin = 254
>> End If
>>
>> > Loop
>> > Adr3Start = Adr3Start + 1
>> devient
>>
>> If Option4.Value then
>> I=I+1
>> Adr3Start=T(I)
>> Else
>> Adr3Startr3Start+1
>> End If
>>
>> Quelques conseils supplémentaires, les noms des variables doivent être
>> adaptées au problème, ici adr3Start n'est l'adresse de départ mais
>> l'adresse
>> courante qui parcourt la plage de Start à End, il serait donc plus
>> judicieux
>> d'écrire adr3 tout seul, voir définr un type adr de la façon suivante
>>
>> type adresse
>> champ1 as byte
>> champ2 as byte
>> champ3 as byte
>> champ4 as byte
>> end type
>> Encore mieux un objet dont les propriétés permettraient de gérer
>> l'affichage
>> et le valeur
>> une propriété Adresse
>> AdresseIp(A as byte, B as byte, C as byte, D as byte) as double
>> AdresseIp=D+256*(C+256*(B+256*A))
>> fin
>>
>> .... etc
>>
>> "squat541" <squat541@discussions.microsoft.com> a écrit dans le message
>> de
>> news: 43705B1D-8FFA-495A-BE68-114BD2BE5859@microsoft.com...
>> > Je vous remercie tous de vous intéresser à mon cas,c presque ca sauf
>> > que
>> > je
>> > veux pouvoir les choisirs et pas aleatoire sinon c une bonne idée.je
>> > vous
>> > met
>> > le prog du bouton commande qui vous aidera a me comprendre
>> > Private Sub Command1_Click()
>> > If Command1.Caption = "Analyse" Then
>> > Command1.Caption = "Stopper"
>> > Dim Depart As Integer 'variables utilisées pour la barre
>> > Dim Fin As Integer 'de défilement
>> > Dim Iptest As String
>> > Dim Result As String
>> > Dim Adr1Start As Integer
>> > Dim Adr1End As Integer
>> > Dim Adr2Start As Integer 'variables utilisées pour les
>> > Dim Adr2End As Integer 'adresses Ip
>> > Dim Adr3Start As Integer
>> > Dim Adr3End As Integer
>> > Dim Cpt As Integer 'Utilisée pour définir le dernier champ
>> > 'de l'adresse IP
>> > '********************
>> > '* initialistaion *
>> > '********************
>> > ListView1.ListItems.Clear
>> > Depart = 0
>> > If Option1.Value = True Then
>> > Adr2Start = 0
>> > Adr2End = 255
>> > Adr3Start = 0
>> > Adr3End = 255
>> > Fin = 766
>> > End If
>> > If Option2.Value = True Then
>> > Adr2Start = Val(Text4.Text)
>> > Adr2End = Val(Text4.Text)
>> > Adr3Start = 0
>> > Adr3End = 255
>> > Fin = 510
>> > End If
>> > If Option3.Value = True Then
>> > Adr2Start = Val(Text4.Text)
>> > Adr2End = Val(Text4.Text)
>> > Adr3Start = Val(Text5.Text)
>> > Adr3End = Val(Text5.Text
>> > Fin = 254
>> > End If
>> > If Option4.Value = True Then
>> > 'je tape le premier champ
>> > Adr2Start = 22
>> > Adr2End = 22
>> > Adr3Start = 5
>> > Adr3End = 5
>> > Fin = 254
>> > End If
>> > ProgressBar1.Visible = True
>> > ProgressBar1.Max = Fin
>> > ProgressBar1.Min = Depart
>> > Do Until Adr2Start > Adr2End
>> > 'boucle correspondant au deuxième champs de l'adresse IP
>> > Do Until Adr3Start > Adr3End
>> > 'Boucle correspondant au troisième champs de l'adresse IP
>> > 'réinitialisation de cpt
>> > Cpt = 1
>> > 'Cpt = 100
>> > Do Until Cpt > 254
>> > 'boucle correspondant au quetrième champs de l'adresse IP
>> > If Command1.Caption = "Analyse" Then Exit Sub
>> > 'Définition de l'adresse IP à tester
>> > Iptest = Text3.Text + "." & Adr2Start & "." &
>> > Adr3Start
>> > & "." & Cpt
>> > DoEvents
>> > Result = Echo(Iptest)
>> > With ListView1.ListItems.Add
>> > .Text = Iptest
>> > If Result = "Failure" Then
>> > .SubItems(2) = Result
>> > DoEvents
>> > Enregistrement Iptest, False
>> > Else
>> > '.SubItems(1) = GetHostName(ConvertIp(Iptest))
>> > 'Dim test As Double
>> > 'test = CDbl(ConvertIp(Iptest))
>> > ' On Error Resume Next
>> > '.SubItems(1) > >> > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
>> > '.SubItems(1) > >> > gethostbyaddr(ConvertIp(Iptest),
>> > 4, AF_INET)
>> > '.SubItems(1) > >> > GetHostName(CLng(ConvertIp(Iptest)))
>> > DoEvents
>> > '.SubItems(1) = HostName(Iptest)
>> > .SubItems(1) = GetHostNameFromIP(.Text)
>> > DoEvents
>> > Enregistrement Iptest, True
>> > End If
>> > End With
>> > Cpt = Cpt + 1
>> > Depart = Depart + 1
>> > ProgressBar1.Value = Depart
>> > Loop
>> > Adr3Start = Adr3Start + 1
>> > Loop
>> > Adr2Start = Adr2Start + 1
>> > Loop
>> >
>> > ProgressBar1.Visible = False
>> >
>> > Else
>> > ProgressBar1.Visible = False
>> > Command1.Caption = "Analyse"
>> > End If
>> >
>> > End Sub
>> >
>> > Voila mon prob ce trouve a l'option 4,je cherche a modifier le 3eme
>> > champ
>> > en
>> > lui donnant 28 valeur mais que je ne modifie pas ces 28 reseau
>> > corresponde
>> > au
>> > reseau d'une entreprise,ce sont des adresses qui ne change pas.
>> > un exemple 85.22.5.(0à255)
>> > 85.22.10.(0à255)
>> > 85.22.18.(0à255)
>> > :
>> > :
>> > je modifie seulement le troisieme champ je choisie les 28 et ca reste
>> > toujours meme.si j'explique mal dit le moi je detaillerai plus.
>> >
>> >
>> > "LE TROLL" a écrit :
>> >
>> >> Oh là mes brave:
>> >>
>> >> L'exemple indique pour le 4eme groupe IP (1, 5, 79...), et
>> >> il dit "ip mais qui NE se suivent", donc c'est bien
>> >> traitement aléatoire qu'il faut mettre dans la boucle, en
>> >> vérifiant que l'aléatoire n'a pas causé de mitoyenneté d'IP,
>> >> moi y'en a m'essayer à ce jeu:
>> >> -----------------------
>> >>
>> >> Sub cree_ip()
>> >> Dim i As Long
>> >> Dim j As Long
>> >> Dim k As Long
>> >> Dim ip(256) As Long
>> >> Dim ip_ok(30) As Long ' ip retenues
>> >> Dim hasard As Long
>> >> Dim presente As String
>> >> Dim trans As Long
>> >> '
>> >> For i = 0 To 255 ' choix des ip
>> >> ip(i) = Format(i, "000")
>> >> Next i
>> >> Randomize
>> >> hasard = 0
>> >> '
>> >> For i = 1 To 30
>> >> Do While ip(hasard) = 256 ' = déjà choisit
>> >> hasard = Int((255 - 0 + 1) * Rnd + 0) ' pseudo
>> >> aléatoire
>> >> Loop
>> >> If hasard > 0 Then ip(hasard - 1) = 256 ' enlève - 1:
>> >> interdit mitoyenneté
>> >> ip(hasard) = 256 ' ip à ne plus sélectionner
>> >> ip_ok(i) = hasard ' ip sélectionnée
>> >> If hasard < 255 Then ip(hasard + 1) = 256 ' enlève + 1:
>> >> interdit mitoyenneté
>> >> Next i
>> >> '
>> >> For i = 1 To 30 ' tri croissant
>> >> For j = 1 To 30
>> >> For k = 1 To 30
>> >> If j = k Then Exit For
>> >> If ip_ok(j) < ip_ok(k) Then
>> >> trans = ip_ok(j)
>> >> ip_ok(j) = ip_ok(k)
>> >> ip_ok(k) = trans
>> >> Exit For
>> >> End If
>> >> Next k
>> >> Next j
>> >> Next i
>> >> '
>> >> presente = "" ' présentation
>> >> For i = 1 To 30
>> >> presente = presente & Format(ip_ok(i), "000") & vbLf
>> >> Next i
>> >> MsgBox presente, vbInformation
>> >> End Sub
>> >> -----------------------testé OK
>> >>
>> >>
>> >> "squat541" <squat541@discussions.microsoft.com> a écrit dans
>> >> le message de news:
>> >> EDEBDB18-FF41-40BD-ADD6-95807F914450@microsoft.com...
>> >> > salut a tous,voila j'explique,g un prog qui me liste tout
>> >> > les ip des adresses
>> >> > de classe a,b,c.
>> >> > par exemple,je tape 85.22.55. adresse de classe c,et il
>> >> > me sort tout les ip
>> >> > du reseau 85.22.55. (de 0 a 255).
>> >> > je voudrais afficher seulement 30 ip mais qui ne suivent
>> >> > pas85.22.55.(1,5 ,
>> >> > 79,101, 103,119.....),quel boucle je dois utiliser pour
>> >> > faire cela vu que ce
>> >> > n'est pas des chiffres qui se suivent?
>> >> > merci de repondre
>> >>
>> >>
>> >>
>>
>>
>>
Il suffit de connaître la syntaxe des fichiers ini qui sont des fichiers
textes.
Donc pour la suite tu ouvres un fichier texte truc.ini en écriture et tu
ajoutes tes données sous forme de texte en faisant attention à la façon dont
tu veux que ce soit compris.
En fait à partir du moment où tu peux les afficher à l'écran, tu peux les
écrire dans un fichier texte.
"squat541" a écrit dans le message de
news:
> Merci Patrice tu ma bien orienté g reussi grace a toi,mais g une autre
> question maintenant que g les resultat que souhaité je voudrais les mettre
> dans un fichier.ini
> exemple: g la liste des 28 sous reseau et lorsque je clic sur un sous
> reseau
> il m'affiche les adresses de 0 à 255.
> je voudrait que les resultat soit en meme temps copier sur le fichier.ini
> (est ce deja possible).
> merci d'avance
>
> "Patrice Henrio" a écrit :
>
>> Déjà remplace tous les
>>
>> If <var> = true then
>>
>> par
>>
>> If <var> then
>>
>> ça ne change pas le fonctionnement mais c'est plus propre (discussion
>> déjà
>> tenue sur ce forum).
>>
>> Pour ton problème, il me semble qu'un tableau de 28 entiers (voire byte)
>> ferait l'affaire : dans ce tableau je mets les troisième nombre de
>> l'adresse
>> (puisque tu les connais)
>>
>> Donc T(1 to 28) as byte
>>
>> Ensuite, au lieu d'écrire une boucle do, tu peux utiliser un for next
>> For I=1 to 28
>> adr3=T(I)
>> Next I
>>
>> > If Option4.Value = True Then
>> > 'je tape le premier champ
>> > Adr2Start = 22
>> > Adr2End = 22
>> > Adr3Start = 5
>> > Adr3End = 5
>> > Fin = 254
>> > End If
>> devient
>>
>> If Option4.Value Then
>> 'je tape le premier champ
>> Adr2Start = 22
>> Adr2End = 22
>> Adr3Start = T(1)
>> Adr3End = T(28)
>> Fin = 254
>> End If
>>
>> > Loop
>> > Adr3Start = Adr3Start + 1
>> devient
>>
>> If Option4.Value then
>> I=I+1
>> Adr3Start=T(I)
>> Else
>> Adr3Startr3Start+1
>> End If
>>
>> Quelques conseils supplémentaires, les noms des variables doivent être
>> adaptées au problème, ici adr3Start n'est l'adresse de départ mais
>> l'adresse
>> courante qui parcourt la plage de Start à End, il serait donc plus
>> judicieux
>> d'écrire adr3 tout seul, voir définr un type adr de la façon suivante
>>
>> type adresse
>> champ1 as byte
>> champ2 as byte
>> champ3 as byte
>> champ4 as byte
>> end type
>> Encore mieux un objet dont les propriétés permettraient de gérer
>> l'affichage
>> et le valeur
>> une propriété Adresse
>> AdresseIp(A as byte, B as byte, C as byte, D as byte) as double
>> AdresseIp=D+256*(C+256*(B+256*A))
>> fin
>>
>> .... etc
>>
>> "squat541" a écrit dans le message
>> de
>> news:
>> > Je vous remercie tous de vous intéresser à mon cas,c presque ca sauf
>> > que
>> > je
>> > veux pouvoir les choisirs et pas aleatoire sinon c une bonne idée.je
>> > vous
>> > met
>> > le prog du bouton commande qui vous aidera a me comprendre
>> > Private Sub Command1_Click()
>> > If Command1.Caption = "Analyse" Then
>> > Command1.Caption = "Stopper"
>> > Dim Depart As Integer 'variables utilisées pour la barre
>> > Dim Fin As Integer 'de défilement
>> > Dim Iptest As String
>> > Dim Result As String
>> > Dim Adr1Start As Integer
>> > Dim Adr1End As Integer
>> > Dim Adr2Start As Integer 'variables utilisées pour les
>> > Dim Adr2End As Integer 'adresses Ip
>> > Dim Adr3Start As Integer
>> > Dim Adr3End As Integer
>> > Dim Cpt As Integer 'Utilisée pour définir le dernier champ
>> > 'de l'adresse IP
>> > '********************
>> > '* initialistaion *
>> > '********************
>> > ListView1.ListItems.Clear
>> > Depart = 0
>> > If Option1.Value = True Then
>> > Adr2Start = 0
>> > Adr2End = 255
>> > Adr3Start = 0
>> > Adr3End = 255
>> > Fin = 766
>> > End If
>> > If Option2.Value = True Then
>> > Adr2Start = Val(Text4.Text)
>> > Adr2End = Val(Text4.Text)
>> > Adr3Start = 0
>> > Adr3End = 255
>> > Fin = 510
>> > End If
>> > If Option3.Value = True Then
>> > Adr2Start = Val(Text4.Text)
>> > Adr2End = Val(Text4.Text)
>> > Adr3Start = Val(Text5.Text)
>> > Adr3End = Val(Text5.Text
>> > Fin = 254
>> > End If
>> > If Option4.Value = True Then
>> > 'je tape le premier champ
>> > Adr2Start = 22
>> > Adr2End = 22
>> > Adr3Start = 5
>> > Adr3End = 5
>> > Fin = 254
>> > End If
>> > ProgressBar1.Visible = True
>> > ProgressBar1.Max = Fin
>> > ProgressBar1.Min = Depart
>> > Do Until Adr2Start > Adr2End
>> > 'boucle correspondant au deuxième champs de l'adresse IP
>> > Do Until Adr3Start > Adr3End
>> > 'Boucle correspondant au troisième champs de l'adresse IP
>> > 'réinitialisation de cpt
>> > Cpt = 1
>> > 'Cpt = 100
>> > Do Until Cpt > 254
>> > 'boucle correspondant au quetrième champs de l'adresse IP
>> > If Command1.Caption = "Analyse" Then Exit Sub
>> > 'Définition de l'adresse IP à tester
>> > Iptest = Text3.Text + "." & Adr2Start & "." &
>> > Adr3Start
>> > & "." & Cpt
>> > DoEvents
>> > Result = Echo(Iptest)
>> > With ListView1.ListItems.Add
>> > .Text = Iptest
>> > If Result = "Failure" Then
>> > .SubItems(2) = Result
>> > DoEvents
>> > Enregistrement Iptest, False
>> > Else
>> > '.SubItems(1) = GetHostName(ConvertIp(Iptest))
>> > 'Dim test As Double
>> > 'test = CDbl(ConvertIp(Iptest))
>> > ' On Error Resume Next
>> > '.SubItems(1) > >> > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
>> > '.SubItems(1) > >> > gethostbyaddr(ConvertIp(Iptest),
>> > 4, AF_INET)
>> > '.SubItems(1) > >> > GetHostName(CLng(ConvertIp(Iptest)))
>> > DoEvents
>> > '.SubItems(1) = HostName(Iptest)
>> > .SubItems(1) = GetHostNameFromIP(.Text)
>> > DoEvents
>> > Enregistrement Iptest, True
>> > End If
>> > End With
>> > Cpt = Cpt + 1
>> > Depart = Depart + 1
>> > ProgressBar1.Value = Depart
>> > Loop
>> > Adr3Start = Adr3Start + 1
>> > Loop
>> > Adr2Start = Adr2Start + 1
>> > Loop
>> >
>> > ProgressBar1.Visible = False
>> >
>> > Else
>> > ProgressBar1.Visible = False
>> > Command1.Caption = "Analyse"
>> > End If
>> >
>> > End Sub
>> >
>> > Voila mon prob ce trouve a l'option 4,je cherche a modifier le 3eme
>> > champ
>> > en
>> > lui donnant 28 valeur mais que je ne modifie pas ces 28 reseau
>> > corresponde
>> > au
>> > reseau d'une entreprise,ce sont des adresses qui ne change pas.
>> > un exemple 85.22.5.(0à255)
>> > 85.22.10.(0à255)
>> > 85.22.18.(0à255)
>> > :
>> > :
>> > je modifie seulement le troisieme champ je choisie les 28 et ca reste
>> > toujours meme.si j'explique mal dit le moi je detaillerai plus.
>> >
>> >
>> > "LE TROLL" a écrit :
>> >
>> >> Oh là mes brave:
>> >>
>> >> L'exemple indique pour le 4eme groupe IP (1, 5, 79...), et
>> >> il dit "ip mais qui NE se suivent", donc c'est bien
>> >> traitement aléatoire qu'il faut mettre dans la boucle, en
>> >> vérifiant que l'aléatoire n'a pas causé de mitoyenneté d'IP,
>> >> moi y'en a m'essayer à ce jeu:
>> >> -----------------------
>> >>
>> >> Sub cree_ip()
>> >> Dim i As Long
>> >> Dim j As Long
>> >> Dim k As Long
>> >> Dim ip(256) As Long
>> >> Dim ip_ok(30) As Long ' ip retenues
>> >> Dim hasard As Long
>> >> Dim presente As String
>> >> Dim trans As Long
>> >> '
>> >> For i = 0 To 255 ' choix des ip
>> >> ip(i) = Format(i, "000")
>> >> Next i
>> >> Randomize
>> >> hasard = 0
>> >> '
>> >> For i = 1 To 30
>> >> Do While ip(hasard) = 256 ' = déjà choisit
>> >> hasard = Int((255 - 0 + 1) * Rnd + 0) ' pseudo
>> >> aléatoire
>> >> Loop
>> >> If hasard > 0 Then ip(hasard - 1) = 256 ' enlève - 1:
>> >> interdit mitoyenneté
>> >> ip(hasard) = 256 ' ip à ne plus sélectionner
>> >> ip_ok(i) = hasard ' ip sélectionnée
>> >> If hasard < 255 Then ip(hasard + 1) = 256 ' enlève + 1:
>> >> interdit mitoyenneté
>> >> Next i
>> >> '
>> >> For i = 1 To 30 ' tri croissant
>> >> For j = 1 To 30
>> >> For k = 1 To 30
>> >> If j = k Then Exit For
>> >> If ip_ok(j) < ip_ok(k) Then
>> >> trans = ip_ok(j)
>> >> ip_ok(j) = ip_ok(k)
>> >> ip_ok(k) = trans
>> >> Exit For
>> >> End If
>> >> Next k
>> >> Next j
>> >> Next i
>> >> '
>> >> presente = "" ' présentation
>> >> For i = 1 To 30
>> >> presente = presente & Format(ip_ok(i), "000") & vbLf
>> >> Next i
>> >> MsgBox presente, vbInformation
>> >> End Sub
>> >> -----------------------testé OK
>> >>
>> >>
>> >> "squat541" a écrit dans
>> >> le message de news:
>> >>
>> >> > salut a tous,voila j'explique,g un prog qui me liste tout
>> >> > les ip des adresses
>> >> > de classe a,b,c.
>> >> > par exemple,je tape 85.22.55. adresse de classe c,et il
>> >> > me sort tout les ip
>> >> > du reseau 85.22.55. (de 0 a 255).
>> >> > je voudrais afficher seulement 30 ip mais qui ne suivent
>> >> > pas85.22.55.(1,5 ,
>> >> > 79,101, 103,119.....),quel boucle je dois utiliser pour
>> >> > faire cela vu que ce
>> >> > n'est pas des chiffres qui se suivent?
>> >> > merci de repondre
>> >>
>> >>
>> >>
>>
>>
>>
Excusez moi patrice c pas ce que je dois faire,on ma mal expliquer le but
de
l'exercie
c un peu compliquer a expliquer mais je vais faire du mieu que je peu
g un prog qui liste des adresse ip d'un reseau et de plusieur si je le
souhaite,la liste des adresse ip de chaque reseau apparait sur une
listview.
g creer un un fichier.ini ou g mis les numero ip.
voila ce que je voudrais faire
creer une option manu/auto dans le fichier ini
en auto il a 28 reseau a chercher et il affiche le resultat dans un
fichier.txt
en manu je choisi 1 ou plusieur reseau parmi les 28 et j'affiche le
resultat
aussi
le but de l'exercice est qu'une personne qui ne connait rien en
programmation puisse pouvoir modifier les adresses s'il le desire sans
qu'il
est a toujer a la prog
par exemple si une adresse d'un reseau change il peut la modifier ds le
fichier.ini tout simplement
voila le prog sur la command1 qui aidera a mieux comprendre
on ma deja aider dans le forum sur ce prog
dans fichier texte Private Sub Command1_Click()
If Command1.Caption = "Analyse" Then
Command1.Caption = "Stopper"
Dim Depart As Integer 'variables utilisées pour la barre
Dim Fin As Integer 'de défilement
Dim Iptest As String
Dim Result As String
Dim Adr1Start As Integer
Dim Adr1End As Integer
Dim Adr2Start As Integer 'variables utilisées pour les
Dim Adr2End As Integer 'adresses Ip
Dim Adr3Start As Integer
Dim Adr3End As Integer
Dim Cpt As Integer 'Utilisée pour définir le dernier champ
'de l'adresse IP
Dim T(1 To 3) As Byte
'g choisi 3 au lieu de 28 reseau pou alleger le prog
T(1) = 5
T(2) = 22
T(3) = 23
'********************
'* initialistaion *
'********************
ListView1.ListItems.Clear
Depart = 0
If Option1.Value Then
Adr2Start = 0
Adr2End = 255
Adr3Start = 0
Adr3End = 255
Fin = 766
End If
If Option2.Value Then
Adr2Start = Val(Text4.Text)
Adr2End = Val(Text4.Text)
Adr3Start = 0
Adr3End = 255
Fin = 510
End If
If Option3.Value Then
Adr2Start = Val(Text4.Text)
Adr2End = Val(Text4.Text)
Adr3Start = Val(Text5.Text)
Adr3End = Val(Text5.Text)
Fin = 254
End If
If Option4.Value Then
Adr2Start = 22
Adr2End = 22
Adr3Start = T(1)
Adr3End = T(3)
Fin = 766
End If
ProgressBar1.Visible = True
ProgressBar1.Max = Fin
ProgressBar1.Min = Depart
For i = 1 To 3
Do Until Adr2Start > Adr2End
'boucle correspondant au deuxième champs de l'adresse IP
Do Until Adr3Start > Adr3End
'Boucle correspondant au troisième champs de l'adresse IP
'réinitialisation de cpt
Cpt = 1
'Cpt = 100
Do Until Cpt > 254
'boucle correspondant au quetrième champs de l'adresse IP
If Command1.Caption = "Analyse" Then Exit Sub
'Définition de l'adresse IP à tester
Iptest = Text3.Text + "." & Adr2Start & "." & Adr3Start
& "." & Cpt
DoEvents
Result = Echo(Iptest)
With ListView1.ListItems.Add
.Text = Iptest
If Result = "Failure" Then
.SubItems(2) = Result
DoEvents
Enregistrement Iptest, False
Else
'.SubItems(1) = GetHostName(ConvertIp(Iptest))
'Dim test As Double
'test = CDbl(ConvertIp(Iptest))
' On Error Resume Next
'.SubItems(1) > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
'.SubItems(1) =
gethostbyaddr(ConvertIp(Iptest),
4, AF_INET)
'.SubItems(1) > GetHostName(CLng(ConvertIp(Iptest)))
DoEvents
'.SubItems(1) = HostName(Iptest)
.SubItems(1) = GetHostNameFromIP(.Text)
DoEvents
Enregistrement Iptest, True
End If
End With
Cpt = Cpt + 1
Depart = Depart + 1
ProgressBar1.Value = Depart
Loop
'Option4
i = i + 1
If i = 4 Then
Command1.Caption = "Analyse"
End If
Adr3Start = T(i)
Loop
Adr2Start = Adr2Start + 1
Loop
ProgressBar1.Visible = False
Next i
Else
ProgressBar1.Visible = False
Command1.Caption = "Analyse"
End If
End Sub
"Patrice Henrio" a écrit :Il suffit de connaître la syntaxe des fichiers ini qui sont des fichiers
textes.
Donc pour la suite tu ouvres un fichier texte truc.ini en écriture et tu
ajoutes tes données sous forme de texte en faisant attention à la façon
dont
tu veux que ce soit compris.
En fait à partir du moment où tu peux les afficher à l'écran, tu peux les
écrire dans un fichier texte.
"squat541" a écrit dans le message
de
news:
> Merci Patrice tu ma bien orienté g reussi grace a toi,mais g une autre
> question maintenant que g les resultat que souhaité je voudrais les
> mettre
> dans un fichier.ini
> exemple: g la liste des 28 sous reseau et lorsque je clic sur un sous
> reseau
> il m'affiche les adresses de 0 à 255.
> je voudrait que les resultat soit en meme temps copier sur le
> fichier.ini
> (est ce deja possible).
> merci d'avance
>
> "Patrice Henrio" a écrit :
>
>> Déjà remplace tous les
>>
>> If <var> = true then
>>
>> par
>>
>> If <var> then
>>
>> ça ne change pas le fonctionnement mais c'est plus propre (discussion
>> déjà
>> tenue sur ce forum).
>>
>> Pour ton problème, il me semble qu'un tableau de 28 entiers (voire
>> byte)
>> ferait l'affaire : dans ce tableau je mets les troisième nombre de
>> l'adresse
>> (puisque tu les connais)
>>
>> Donc T(1 to 28) as byte
>>
>> Ensuite, au lieu d'écrire une boucle do, tu peux utiliser un for next
>> For I=1 to 28
>> adr3=T(I)
>> Next I
>>
>> > If Option4.Value = True Then
>> > 'je tape le premier champ
>> > Adr2Start = 22
>> > Adr2End = 22
>> > Adr3Start = 5
>> > Adr3End = 5
>> > Fin = 254
>> > End If
>> devient
>>
>> If Option4.Value Then
>> 'je tape le premier champ
>> Adr2Start = 22
>> Adr2End = 22
>> Adr3Start = T(1)
>> Adr3End = T(28)
>> Fin = 254
>> End If
>>
>> > Loop
>> > Adr3Start = Adr3Start + 1
>> devient
>>
>> If Option4.Value then
>> I=I+1
>> Adr3Start=T(I)
>> Else
>> Adr3Startr3Start+1
>> End If
>>
>> Quelques conseils supplémentaires, les noms des variables doivent être
>> adaptées au problème, ici adr3Start n'est l'adresse de départ mais
>> l'adresse
>> courante qui parcourt la plage de Start à End, il serait donc plus
>> judicieux
>> d'écrire adr3 tout seul, voir définr un type adr de la façon suivante
>>
>> type adresse
>> champ1 as byte
>> champ2 as byte
>> champ3 as byte
>> champ4 as byte
>> end type
>> Encore mieux un objet dont les propriétés permettraient de gérer
>> l'affichage
>> et le valeur
>> une propriété Adresse
>> AdresseIp(A as byte, B as byte, C as byte, D as byte) as double
>> AdresseIp=D+256*(C+256*(B+256*A))
>> fin
>>
>> .... etc
>>
>> "squat541" a écrit dans le
>> message
>> de
>> news:
>> > Je vous remercie tous de vous intéresser à mon cas,c presque ca sauf
>> > que
>> > je
>> > veux pouvoir les choisirs et pas aleatoire sinon c une bonne idée.je
>> > vous
>> > met
>> > le prog du bouton commande qui vous aidera a me comprendre
>> > Private Sub Command1_Click()
>> > If Command1.Caption = "Analyse" Then
>> > Command1.Caption = "Stopper"
>> > Dim Depart As Integer 'variables utilisées pour la barre
>> > Dim Fin As Integer 'de défilement
>> > Dim Iptest As String
>> > Dim Result As String
>> > Dim Adr1Start As Integer
>> > Dim Adr1End As Integer
>> > Dim Adr2Start As Integer 'variables utilisées pour les
>> > Dim Adr2End As Integer 'adresses Ip
>> > Dim Adr3Start As Integer
>> > Dim Adr3End As Integer
>> > Dim Cpt As Integer 'Utilisée pour définir le dernier champ
>> > 'de l'adresse IP
>> > '********************
>> > '* initialistaion *
>> > '********************
>> > ListView1.ListItems.Clear
>> > Depart = 0
>> > If Option1.Value = True Then
>> > Adr2Start = 0
>> > Adr2End = 255
>> > Adr3Start = 0
>> > Adr3End = 255
>> > Fin = 766
>> > End If
>> > If Option2.Value = True Then
>> > Adr2Start = Val(Text4.Text)
>> > Adr2End = Val(Text4.Text)
>> > Adr3Start = 0
>> > Adr3End = 255
>> > Fin = 510
>> > End If
>> > If Option3.Value = True Then
>> > Adr2Start = Val(Text4.Text)
>> > Adr2End = Val(Text4.Text)
>> > Adr3Start = Val(Text5.Text)
>> > Adr3End = Val(Text5.Text
>> > Fin = 254
>> > End If
>> > If Option4.Value = True Then
>> > 'je tape le premier champ
>> > Adr2Start = 22
>> > Adr2End = 22
>> > Adr3Start = 5
>> > Adr3End = 5
>> > Fin = 254
>> > End If
>> > ProgressBar1.Visible = True
>> > ProgressBar1.Max = Fin
>> > ProgressBar1.Min = Depart
>> > Do Until Adr2Start > Adr2End
>> > 'boucle correspondant au deuxième champs de l'adresse IP
>> > Do Until Adr3Start > Adr3End
>> > 'Boucle correspondant au troisième champs de l'adresse IP
>> > 'réinitialisation de cpt
>> > Cpt = 1
>> > 'Cpt = 100
>> > Do Until Cpt > 254
>> > 'boucle correspondant au quetrième champs de l'adresse IP
>> > If Command1.Caption = "Analyse" Then Exit Sub
>> > 'Définition de l'adresse IP à tester
>> > Iptest = Text3.Text + "." & Adr2Start & "." &
>> > Adr3Start
>> > & "." & Cpt
>> > DoEvents
>> > Result = Echo(Iptest)
>> > With ListView1.ListItems.Add
>> > .Text = Iptest
>> > If Result = "Failure" Then
>> > .SubItems(2) = Result
>> > DoEvents
>> > Enregistrement Iptest, False
>> > Else
>> > '.SubItems(1) =
>> > GetHostName(ConvertIp(Iptest))
>> > 'Dim test As Double
>> > 'test = CDbl(ConvertIp(Iptest))
>> > ' On Error Resume Next
>> > '.SubItems(1) >> >> > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
>> > '.SubItems(1) >> >> > gethostbyaddr(ConvertIp(Iptest),
>> > 4, AF_INET)
>> > '.SubItems(1) >> >> > GetHostName(CLng(ConvertIp(Iptest)))
>> > DoEvents
>> > '.SubItems(1) = HostName(Iptest)
>> > .SubItems(1) = GetHostNameFromIP(.Text)
>> > DoEvents
>> > Enregistrement Iptest, True
>> > End If
>> > End With
>> > Cpt = Cpt + 1
>> > Depart = Depart + 1
>> > ProgressBar1.Value = Depart
>> > Loop
>> > Adr3Start = Adr3Start + 1
>> > Loop
>> > Adr2Start = Adr2Start + 1
>> > Loop
>> >
>> > ProgressBar1.Visible = False
>> >
>> > Else
>> > ProgressBar1.Visible = False
>> > Command1.Caption = "Analyse"
>> > End If
>> >
>> > End Sub
>> >
>> > Voila mon prob ce trouve a l'option 4,je cherche a modifier le 3eme
>> > champ
>> > en
>> > lui donnant 28 valeur mais que je ne modifie pas ces 28 reseau
>> > corresponde
>> > au
>> > reseau d'une entreprise,ce sont des adresses qui ne change pas.
>> > un exemple 85.22.5.(0à255)
>> > 85.22.10.(0à255)
>> > 85.22.18.(0à255)
>> > :
>> > :
>> > je modifie seulement le troisieme champ je choisie les 28 et ca
>> > reste
>> > toujours meme.si j'explique mal dit le moi je detaillerai plus.
>> >
>> >
>> > "LE TROLL" a écrit :
>> >
>> >> Oh là mes brave:
>> >>
>> >> L'exemple indique pour le 4eme groupe IP (1, 5, 79...), et
>> >> il dit "ip mais qui NE se suivent", donc c'est bien
>> >> traitement aléatoire qu'il faut mettre dans la boucle, en
>> >> vérifiant que l'aléatoire n'a pas causé de mitoyenneté d'IP,
>> >> moi y'en a m'essayer à ce jeu:
>> >> -----------------------
>> >>
>> >> Sub cree_ip()
>> >> Dim i As Long
>> >> Dim j As Long
>> >> Dim k As Long
>> >> Dim ip(256) As Long
>> >> Dim ip_ok(30) As Long ' ip retenues
>> >> Dim hasard As Long
>> >> Dim presente As String
>> >> Dim trans As Long
>> >> '
>> >> For i = 0 To 255 ' choix des ip
>> >> ip(i) = Format(i, "000")
>> >> Next i
>> >> Randomize
>> >> hasard = 0
>> >> '
>> >> For i = 1 To 30
>> >> Do While ip(hasard) = 256 ' = déjà choisit
>> >> hasard = Int((255 - 0 + 1) * Rnd + 0) ' pseudo
>> >> aléatoire
>> >> Loop
>> >> If hasard > 0 Then ip(hasard - 1) = 256 ' enlève - 1:
>> >> interdit mitoyenneté
>> >> ip(hasard) = 256 ' ip à ne plus sélectionner
>> >> ip_ok(i) = hasard ' ip sélectionnée
>> >> If hasard < 255 Then ip(hasard + 1) = 256 ' enlève + 1:
>> >> interdit mitoyenneté
>> >> Next i
>> >> '
>> >> For i = 1 To 30 ' tri croissant
>> >> For j = 1 To 30
>> >> For k = 1 To 30
>> >> If j = k Then Exit For
>> >> If ip_ok(j) < ip_ok(k) Then
>> >> trans = ip_ok(j)
>> >> ip_ok(j) = ip_ok(k)
>> >> ip_ok(k) = trans
>> >> Exit For
>> >> End If
>> >> Next k
>> >> Next j
>> >> Next i
>> >> '
>> >> presente = "" ' présentation
>> >> For i = 1 To 30
>> >> presente = presente & Format(ip_ok(i), "000") & vbLf
>> >> Next i
>> >> MsgBox presente, vbInformation
>> >> End Sub
>> >> -----------------------testé OK
>> >>
>> >>
>> >> "squat541" a écrit dans
>> >> le message de news:
>> >>
>> >> > salut a tous,voila j'explique,g un prog qui me liste tout
>> >> > les ip des adresses
>> >> > de classe a,b,c.
>> >> > par exemple,je tape 85.22.55. adresse de classe c,et il
>> >> > me sort tout les ip
>> >> > du reseau 85.22.55. (de 0 a 255).
>> >> > je voudrais afficher seulement 30 ip mais qui ne suivent
>> >> > pas85.22.55.(1,5 ,
>> >> > 79,101, 103,119.....),quel boucle je dois utiliser pour
>> >> > faire cela vu que ce
>> >> > n'est pas des chiffres qui se suivent?
>> >> > merci de repondre
>> >>
>> >>
>> >>
>>
>>
>>
Excusez moi patrice c pas ce que je dois faire,on ma mal expliquer le but
de
l'exercie
c un peu compliquer a expliquer mais je vais faire du mieu que je peu
g un prog qui liste des adresse ip d'un reseau et de plusieur si je le
souhaite,la liste des adresse ip de chaque reseau apparait sur une
listview.
g creer un un fichier.ini ou g mis les numero ip.
voila ce que je voudrais faire
creer une option manu/auto dans le fichier ini
en auto il a 28 reseau a chercher et il affiche le resultat dans un
fichier.txt
en manu je choisi 1 ou plusieur reseau parmi les 28 et j'affiche le
resultat
aussi
le but de l'exercice est qu'une personne qui ne connait rien en
programmation puisse pouvoir modifier les adresses s'il le desire sans
qu'il
est a toujer a la prog
par exemple si une adresse d'un reseau change il peut la modifier ds le
fichier.ini tout simplement
voila le prog sur la command1 qui aidera a mieux comprendre
on ma deja aider dans le forum sur ce prog
dans fichier texte Private Sub Command1_Click()
If Command1.Caption = "Analyse" Then
Command1.Caption = "Stopper"
Dim Depart As Integer 'variables utilisées pour la barre
Dim Fin As Integer 'de défilement
Dim Iptest As String
Dim Result As String
Dim Adr1Start As Integer
Dim Adr1End As Integer
Dim Adr2Start As Integer 'variables utilisées pour les
Dim Adr2End As Integer 'adresses Ip
Dim Adr3Start As Integer
Dim Adr3End As Integer
Dim Cpt As Integer 'Utilisée pour définir le dernier champ
'de l'adresse IP
Dim T(1 To 3) As Byte
'g choisi 3 au lieu de 28 reseau pou alleger le prog
T(1) = 5
T(2) = 22
T(3) = 23
'********************
'* initialistaion *
'********************
ListView1.ListItems.Clear
Depart = 0
If Option1.Value Then
Adr2Start = 0
Adr2End = 255
Adr3Start = 0
Adr3End = 255
Fin = 766
End If
If Option2.Value Then
Adr2Start = Val(Text4.Text)
Adr2End = Val(Text4.Text)
Adr3Start = 0
Adr3End = 255
Fin = 510
End If
If Option3.Value Then
Adr2Start = Val(Text4.Text)
Adr2End = Val(Text4.Text)
Adr3Start = Val(Text5.Text)
Adr3End = Val(Text5.Text)
Fin = 254
End If
If Option4.Value Then
Adr2Start = 22
Adr2End = 22
Adr3Start = T(1)
Adr3End = T(3)
Fin = 766
End If
ProgressBar1.Visible = True
ProgressBar1.Max = Fin
ProgressBar1.Min = Depart
For i = 1 To 3
Do Until Adr2Start > Adr2End
'boucle correspondant au deuxième champs de l'adresse IP
Do Until Adr3Start > Adr3End
'Boucle correspondant au troisième champs de l'adresse IP
'réinitialisation de cpt
Cpt = 1
'Cpt = 100
Do Until Cpt > 254
'boucle correspondant au quetrième champs de l'adresse IP
If Command1.Caption = "Analyse" Then Exit Sub
'Définition de l'adresse IP à tester
Iptest = Text3.Text + "." & Adr2Start & "." & Adr3Start
& "." & Cpt
DoEvents
Result = Echo(Iptest)
With ListView1.ListItems.Add
.Text = Iptest
If Result = "Failure" Then
.SubItems(2) = Result
DoEvents
Enregistrement Iptest, False
Else
'.SubItems(1) = GetHostName(ConvertIp(Iptest))
'Dim test As Double
'test = CDbl(ConvertIp(Iptest))
' On Error Resume Next
'.SubItems(1) > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
'.SubItems(1) =
gethostbyaddr(ConvertIp(Iptest),
4, AF_INET)
'.SubItems(1) > GetHostName(CLng(ConvertIp(Iptest)))
DoEvents
'.SubItems(1) = HostName(Iptest)
.SubItems(1) = GetHostNameFromIP(.Text)
DoEvents
Enregistrement Iptest, True
End If
End With
Cpt = Cpt + 1
Depart = Depart + 1
ProgressBar1.Value = Depart
Loop
'Option4
i = i + 1
If i = 4 Then
Command1.Caption = "Analyse"
End If
Adr3Start = T(i)
Loop
Adr2Start = Adr2Start + 1
Loop
ProgressBar1.Visible = False
Next i
Else
ProgressBar1.Visible = False
Command1.Caption = "Analyse"
End If
End Sub
"Patrice Henrio" a écrit :
Il suffit de connaître la syntaxe des fichiers ini qui sont des fichiers
textes.
Donc pour la suite tu ouvres un fichier texte truc.ini en écriture et tu
ajoutes tes données sous forme de texte en faisant attention à la façon
dont
tu veux que ce soit compris.
En fait à partir du moment où tu peux les afficher à l'écran, tu peux les
écrire dans un fichier texte.
"squat541" <squat541@discussions.microsoft.com> a écrit dans le message
de
news: 2E9BC2F9-4A98-409E-B9F0-1335C7C9C8F0@microsoft.com...
> Merci Patrice tu ma bien orienté g reussi grace a toi,mais g une autre
> question maintenant que g les resultat que souhaité je voudrais les
> mettre
> dans un fichier.ini
> exemple: g la liste des 28 sous reseau et lorsque je clic sur un sous
> reseau
> il m'affiche les adresses de 0 à 255.
> je voudrait que les resultat soit en meme temps copier sur le
> fichier.ini
> (est ce deja possible).
> merci d'avance
>
> "Patrice Henrio" a écrit :
>
>> Déjà remplace tous les
>>
>> If <var> = true then
>>
>> par
>>
>> If <var> then
>>
>> ça ne change pas le fonctionnement mais c'est plus propre (discussion
>> déjà
>> tenue sur ce forum).
>>
>> Pour ton problème, il me semble qu'un tableau de 28 entiers (voire
>> byte)
>> ferait l'affaire : dans ce tableau je mets les troisième nombre de
>> l'adresse
>> (puisque tu les connais)
>>
>> Donc T(1 to 28) as byte
>>
>> Ensuite, au lieu d'écrire une boucle do, tu peux utiliser un for next
>> For I=1 to 28
>> adr3=T(I)
>> Next I
>>
>> > If Option4.Value = True Then
>> > 'je tape le premier champ
>> > Adr2Start = 22
>> > Adr2End = 22
>> > Adr3Start = 5
>> > Adr3End = 5
>> > Fin = 254
>> > End If
>> devient
>>
>> If Option4.Value Then
>> 'je tape le premier champ
>> Adr2Start = 22
>> Adr2End = 22
>> Adr3Start = T(1)
>> Adr3End = T(28)
>> Fin = 254
>> End If
>>
>> > Loop
>> > Adr3Start = Adr3Start + 1
>> devient
>>
>> If Option4.Value then
>> I=I+1
>> Adr3Start=T(I)
>> Else
>> Adr3Startr3Start+1
>> End If
>>
>> Quelques conseils supplémentaires, les noms des variables doivent être
>> adaptées au problème, ici adr3Start n'est l'adresse de départ mais
>> l'adresse
>> courante qui parcourt la plage de Start à End, il serait donc plus
>> judicieux
>> d'écrire adr3 tout seul, voir définr un type adr de la façon suivante
>>
>> type adresse
>> champ1 as byte
>> champ2 as byte
>> champ3 as byte
>> champ4 as byte
>> end type
>> Encore mieux un objet dont les propriétés permettraient de gérer
>> l'affichage
>> et le valeur
>> une propriété Adresse
>> AdresseIp(A as byte, B as byte, C as byte, D as byte) as double
>> AdresseIp=D+256*(C+256*(B+256*A))
>> fin
>>
>> .... etc
>>
>> "squat541" <squat541@discussions.microsoft.com> a écrit dans le
>> message
>> de
>> news: 43705B1D-8FFA-495A-BE68-114BD2BE5859@microsoft.com...
>> > Je vous remercie tous de vous intéresser à mon cas,c presque ca sauf
>> > que
>> > je
>> > veux pouvoir les choisirs et pas aleatoire sinon c une bonne idée.je
>> > vous
>> > met
>> > le prog du bouton commande qui vous aidera a me comprendre
>> > Private Sub Command1_Click()
>> > If Command1.Caption = "Analyse" Then
>> > Command1.Caption = "Stopper"
>> > Dim Depart As Integer 'variables utilisées pour la barre
>> > Dim Fin As Integer 'de défilement
>> > Dim Iptest As String
>> > Dim Result As String
>> > Dim Adr1Start As Integer
>> > Dim Adr1End As Integer
>> > Dim Adr2Start As Integer 'variables utilisées pour les
>> > Dim Adr2End As Integer 'adresses Ip
>> > Dim Adr3Start As Integer
>> > Dim Adr3End As Integer
>> > Dim Cpt As Integer 'Utilisée pour définir le dernier champ
>> > 'de l'adresse IP
>> > '********************
>> > '* initialistaion *
>> > '********************
>> > ListView1.ListItems.Clear
>> > Depart = 0
>> > If Option1.Value = True Then
>> > Adr2Start = 0
>> > Adr2End = 255
>> > Adr3Start = 0
>> > Adr3End = 255
>> > Fin = 766
>> > End If
>> > If Option2.Value = True Then
>> > Adr2Start = Val(Text4.Text)
>> > Adr2End = Val(Text4.Text)
>> > Adr3Start = 0
>> > Adr3End = 255
>> > Fin = 510
>> > End If
>> > If Option3.Value = True Then
>> > Adr2Start = Val(Text4.Text)
>> > Adr2End = Val(Text4.Text)
>> > Adr3Start = Val(Text5.Text)
>> > Adr3End = Val(Text5.Text
>> > Fin = 254
>> > End If
>> > If Option4.Value = True Then
>> > 'je tape le premier champ
>> > Adr2Start = 22
>> > Adr2End = 22
>> > Adr3Start = 5
>> > Adr3End = 5
>> > Fin = 254
>> > End If
>> > ProgressBar1.Visible = True
>> > ProgressBar1.Max = Fin
>> > ProgressBar1.Min = Depart
>> > Do Until Adr2Start > Adr2End
>> > 'boucle correspondant au deuxième champs de l'adresse IP
>> > Do Until Adr3Start > Adr3End
>> > 'Boucle correspondant au troisième champs de l'adresse IP
>> > 'réinitialisation de cpt
>> > Cpt = 1
>> > 'Cpt = 100
>> > Do Until Cpt > 254
>> > 'boucle correspondant au quetrième champs de l'adresse IP
>> > If Command1.Caption = "Analyse" Then Exit Sub
>> > 'Définition de l'adresse IP à tester
>> > Iptest = Text3.Text + "." & Adr2Start & "." &
>> > Adr3Start
>> > & "." & Cpt
>> > DoEvents
>> > Result = Echo(Iptest)
>> > With ListView1.ListItems.Add
>> > .Text = Iptest
>> > If Result = "Failure" Then
>> > .SubItems(2) = Result
>> > DoEvents
>> > Enregistrement Iptest, False
>> > Else
>> > '.SubItems(1) =
>> > GetHostName(ConvertIp(Iptest))
>> > 'Dim test As Double
>> > 'test = CDbl(ConvertIp(Iptest))
>> > ' On Error Resume Next
>> > '.SubItems(1) >> >> > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
>> > '.SubItems(1) >> >> > gethostbyaddr(ConvertIp(Iptest),
>> > 4, AF_INET)
>> > '.SubItems(1) >> >> > GetHostName(CLng(ConvertIp(Iptest)))
>> > DoEvents
>> > '.SubItems(1) = HostName(Iptest)
>> > .SubItems(1) = GetHostNameFromIP(.Text)
>> > DoEvents
>> > Enregistrement Iptest, True
>> > End If
>> > End With
>> > Cpt = Cpt + 1
>> > Depart = Depart + 1
>> > ProgressBar1.Value = Depart
>> > Loop
>> > Adr3Start = Adr3Start + 1
>> > Loop
>> > Adr2Start = Adr2Start + 1
>> > Loop
>> >
>> > ProgressBar1.Visible = False
>> >
>> > Else
>> > ProgressBar1.Visible = False
>> > Command1.Caption = "Analyse"
>> > End If
>> >
>> > End Sub
>> >
>> > Voila mon prob ce trouve a l'option 4,je cherche a modifier le 3eme
>> > champ
>> > en
>> > lui donnant 28 valeur mais que je ne modifie pas ces 28 reseau
>> > corresponde
>> > au
>> > reseau d'une entreprise,ce sont des adresses qui ne change pas.
>> > un exemple 85.22.5.(0à255)
>> > 85.22.10.(0à255)
>> > 85.22.18.(0à255)
>> > :
>> > :
>> > je modifie seulement le troisieme champ je choisie les 28 et ca
>> > reste
>> > toujours meme.si j'explique mal dit le moi je detaillerai plus.
>> >
>> >
>> > "LE TROLL" a écrit :
>> >
>> >> Oh là mes brave:
>> >>
>> >> L'exemple indique pour le 4eme groupe IP (1, 5, 79...), et
>> >> il dit "ip mais qui NE se suivent", donc c'est bien
>> >> traitement aléatoire qu'il faut mettre dans la boucle, en
>> >> vérifiant que l'aléatoire n'a pas causé de mitoyenneté d'IP,
>> >> moi y'en a m'essayer à ce jeu:
>> >> -----------------------
>> >>
>> >> Sub cree_ip()
>> >> Dim i As Long
>> >> Dim j As Long
>> >> Dim k As Long
>> >> Dim ip(256) As Long
>> >> Dim ip_ok(30) As Long ' ip retenues
>> >> Dim hasard As Long
>> >> Dim presente As String
>> >> Dim trans As Long
>> >> '
>> >> For i = 0 To 255 ' choix des ip
>> >> ip(i) = Format(i, "000")
>> >> Next i
>> >> Randomize
>> >> hasard = 0
>> >> '
>> >> For i = 1 To 30
>> >> Do While ip(hasard) = 256 ' = déjà choisit
>> >> hasard = Int((255 - 0 + 1) * Rnd + 0) ' pseudo
>> >> aléatoire
>> >> Loop
>> >> If hasard > 0 Then ip(hasard - 1) = 256 ' enlève - 1:
>> >> interdit mitoyenneté
>> >> ip(hasard) = 256 ' ip à ne plus sélectionner
>> >> ip_ok(i) = hasard ' ip sélectionnée
>> >> If hasard < 255 Then ip(hasard + 1) = 256 ' enlève + 1:
>> >> interdit mitoyenneté
>> >> Next i
>> >> '
>> >> For i = 1 To 30 ' tri croissant
>> >> For j = 1 To 30
>> >> For k = 1 To 30
>> >> If j = k Then Exit For
>> >> If ip_ok(j) < ip_ok(k) Then
>> >> trans = ip_ok(j)
>> >> ip_ok(j) = ip_ok(k)
>> >> ip_ok(k) = trans
>> >> Exit For
>> >> End If
>> >> Next k
>> >> Next j
>> >> Next i
>> >> '
>> >> presente = "" ' présentation
>> >> For i = 1 To 30
>> >> presente = presente & Format(ip_ok(i), "000") & vbLf
>> >> Next i
>> >> MsgBox presente, vbInformation
>> >> End Sub
>> >> -----------------------testé OK
>> >>
>> >>
>> >> "squat541" <squat541@discussions.microsoft.com> a écrit dans
>> >> le message de news:
>> >> EDEBDB18-FF41-40BD-ADD6-95807F914450@microsoft.com...
>> >> > salut a tous,voila j'explique,g un prog qui me liste tout
>> >> > les ip des adresses
>> >> > de classe a,b,c.
>> >> > par exemple,je tape 85.22.55. adresse de classe c,et il
>> >> > me sort tout les ip
>> >> > du reseau 85.22.55. (de 0 a 255).
>> >> > je voudrais afficher seulement 30 ip mais qui ne suivent
>> >> > pas85.22.55.(1,5 ,
>> >> > 79,101, 103,119.....),quel boucle je dois utiliser pour
>> >> > faire cela vu que ce
>> >> > n'est pas des chiffres qui se suivent?
>> >> > merci de repondre
>> >>
>> >>
>> >>
>>
>>
>>
Excusez moi patrice c pas ce que je dois faire,on ma mal expliquer le but
de
l'exercie
c un peu compliquer a expliquer mais je vais faire du mieu que je peu
g un prog qui liste des adresse ip d'un reseau et de plusieur si je le
souhaite,la liste des adresse ip de chaque reseau apparait sur une
listview.
g creer un un fichier.ini ou g mis les numero ip.
voila ce que je voudrais faire
creer une option manu/auto dans le fichier ini
en auto il a 28 reseau a chercher et il affiche le resultat dans un
fichier.txt
en manu je choisi 1 ou plusieur reseau parmi les 28 et j'affiche le
resultat
aussi
le but de l'exercice est qu'une personne qui ne connait rien en
programmation puisse pouvoir modifier les adresses s'il le desire sans
qu'il
est a toujer a la prog
par exemple si une adresse d'un reseau change il peut la modifier ds le
fichier.ini tout simplement
voila le prog sur la command1 qui aidera a mieux comprendre
on ma deja aider dans le forum sur ce prog
dans fichier texte Private Sub Command1_Click()
If Command1.Caption = "Analyse" Then
Command1.Caption = "Stopper"
Dim Depart As Integer 'variables utilisées pour la barre
Dim Fin As Integer 'de défilement
Dim Iptest As String
Dim Result As String
Dim Adr1Start As Integer
Dim Adr1End As Integer
Dim Adr2Start As Integer 'variables utilisées pour les
Dim Adr2End As Integer 'adresses Ip
Dim Adr3Start As Integer
Dim Adr3End As Integer
Dim Cpt As Integer 'Utilisée pour définir le dernier champ
'de l'adresse IP
Dim T(1 To 3) As Byte
'g choisi 3 au lieu de 28 reseau pou alleger le prog
T(1) = 5
T(2) = 22
T(3) = 23
'********************
'* initialistaion *
'********************
ListView1.ListItems.Clear
Depart = 0
If Option1.Value Then
Adr2Start = 0
Adr2End = 255
Adr3Start = 0
Adr3End = 255
Fin = 766
End If
If Option2.Value Then
Adr2Start = Val(Text4.Text)
Adr2End = Val(Text4.Text)
Adr3Start = 0
Adr3End = 255
Fin = 510
End If
If Option3.Value Then
Adr2Start = Val(Text4.Text)
Adr2End = Val(Text4.Text)
Adr3Start = Val(Text5.Text)
Adr3End = Val(Text5.Text)
Fin = 254
End If
If Option4.Value Then
Adr2Start = 22
Adr2End = 22
Adr3Start = T(1)
Adr3End = T(3)
Fin = 766
End If
ProgressBar1.Visible = True
ProgressBar1.Max = Fin
ProgressBar1.Min = Depart
For i = 1 To 3
Do Until Adr2Start > Adr2End
'boucle correspondant au deuxième champs de l'adresse IP
Do Until Adr3Start > Adr3End
'Boucle correspondant au troisième champs de l'adresse IP
'réinitialisation de cpt
Cpt = 1
'Cpt = 100
Do Until Cpt > 254
'boucle correspondant au quetrième champs de l'adresse IP
If Command1.Caption = "Analyse" Then Exit Sub
'Définition de l'adresse IP à tester
Iptest = Text3.Text + "." & Adr2Start & "." & Adr3Start
& "." & Cpt
DoEvents
Result = Echo(Iptest)
With ListView1.ListItems.Add
.Text = Iptest
If Result = "Failure" Then
.SubItems(2) = Result
DoEvents
Enregistrement Iptest, False
Else
'.SubItems(1) = GetHostName(ConvertIp(Iptest))
'Dim test As Double
'test = CDbl(ConvertIp(Iptest))
' On Error Resume Next
'.SubItems(1) > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
'.SubItems(1) =
gethostbyaddr(ConvertIp(Iptest),
4, AF_INET)
'.SubItems(1) > GetHostName(CLng(ConvertIp(Iptest)))
DoEvents
'.SubItems(1) = HostName(Iptest)
.SubItems(1) = GetHostNameFromIP(.Text)
DoEvents
Enregistrement Iptest, True
End If
End With
Cpt = Cpt + 1
Depart = Depart + 1
ProgressBar1.Value = Depart
Loop
'Option4
i = i + 1
If i = 4 Then
Command1.Caption = "Analyse"
End If
Adr3Start = T(i)
Loop
Adr2Start = Adr2Start + 1
Loop
ProgressBar1.Visible = False
Next i
Else
ProgressBar1.Visible = False
Command1.Caption = "Analyse"
End If
End Sub
"Patrice Henrio" a écrit :Il suffit de connaître la syntaxe des fichiers ini qui sont des fichiers
textes.
Donc pour la suite tu ouvres un fichier texte truc.ini en écriture et tu
ajoutes tes données sous forme de texte en faisant attention à la façon
dont
tu veux que ce soit compris.
En fait à partir du moment où tu peux les afficher à l'écran, tu peux les
écrire dans un fichier texte.
"squat541" a écrit dans le message
de
news:
> Merci Patrice tu ma bien orienté g reussi grace a toi,mais g une autre
> question maintenant que g les resultat que souhaité je voudrais les
> mettre
> dans un fichier.ini
> exemple: g la liste des 28 sous reseau et lorsque je clic sur un sous
> reseau
> il m'affiche les adresses de 0 à 255.
> je voudrait que les resultat soit en meme temps copier sur le
> fichier.ini
> (est ce deja possible).
> merci d'avance
>
> "Patrice Henrio" a écrit :
>
>> Déjà remplace tous les
>>
>> If <var> = true then
>>
>> par
>>
>> If <var> then
>>
>> ça ne change pas le fonctionnement mais c'est plus propre (discussion
>> déjà
>> tenue sur ce forum).
>>
>> Pour ton problème, il me semble qu'un tableau de 28 entiers (voire
>> byte)
>> ferait l'affaire : dans ce tableau je mets les troisième nombre de
>> l'adresse
>> (puisque tu les connais)
>>
>> Donc T(1 to 28) as byte
>>
>> Ensuite, au lieu d'écrire une boucle do, tu peux utiliser un for next
>> For I=1 to 28
>> adr3=T(I)
>> Next I
>>
>> > If Option4.Value = True Then
>> > 'je tape le premier champ
>> > Adr2Start = 22
>> > Adr2End = 22
>> > Adr3Start = 5
>> > Adr3End = 5
>> > Fin = 254
>> > End If
>> devient
>>
>> If Option4.Value Then
>> 'je tape le premier champ
>> Adr2Start = 22
>> Adr2End = 22
>> Adr3Start = T(1)
>> Adr3End = T(28)
>> Fin = 254
>> End If
>>
>> > Loop
>> > Adr3Start = Adr3Start + 1
>> devient
>>
>> If Option4.Value then
>> I=I+1
>> Adr3Start=T(I)
>> Else
>> Adr3Startr3Start+1
>> End If
>>
>> Quelques conseils supplémentaires, les noms des variables doivent être
>> adaptées au problème, ici adr3Start n'est l'adresse de départ mais
>> l'adresse
>> courante qui parcourt la plage de Start à End, il serait donc plus
>> judicieux
>> d'écrire adr3 tout seul, voir définr un type adr de la façon suivante
>>
>> type adresse
>> champ1 as byte
>> champ2 as byte
>> champ3 as byte
>> champ4 as byte
>> end type
>> Encore mieux un objet dont les propriétés permettraient de gérer
>> l'affichage
>> et le valeur
>> une propriété Adresse
>> AdresseIp(A as byte, B as byte, C as byte, D as byte) as double
>> AdresseIp=D+256*(C+256*(B+256*A))
>> fin
>>
>> .... etc
>>
>> "squat541" a écrit dans le
>> message
>> de
>> news:
>> > Je vous remercie tous de vous intéresser à mon cas,c presque ca sauf
>> > que
>> > je
>> > veux pouvoir les choisirs et pas aleatoire sinon c une bonne idée.je
>> > vous
>> > met
>> > le prog du bouton commande qui vous aidera a me comprendre
>> > Private Sub Command1_Click()
>> > If Command1.Caption = "Analyse" Then
>> > Command1.Caption = "Stopper"
>> > Dim Depart As Integer 'variables utilisées pour la barre
>> > Dim Fin As Integer 'de défilement
>> > Dim Iptest As String
>> > Dim Result As String
>> > Dim Adr1Start As Integer
>> > Dim Adr1End As Integer
>> > Dim Adr2Start As Integer 'variables utilisées pour les
>> > Dim Adr2End As Integer 'adresses Ip
>> > Dim Adr3Start As Integer
>> > Dim Adr3End As Integer
>> > Dim Cpt As Integer 'Utilisée pour définir le dernier champ
>> > 'de l'adresse IP
>> > '********************
>> > '* initialistaion *
>> > '********************
>> > ListView1.ListItems.Clear
>> > Depart = 0
>> > If Option1.Value = True Then
>> > Adr2Start = 0
>> > Adr2End = 255
>> > Adr3Start = 0
>> > Adr3End = 255
>> > Fin = 766
>> > End If
>> > If Option2.Value = True Then
>> > Adr2Start = Val(Text4.Text)
>> > Adr2End = Val(Text4.Text)
>> > Adr3Start = 0
>> > Adr3End = 255
>> > Fin = 510
>> > End If
>> > If Option3.Value = True Then
>> > Adr2Start = Val(Text4.Text)
>> > Adr2End = Val(Text4.Text)
>> > Adr3Start = Val(Text5.Text)
>> > Adr3End = Val(Text5.Text
>> > Fin = 254
>> > End If
>> > If Option4.Value = True Then
>> > 'je tape le premier champ
>> > Adr2Start = 22
>> > Adr2End = 22
>> > Adr3Start = 5
>> > Adr3End = 5
>> > Fin = 254
>> > End If
>> > ProgressBar1.Visible = True
>> > ProgressBar1.Max = Fin
>> > ProgressBar1.Min = Depart
>> > Do Until Adr2Start > Adr2End
>> > 'boucle correspondant au deuxième champs de l'adresse IP
>> > Do Until Adr3Start > Adr3End
>> > 'Boucle correspondant au troisième champs de l'adresse IP
>> > 'réinitialisation de cpt
>> > Cpt = 1
>> > 'Cpt = 100
>> > Do Until Cpt > 254
>> > 'boucle correspondant au quetrième champs de l'adresse IP
>> > If Command1.Caption = "Analyse" Then Exit Sub
>> > 'Définition de l'adresse IP à tester
>> > Iptest = Text3.Text + "." & Adr2Start & "." &
>> > Adr3Start
>> > & "." & Cpt
>> > DoEvents
>> > Result = Echo(Iptest)
>> > With ListView1.ListItems.Add
>> > .Text = Iptest
>> > If Result = "Failure" Then
>> > .SubItems(2) = Result
>> > DoEvents
>> > Enregistrement Iptest, False
>> > Else
>> > '.SubItems(1) =
>> > GetHostName(ConvertIp(Iptest))
>> > 'Dim test As Double
>> > 'test = CDbl(ConvertIp(Iptest))
>> > ' On Error Resume Next
>> > '.SubItems(1) >> >> > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
>> > '.SubItems(1) >> >> > gethostbyaddr(ConvertIp(Iptest),
>> > 4, AF_INET)
>> > '.SubItems(1) >> >> > GetHostName(CLng(ConvertIp(Iptest)))
>> > DoEvents
>> > '.SubItems(1) = HostName(Iptest)
>> > .SubItems(1) = GetHostNameFromIP(.Text)
>> > DoEvents
>> > Enregistrement Iptest, True
>> > End If
>> > End With
>> > Cpt = Cpt + 1
>> > Depart = Depart + 1
>> > ProgressBar1.Value = Depart
>> > Loop
>> > Adr3Start = Adr3Start + 1
>> > Loop
>> > Adr2Start = Adr2Start + 1
>> > Loop
>> >
>> > ProgressBar1.Visible = False
>> >
>> > Else
>> > ProgressBar1.Visible = False
>> > Command1.Caption = "Analyse"
>> > End If
>> >
>> > End Sub
>> >
>> > Voila mon prob ce trouve a l'option 4,je cherche a modifier le 3eme
>> > champ
>> > en
>> > lui donnant 28 valeur mais que je ne modifie pas ces 28 reseau
>> > corresponde
>> > au
>> > reseau d'une entreprise,ce sont des adresses qui ne change pas.
>> > un exemple 85.22.5.(0à255)
>> > 85.22.10.(0à255)
>> > 85.22.18.(0à255)
>> > :
>> > :
>> > je modifie seulement le troisieme champ je choisie les 28 et ca
>> > reste
>> > toujours meme.si j'explique mal dit le moi je detaillerai plus.
>> >
>> >
>> > "LE TROLL" a écrit :
>> >
>> >> Oh là mes brave:
>> >>
>> >> L'exemple indique pour le 4eme groupe IP (1, 5, 79...), et
>> >> il dit "ip mais qui NE se suivent", donc c'est bien
>> >> traitement aléatoire qu'il faut mettre dans la boucle, en
>> >> vérifiant que l'aléatoire n'a pas causé de mitoyenneté d'IP,
>> >> moi y'en a m'essayer à ce jeu:
>> >> -----------------------
>> >>
>> >> Sub cree_ip()
>> >> Dim i As Long
>> >> Dim j As Long
>> >> Dim k As Long
>> >> Dim ip(256) As Long
>> >> Dim ip_ok(30) As Long ' ip retenues
>> >> Dim hasard As Long
>> >> Dim presente As String
>> >> Dim trans As Long
>> >> '
>> >> For i = 0 To 255 ' choix des ip
>> >> ip(i) = Format(i, "000")
>> >> Next i
>> >> Randomize
>> >> hasard = 0
>> >> '
>> >> For i = 1 To 30
>> >> Do While ip(hasard) = 256 ' = déjà choisit
>> >> hasard = Int((255 - 0 + 1) * Rnd + 0) ' pseudo
>> >> aléatoire
>> >> Loop
>> >> If hasard > 0 Then ip(hasard - 1) = 256 ' enlève - 1:
>> >> interdit mitoyenneté
>> >> ip(hasard) = 256 ' ip à ne plus sélectionner
>> >> ip_ok(i) = hasard ' ip sélectionnée
>> >> If hasard < 255 Then ip(hasard + 1) = 256 ' enlève + 1:
>> >> interdit mitoyenneté
>> >> Next i
>> >> '
>> >> For i = 1 To 30 ' tri croissant
>> >> For j = 1 To 30
>> >> For k = 1 To 30
>> >> If j = k Then Exit For
>> >> If ip_ok(j) < ip_ok(k) Then
>> >> trans = ip_ok(j)
>> >> ip_ok(j) = ip_ok(k)
>> >> ip_ok(k) = trans
>> >> Exit For
>> >> End If
>> >> Next k
>> >> Next j
>> >> Next i
>> >> '
>> >> presente = "" ' présentation
>> >> For i = 1 To 30
>> >> presente = presente & Format(ip_ok(i), "000") & vbLf
>> >> Next i
>> >> MsgBox presente, vbInformation
>> >> End Sub
>> >> -----------------------testé OK
>> >>
>> >>
>> >> "squat541" a écrit dans
>> >> le message de news:
>> >>
>> >> > salut a tous,voila j'explique,g un prog qui me liste tout
>> >> > les ip des adresses
>> >> > de classe a,b,c.
>> >> > par exemple,je tape 85.22.55. adresse de classe c,et il
>> >> > me sort tout les ip
>> >> > du reseau 85.22.55. (de 0 a 255).
>> >> > je voudrais afficher seulement 30 ip mais qui ne suivent
>> >> > pas85.22.55.(1,5 ,
>> >> > 79,101, 103,119.....),quel boucle je dois utiliser pour
>> >> > faire cela vu que ce
>> >> > n'est pas des chiffres qui se suivent?
>> >> > merci de repondre
>> >>
>> >>
>> >>
>>
>>
>>
En fait, si je comprends bien il s'agit surtout de faire un fichier texte
contenant des adresses.
Ce fichier peut être en lecture pour obtenir une liste d'adresse ou en
écriture pour récupérer les adresses qui fonctionnent et les écrire dans le
fichier de façon à ce que l'on ait pas cela à faire à chaque fois.
Donc dans ta procédure enregistrement(adresse, booléen) tu rajoutes (si j'ai
bien compris) une ligne write #1,Iptest
Bien entendu il faut d'abord ouvrir le fichier en écriture
Dans l'initialisation
au début
Open Chemin & "ADRESSES.DAT" For Output As #1
Juste avant end sub
Close #1
Envoies-moi ta procédure enregistrement pour voir comment intégrer le write
#1
Ensuite en lisant le fichier texte, tu peux créer le tableau
Il y a même encore plus simple puisqu'un tableau de byte se lit en une fois
avec un fichier ouvert en Binary.
Exemple
Public Function TableauDePoints(ByVal Nom As String) As tPointPlan()
'lit le tableau des points du globe servant à décrire les limites des zones
Dim P As tPointPlan, T() As tPointPlan
Open Chemin & Nom & ".PTS" For Binary As #1
ReDim T(1 To LOF(1) / Len(P))
Get 1, , T
Close #1
TableauDePoints = T
Erase T
End Function
Le type tPointPlan est comme son nom l'indique un type avec deux champs
réels. Le contenu du fichier est lu directement dans le tableau.
Dans ton cas, supposons que seul le troisième nombre soit important dans ce
cas
Public Function AdressesValides(Nom as string) as Byte()
'Lit le tableau des adresses valides
Dim P as byte, T() as Byte
Open Chemin & Nom for Binary as #1
Redim T(1 to Lof(1)/len(P))
Get 1,,T
AdressesValides=T
Erase T
End Function
Comme ça tu n'as même pas besoin de savoir au départ combien il y a
d'adresses valides.
J'espère que j'ai été clair
"squat541" a écrit dans le message de
news:
> Excusez moi patrice c pas ce que je dois faire,on ma mal expliquer le but
> de
> l'exercie
> c un peu compliquer a expliquer mais je vais faire du mieu que je peu
> g un prog qui liste des adresse ip d'un reseau et de plusieur si je le
> souhaite,la liste des adresse ip de chaque reseau apparait sur une
> listview.
> g creer un un fichier.ini ou g mis les numero ip.
> voila ce que je voudrais faire
> creer une option manu/auto dans le fichier ini
> en auto il a 28 reseau a chercher et il affiche le resultat dans un
> fichier.txt
> en manu je choisi 1 ou plusieur reseau parmi les 28 et j'affiche le
> resultat
> aussi
> le but de l'exercice est qu'une personne qui ne connait rien en
> programmation puisse pouvoir modifier les adresses s'il le desire sans
> qu'il
> est a toujer a la prog
> par exemple si une adresse d'un reseau change il peut la modifier ds le
> fichier.ini tout simplement
> voila le prog sur la command1 qui aidera a mieux comprendre
> on ma deja aider dans le forum sur ce prog
>
> dans fichier texte Private Sub Command1_Click()
> If Command1.Caption = "Analyse" Then
>
> Command1.Caption = "Stopper"
>
> Dim Depart As Integer 'variables utilisées pour la barre
> Dim Fin As Integer 'de défilement
> Dim Iptest As String
> Dim Result As String
> Dim Adr1Start As Integer
> Dim Adr1End As Integer
> Dim Adr2Start As Integer 'variables utilisées pour les
> Dim Adr2End As Integer 'adresses Ip
> Dim Adr3Start As Integer
> Dim Adr3End As Integer
> Dim Cpt As Integer 'Utilisée pour définir le dernier champ
> 'de l'adresse IP
> Dim T(1 To 3) As Byte
> 'g choisi 3 au lieu de 28 reseau pou alleger le prog
> T(1) = 5
> T(2) = 22
> T(3) = 23
>
>
>
> '********************
> '* initialistaion *
> '********************
>
> ListView1.ListItems.Clear
>
>
> Depart = 0
>
> If Option1.Value Then
> Adr2Start = 0
> Adr2End = 255
> Adr3Start = 0
> Adr3End = 255
>
> Fin = 766
> End If
> If Option2.Value Then
> Adr2Start = Val(Text4.Text)
> Adr2End = Val(Text4.Text)
> Adr3Start = 0
> Adr3End = 255
>
> Fin = 510
> End If
> If Option3.Value Then
> Adr2Start = Val(Text4.Text)
> Adr2End = Val(Text4.Text)
> Adr3Start = Val(Text5.Text)
> Adr3End = Val(Text5.Text)
>
> Fin = 254
> End If
> If Option4.Value Then
> Adr2Start = 22
> Adr2End = 22
> Adr3Start = T(1)
> Adr3End = T(3)
> Fin = 766
>
>
> End If
>
>
>
>
> ProgressBar1.Visible = True
> ProgressBar1.Max = Fin
> ProgressBar1.Min = Depart
>
> For i = 1 To 3
> Do Until Adr2Start > Adr2End
> 'boucle correspondant au deuxième champs de l'adresse IP
>
> Do Until Adr3Start > Adr3End
> 'Boucle correspondant au troisième champs de l'adresse IP
>
> 'réinitialisation de cpt
> Cpt = 1
> 'Cpt = 100
> Do Until Cpt > 254
> 'boucle correspondant au quetrième champs de l'adresse IP
>
> If Command1.Caption = "Analyse" Then Exit Sub
>
> 'Définition de l'adresse IP à tester
> Iptest = Text3.Text + "." & Adr2Start & "." & Adr3Start
> & "." & Cpt
> DoEvents
> Result = Echo(Iptest)
> With ListView1.ListItems.Add
> .Text = Iptest
> If Result = "Failure" Then
> .SubItems(2) = Result
> DoEvents
> Enregistrement Iptest, False
> Else
>
>
> '.SubItems(1) = GetHostName(ConvertIp(Iptest))
> 'Dim test As Double
>
> 'test = CDbl(ConvertIp(Iptest))
> ' On Error Resume Next
> '.SubItems(1) > > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
> '.SubItems(1) =
> gethostbyaddr(ConvertIp(Iptest),
> 4, AF_INET)
> '.SubItems(1) > > GetHostName(CLng(ConvertIp(Iptest)))
> DoEvents
> '.SubItems(1) = HostName(Iptest)
> .SubItems(1) = GetHostNameFromIP(.Text)
> DoEvents
> Enregistrement Iptest, True
> End If
> End With
> Cpt = Cpt + 1
> Depart = Depart + 1
> ProgressBar1.Value = Depart
> Loop
> 'Option4
> i = i + 1
> If i = 4 Then
> Command1.Caption = "Analyse"
> End If
> Adr3Start = T(i)
> Loop
> Adr2Start = Adr2Start + 1
> Loop
> ProgressBar1.Visible = False
> Next i
> Else
> ProgressBar1.Visible = False
> Command1.Caption = "Analyse"
> End If
> End Sub
>
> "Patrice Henrio" a écrit :
>
>> Il suffit de connaître la syntaxe des fichiers ini qui sont des fichiers
>> textes.
>> Donc pour la suite tu ouvres un fichier texte truc.ini en écriture et tu
>> ajoutes tes données sous forme de texte en faisant attention à la façon
>> dont
>> tu veux que ce soit compris.
>> En fait à partir du moment où tu peux les afficher à l'écran, tu peux les
>> écrire dans un fichier texte.
>>
>>
>>
>> "squat541" a écrit dans le message
>> de
>> news:
>> > Merci Patrice tu ma bien orienté g reussi grace a toi,mais g une autre
>> > question maintenant que g les resultat que souhaité je voudrais les
>> > mettre
>> > dans un fichier.ini
>> > exemple: g la liste des 28 sous reseau et lorsque je clic sur un sous
>> > reseau
>> > il m'affiche les adresses de 0 à 255.
>> > je voudrait que les resultat soit en meme temps copier sur le
>> > fichier.ini
>> > (est ce deja possible).
>> > merci d'avance
>> >
>> > "Patrice Henrio" a écrit :
>> >
>> >> Déjà remplace tous les
>> >>
>> >> If <var> = true then
>> >>
>> >> par
>> >>
>> >> If <var> then
>> >>
>> >> ça ne change pas le fonctionnement mais c'est plus propre (discussion
>> >> déjà
>> >> tenue sur ce forum).
>> >>
>> >> Pour ton problème, il me semble qu'un tableau de 28 entiers (voire
>> >> byte)
>> >> ferait l'affaire : dans ce tableau je mets les troisième nombre de
>> >> l'adresse
>> >> (puisque tu les connais)
>> >>
>> >> Donc T(1 to 28) as byte
>> >>
>> >> Ensuite, au lieu d'écrire une boucle do, tu peux utiliser un for next
>> >> For I=1 to 28
>> >> adr3=T(I)
>> >> Next I
>> >>
>> >> > If Option4.Value = True Then
>> >> > 'je tape le premier champ
>> >> > Adr2Start = 22
>> >> > Adr2End = 22
>> >> > Adr3Start = 5
>> >> > Adr3End = 5
>> >> > Fin = 254
>> >> > End If
>> >> devient
>> >>
>> >> If Option4.Value Then
>> >> 'je tape le premier champ
>> >> Adr2Start = 22
>> >> Adr2End = 22
>> >> Adr3Start = T(1)
>> >> Adr3End = T(28)
>> >> Fin = 254
>> >> End If
>> >>
>> >> > Loop
>> >> > Adr3Start = Adr3Start + 1
>> >> devient
>> >>
>> >> If Option4.Value then
>> >> I=I+1
>> >> Adr3Start=T(I)
>> >> Else
>> >> Adr3Startr3Start+1
>> >> End If
>> >>
>> >> Quelques conseils supplémentaires, les noms des variables doivent être
>> >> adaptées au problème, ici adr3Start n'est l'adresse de départ mais
>> >> l'adresse
>> >> courante qui parcourt la plage de Start à End, il serait donc plus
>> >> judicieux
>> >> d'écrire adr3 tout seul, voir définr un type adr de la façon suivante
>> >>
>> >> type adresse
>> >> champ1 as byte
>> >> champ2 as byte
>> >> champ3 as byte
>> >> champ4 as byte
>> >> end type
>> >> Encore mieux un objet dont les propriétés permettraient de gérer
>> >> l'affichage
>> >> et le valeur
>> >> une propriété Adresse
>> >> AdresseIp(A as byte, B as byte, C as byte, D as byte) as double
>> >> AdresseIp=D+256*(C+256*(B+256*A))
>> >> fin
>> >>
>> >> .... etc
>> >>
>> >> "squat541" a écrit dans le
>> >> message
>> >> de
>> >> news:
>> >> > Je vous remercie tous de vous intéresser à mon cas,c presque ca sauf
>> >> > que
>> >> > je
>> >> > veux pouvoir les choisirs et pas aleatoire sinon c une bonne idée.je
>> >> > vous
>> >> > met
>> >> > le prog du bouton commande qui vous aidera a me comprendre
>> >> > Private Sub Command1_Click()
>> >> > If Command1.Caption = "Analyse" Then
>> >> > Command1.Caption = "Stopper"
>> >> > Dim Depart As Integer 'variables utilisées pour la barre
>> >> > Dim Fin As Integer 'de défilement
>> >> > Dim Iptest As String
>> >> > Dim Result As String
>> >> > Dim Adr1Start As Integer
>> >> > Dim Adr1End As Integer
>> >> > Dim Adr2Start As Integer 'variables utilisées pour les
>> >> > Dim Adr2End As Integer 'adresses Ip
>> >> > Dim Adr3Start As Integer
>> >> > Dim Adr3End As Integer
>> >> > Dim Cpt As Integer 'Utilisée pour définir le dernier champ
>> >> > 'de l'adresse IP
>> >> > '********************
>> >> > '* initialistaion *
>> >> > '********************
>> >> > ListView1.ListItems.Clear
>> >> > Depart = 0
>> >> > If Option1.Value = True Then
>> >> > Adr2Start = 0
>> >> > Adr2End = 255
>> >> > Adr3Start = 0
>> >> > Adr3End = 255
>> >> > Fin = 766
>> >> > End If
>> >> > If Option2.Value = True Then
>> >> > Adr2Start = Val(Text4.Text)
>> >> > Adr2End = Val(Text4.Text)
>> >> > Adr3Start = 0
>> >> > Adr3End = 255
>> >> > Fin = 510
>> >> > End If
>> >> > If Option3.Value = True Then
>> >> > Adr2Start = Val(Text4.Text)
>> >> > Adr2End = Val(Text4.Text)
>> >> > Adr3Start = Val(Text5.Text)
>> >> > Adr3End = Val(Text5.Text
>> >> > Fin = 254
>> >> > End If
>> >> > If Option4.Value = True Then
>> >> > 'je tape le premier champ
>> >> > Adr2Start = 22
>> >> > Adr2End = 22
>> >> > Adr3Start = 5
>> >> > Adr3End = 5
>> >> > Fin = 254
>> >> > End If
>> >> > ProgressBar1.Visible = True
>> >> > ProgressBar1.Max = Fin
>> >> > ProgressBar1.Min = Depart
>> >> > Do Until Adr2Start > Adr2End
>> >> > 'boucle correspondant au deuxième champs de l'adresse IP
>> >> > Do Until Adr3Start > Adr3End
>> >> > 'Boucle correspondant au troisième champs de l'adresse IP
>> >> > 'réinitialisation de cpt
>> >> > Cpt = 1
>> >> > 'Cpt = 100
>> >> > Do Until Cpt > 254
>> >> > 'boucle correspondant au quetrième champs de l'adresse IP
>> >> > If Command1.Caption = "Analyse" Then Exit Sub
>> >> > 'Définition de l'adresse IP à tester
>> >> > Iptest = Text3.Text + "." & Adr2Start & "." &
>> >> > Adr3Start
>> >> > & "." & Cpt
>> >> > DoEvents
>> >> > Result = Echo(Iptest)
>> >> > With ListView1.ListItems.Add
>> >> > .Text = Iptest
>> >> > If Result = "Failure" Then
>> >> > .SubItems(2) = Result
>> >> > DoEvents
>> >> > Enregistrement Iptest, False
>> >> > Else
>> >> > '.SubItems(1) =
>> >> > GetHostName(ConvertIp(Iptest))
>> >> > 'Dim test As Double
>> >> > 'test = CDbl(ConvertIp(Iptest))
>> >> > ' On Error Resume Next
>> >> > '.SubItems(1) > >> >> > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
>> >> > '.SubItems(1) > >> >> > gethostbyaddr(ConvertIp(Iptest),
>> >> > 4, AF_INET)
>> >> > '.SubItems(1) > >> >> > GetHostName(CLng(ConvertIp(Iptest)))
>> >> > DoEvents
>> >> > '.SubItems(1) = HostName(Iptest)
>> >> > .SubItems(1) = GetHostNameFromIP(.Text)
>> >> > DoEvents
>> >> > Enregistrement Iptest, True
>> >> > End If
>> >> > End With
>> >> > Cpt = Cpt + 1
>> >> > Depart = Depart + 1
>> >> > ProgressBar1.Value = Depart
>> >> > Loop
>> >> > Adr3Start = Adr3Start + 1
>> >> > Loop
>> >> > Adr2Start = Adr2Start + 1
>> >> > Loop
>> >> >
>> >> > ProgressBar1.Visible = False
>> >> >
>> >> > Else
>> >> > ProgressBar1.Visible = False
>> >> > Command1.Caption = "Analyse"
>> >> > End If
>> >> >
>> >> > End Sub
>> >> >
>> >> > Voila mon prob ce trouve a l'option 4,je cherche a modifier le 3eme
>> >> > champ
>> >> > en
>> >> > lui donnant 28 valeur mais que je ne modifie pas ces 28 reseau
>> >> > corresponde
>> >> > au
>> >> > reseau d'une entreprise,ce sont des adresses qui ne change pas.
>> >> > un exemple 85.22.5.(0à255)
>> >> > 85.22.10.(0à255)
>> >> > 85.22.18.(0à255)
>> >> > :
>> >> > :
>> >> > je modifie seulement le troisieme champ je choisie les 28 et ca
>> >> > reste
>> >> > toujours meme.si j'explique mal dit le moi je detaillerai plus.
>> >> >
>> >> >
>> >> > "LE TROLL" a écrit :
>> >> >
>> >> >> Oh là mes brave:
>> >> >>
>> >> >> L'exemple indique pour le 4eme groupe IP (1, 5, 79...), et
>> >> >> il dit "ip mais qui NE se suivent", donc c'est bien
>> >> >> traitement aléatoire qu'il faut mettre dans la boucle, en
>> >> >> vérifiant que l'aléatoire n'a pas causé de mitoyenneté d'IP,
>> >> >> moi y'en a m'essayer à ce jeu:
>> >> >> -----------------------
>> >> >>
>> >> >> Sub cree_ip()
>> >> >> Dim i As Long
>> >> >> Dim j As Long
>> >> >> Dim k As Long
>> >> >> Dim ip(256) As Long
>> >> >> Dim ip_ok(30) As Long ' ip retenues
>> >> >> Dim hasard As Long
>> >> >> Dim presente As String
>> >> >> Dim trans As Long
>> >> >> '
>> >> >> For i = 0 To 255 ' choix des ip
>> >> >> ip(i) = Format(i, "000")
>> >> >> Next i
>> >> >> Randomize
>> >> >> hasard = 0
>> >> >> '
>> >> >> For i = 1 To 30
>> >> >> Do While ip(hasard) = 256 ' = déjà choisit
>> >> >> hasard = Int((255 - 0 + 1) * Rnd + 0) ' pseudo
>> >> >> aléatoire
>> >> >> Loop
>> >> >> If hasard > 0 Then ip(hasard - 1) = 256 ' enlève - 1:
>> >> >> interdit mitoyenneté
>> >> >> ip(hasard) = 256 ' ip à ne plus sélectionner
>> >> >> ip_ok(i) = hasard ' ip sélectionnée
>> >> >> If hasard < 255 Then ip(hasard + 1) = 256 ' enlève + 1:
>> >> >> interdit mitoyenneté
>> >> >> Next i
>> >> >> '
>> >> >> For i = 1 To 30 ' tri croissant
>> >> >> For j = 1 To 30
>> >> >> For k = 1 To 30
>> >> >> If j = k Then Exit For
>> >> >> If ip_ok(j) < ip_ok(k) Then
>> >> >> trans = ip_ok(j)
>> >> >> ip_ok(j) = ip_ok(k)
>> >> >> ip_ok(k) = trans
>> >> >> Exit For
>> >> >> End If
>> >> >> Next k
>> >> >> Next j
>> >> >> Next i
>> >> >> '
>> >> >> presente = "" ' présentation
>> >> >> For i = 1 To 30
>> >> >> presente = presente & Format(ip_ok(i), "000") & vbLf
>> >> >> Next i
>> >> >> MsgBox presente, vbInformation
>> >> >> End Sub
>> >> >> -----------------------testé OK
>> >> >>
>> >> >>
>> >> >> "squat541" a écrit dans
>> >> >> le message de news:
>> >> >>
>> >> >> > salut a tous,voila j'explique,g un prog qui me liste tout
>> >> >> > les ip des adresses
>> >> >> > de classe a,b,c.
>> >> >> > par exemple,je tape 85.22.55. adresse de classe c,et il
>> >> >> > me sort tout les ip
>> >> >> > du reseau 85.22.55. (de 0 a 255).
>> >> >> > je voudrais afficher seulement 30 ip mais qui ne suivent
>> >> >> > pas85.22.55.(1,5 ,
>> >> >> > 79,101, 103,119.....),quel boucle je dois utiliser pour
>> >> >> > faire cela vu que ce
>> >> >> > n'est pas des chiffres qui se suivent?
>> >> >> > merci de repondre
>> >> >>
>> >> >>
>> >> >>
>> >>
>> >>
>> >>
>>
>>
>>
En fait, si je comprends bien il s'agit surtout de faire un fichier texte
contenant des adresses.
Ce fichier peut être en lecture pour obtenir une liste d'adresse ou en
écriture pour récupérer les adresses qui fonctionnent et les écrire dans le
fichier de façon à ce que l'on ait pas cela à faire à chaque fois.
Donc dans ta procédure enregistrement(adresse, booléen) tu rajoutes (si j'ai
bien compris) une ligne write #1,Iptest
Bien entendu il faut d'abord ouvrir le fichier en écriture
Dans l'initialisation
au début
Open Chemin & "ADRESSES.DAT" For Output As #1
Juste avant end sub
Close #1
Envoies-moi ta procédure enregistrement pour voir comment intégrer le write
#1
Ensuite en lisant le fichier texte, tu peux créer le tableau
Il y a même encore plus simple puisqu'un tableau de byte se lit en une fois
avec un fichier ouvert en Binary.
Exemple
Public Function TableauDePoints(ByVal Nom As String) As tPointPlan()
'lit le tableau des points du globe servant à décrire les limites des zones
Dim P As tPointPlan, T() As tPointPlan
Open Chemin & Nom & ".PTS" For Binary As #1
ReDim T(1 To LOF(1) / Len(P))
Get 1, , T
Close #1
TableauDePoints = T
Erase T
End Function
Le type tPointPlan est comme son nom l'indique un type avec deux champs
réels. Le contenu du fichier est lu directement dans le tableau.
Dans ton cas, supposons que seul le troisième nombre soit important dans ce
cas
Public Function AdressesValides(Nom as string) as Byte()
'Lit le tableau des adresses valides
Dim P as byte, T() as Byte
Open Chemin & Nom for Binary as #1
Redim T(1 to Lof(1)/len(P))
Get 1,,T
AdressesValides=T
Erase T
End Function
Comme ça tu n'as même pas besoin de savoir au départ combien il y a
d'adresses valides.
J'espère que j'ai été clair
"squat541" <squat541@discussions.microsoft.com> a écrit dans le message de
news: ADF56103-1794-4B69-98A1-81CE7FE8920C@microsoft.com...
> Excusez moi patrice c pas ce que je dois faire,on ma mal expliquer le but
> de
> l'exercie
> c un peu compliquer a expliquer mais je vais faire du mieu que je peu
> g un prog qui liste des adresse ip d'un reseau et de plusieur si je le
> souhaite,la liste des adresse ip de chaque reseau apparait sur une
> listview.
> g creer un un fichier.ini ou g mis les numero ip.
> voila ce que je voudrais faire
> creer une option manu/auto dans le fichier ini
> en auto il a 28 reseau a chercher et il affiche le resultat dans un
> fichier.txt
> en manu je choisi 1 ou plusieur reseau parmi les 28 et j'affiche le
> resultat
> aussi
> le but de l'exercice est qu'une personne qui ne connait rien en
> programmation puisse pouvoir modifier les adresses s'il le desire sans
> qu'il
> est a toujer a la prog
> par exemple si une adresse d'un reseau change il peut la modifier ds le
> fichier.ini tout simplement
> voila le prog sur la command1 qui aidera a mieux comprendre
> on ma deja aider dans le forum sur ce prog
>
> dans fichier texte Private Sub Command1_Click()
> If Command1.Caption = "Analyse" Then
>
> Command1.Caption = "Stopper"
>
> Dim Depart As Integer 'variables utilisées pour la barre
> Dim Fin As Integer 'de défilement
> Dim Iptest As String
> Dim Result As String
> Dim Adr1Start As Integer
> Dim Adr1End As Integer
> Dim Adr2Start As Integer 'variables utilisées pour les
> Dim Adr2End As Integer 'adresses Ip
> Dim Adr3Start As Integer
> Dim Adr3End As Integer
> Dim Cpt As Integer 'Utilisée pour définir le dernier champ
> 'de l'adresse IP
> Dim T(1 To 3) As Byte
> 'g choisi 3 au lieu de 28 reseau pou alleger le prog
> T(1) = 5
> T(2) = 22
> T(3) = 23
>
>
>
> '********************
> '* initialistaion *
> '********************
>
> ListView1.ListItems.Clear
>
>
> Depart = 0
>
> If Option1.Value Then
> Adr2Start = 0
> Adr2End = 255
> Adr3Start = 0
> Adr3End = 255
>
> Fin = 766
> End If
> If Option2.Value Then
> Adr2Start = Val(Text4.Text)
> Adr2End = Val(Text4.Text)
> Adr3Start = 0
> Adr3End = 255
>
> Fin = 510
> End If
> If Option3.Value Then
> Adr2Start = Val(Text4.Text)
> Adr2End = Val(Text4.Text)
> Adr3Start = Val(Text5.Text)
> Adr3End = Val(Text5.Text)
>
> Fin = 254
> End If
> If Option4.Value Then
> Adr2Start = 22
> Adr2End = 22
> Adr3Start = T(1)
> Adr3End = T(3)
> Fin = 766
>
>
> End If
>
>
>
>
> ProgressBar1.Visible = True
> ProgressBar1.Max = Fin
> ProgressBar1.Min = Depart
>
> For i = 1 To 3
> Do Until Adr2Start > Adr2End
> 'boucle correspondant au deuxième champs de l'adresse IP
>
> Do Until Adr3Start > Adr3End
> 'Boucle correspondant au troisième champs de l'adresse IP
>
> 'réinitialisation de cpt
> Cpt = 1
> 'Cpt = 100
> Do Until Cpt > 254
> 'boucle correspondant au quetrième champs de l'adresse IP
>
> If Command1.Caption = "Analyse" Then Exit Sub
>
> 'Définition de l'adresse IP à tester
> Iptest = Text3.Text + "." & Adr2Start & "." & Adr3Start
> & "." & Cpt
> DoEvents
> Result = Echo(Iptest)
> With ListView1.ListItems.Add
> .Text = Iptest
> If Result = "Failure" Then
> .SubItems(2) = Result
> DoEvents
> Enregistrement Iptest, False
> Else
>
>
> '.SubItems(1) = GetHostName(ConvertIp(Iptest))
> 'Dim test As Double
>
> 'test = CDbl(ConvertIp(Iptest))
> ' On Error Resume Next
> '.SubItems(1) > > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
> '.SubItems(1) =
> gethostbyaddr(ConvertIp(Iptest),
> 4, AF_INET)
> '.SubItems(1) > > GetHostName(CLng(ConvertIp(Iptest)))
> DoEvents
> '.SubItems(1) = HostName(Iptest)
> .SubItems(1) = GetHostNameFromIP(.Text)
> DoEvents
> Enregistrement Iptest, True
> End If
> End With
> Cpt = Cpt + 1
> Depart = Depart + 1
> ProgressBar1.Value = Depart
> Loop
> 'Option4
> i = i + 1
> If i = 4 Then
> Command1.Caption = "Analyse"
> End If
> Adr3Start = T(i)
> Loop
> Adr2Start = Adr2Start + 1
> Loop
> ProgressBar1.Visible = False
> Next i
> Else
> ProgressBar1.Visible = False
> Command1.Caption = "Analyse"
> End If
> End Sub
>
> "Patrice Henrio" a écrit :
>
>> Il suffit de connaître la syntaxe des fichiers ini qui sont des fichiers
>> textes.
>> Donc pour la suite tu ouvres un fichier texte truc.ini en écriture et tu
>> ajoutes tes données sous forme de texte en faisant attention à la façon
>> dont
>> tu veux que ce soit compris.
>> En fait à partir du moment où tu peux les afficher à l'écran, tu peux les
>> écrire dans un fichier texte.
>>
>>
>>
>> "squat541" <squat541@discussions.microsoft.com> a écrit dans le message
>> de
>> news: 2E9BC2F9-4A98-409E-B9F0-1335C7C9C8F0@microsoft.com...
>> > Merci Patrice tu ma bien orienté g reussi grace a toi,mais g une autre
>> > question maintenant que g les resultat que souhaité je voudrais les
>> > mettre
>> > dans un fichier.ini
>> > exemple: g la liste des 28 sous reseau et lorsque je clic sur un sous
>> > reseau
>> > il m'affiche les adresses de 0 à 255.
>> > je voudrait que les resultat soit en meme temps copier sur le
>> > fichier.ini
>> > (est ce deja possible).
>> > merci d'avance
>> >
>> > "Patrice Henrio" a écrit :
>> >
>> >> Déjà remplace tous les
>> >>
>> >> If <var> = true then
>> >>
>> >> par
>> >>
>> >> If <var> then
>> >>
>> >> ça ne change pas le fonctionnement mais c'est plus propre (discussion
>> >> déjà
>> >> tenue sur ce forum).
>> >>
>> >> Pour ton problème, il me semble qu'un tableau de 28 entiers (voire
>> >> byte)
>> >> ferait l'affaire : dans ce tableau je mets les troisième nombre de
>> >> l'adresse
>> >> (puisque tu les connais)
>> >>
>> >> Donc T(1 to 28) as byte
>> >>
>> >> Ensuite, au lieu d'écrire une boucle do, tu peux utiliser un for next
>> >> For I=1 to 28
>> >> adr3=T(I)
>> >> Next I
>> >>
>> >> > If Option4.Value = True Then
>> >> > 'je tape le premier champ
>> >> > Adr2Start = 22
>> >> > Adr2End = 22
>> >> > Adr3Start = 5
>> >> > Adr3End = 5
>> >> > Fin = 254
>> >> > End If
>> >> devient
>> >>
>> >> If Option4.Value Then
>> >> 'je tape le premier champ
>> >> Adr2Start = 22
>> >> Adr2End = 22
>> >> Adr3Start = T(1)
>> >> Adr3End = T(28)
>> >> Fin = 254
>> >> End If
>> >>
>> >> > Loop
>> >> > Adr3Start = Adr3Start + 1
>> >> devient
>> >>
>> >> If Option4.Value then
>> >> I=I+1
>> >> Adr3Start=T(I)
>> >> Else
>> >> Adr3Startr3Start+1
>> >> End If
>> >>
>> >> Quelques conseils supplémentaires, les noms des variables doivent être
>> >> adaptées au problème, ici adr3Start n'est l'adresse de départ mais
>> >> l'adresse
>> >> courante qui parcourt la plage de Start à End, il serait donc plus
>> >> judicieux
>> >> d'écrire adr3 tout seul, voir définr un type adr de la façon suivante
>> >>
>> >> type adresse
>> >> champ1 as byte
>> >> champ2 as byte
>> >> champ3 as byte
>> >> champ4 as byte
>> >> end type
>> >> Encore mieux un objet dont les propriétés permettraient de gérer
>> >> l'affichage
>> >> et le valeur
>> >> une propriété Adresse
>> >> AdresseIp(A as byte, B as byte, C as byte, D as byte) as double
>> >> AdresseIp=D+256*(C+256*(B+256*A))
>> >> fin
>> >>
>> >> .... etc
>> >>
>> >> "squat541" <squat541@discussions.microsoft.com> a écrit dans le
>> >> message
>> >> de
>> >> news: 43705B1D-8FFA-495A-BE68-114BD2BE5859@microsoft.com...
>> >> > Je vous remercie tous de vous intéresser à mon cas,c presque ca sauf
>> >> > que
>> >> > je
>> >> > veux pouvoir les choisirs et pas aleatoire sinon c une bonne idée.je
>> >> > vous
>> >> > met
>> >> > le prog du bouton commande qui vous aidera a me comprendre
>> >> > Private Sub Command1_Click()
>> >> > If Command1.Caption = "Analyse" Then
>> >> > Command1.Caption = "Stopper"
>> >> > Dim Depart As Integer 'variables utilisées pour la barre
>> >> > Dim Fin As Integer 'de défilement
>> >> > Dim Iptest As String
>> >> > Dim Result As String
>> >> > Dim Adr1Start As Integer
>> >> > Dim Adr1End As Integer
>> >> > Dim Adr2Start As Integer 'variables utilisées pour les
>> >> > Dim Adr2End As Integer 'adresses Ip
>> >> > Dim Adr3Start As Integer
>> >> > Dim Adr3End As Integer
>> >> > Dim Cpt As Integer 'Utilisée pour définir le dernier champ
>> >> > 'de l'adresse IP
>> >> > '********************
>> >> > '* initialistaion *
>> >> > '********************
>> >> > ListView1.ListItems.Clear
>> >> > Depart = 0
>> >> > If Option1.Value = True Then
>> >> > Adr2Start = 0
>> >> > Adr2End = 255
>> >> > Adr3Start = 0
>> >> > Adr3End = 255
>> >> > Fin = 766
>> >> > End If
>> >> > If Option2.Value = True Then
>> >> > Adr2Start = Val(Text4.Text)
>> >> > Adr2End = Val(Text4.Text)
>> >> > Adr3Start = 0
>> >> > Adr3End = 255
>> >> > Fin = 510
>> >> > End If
>> >> > If Option3.Value = True Then
>> >> > Adr2Start = Val(Text4.Text)
>> >> > Adr2End = Val(Text4.Text)
>> >> > Adr3Start = Val(Text5.Text)
>> >> > Adr3End = Val(Text5.Text
>> >> > Fin = 254
>> >> > End If
>> >> > If Option4.Value = True Then
>> >> > 'je tape le premier champ
>> >> > Adr2Start = 22
>> >> > Adr2End = 22
>> >> > Adr3Start = 5
>> >> > Adr3End = 5
>> >> > Fin = 254
>> >> > End If
>> >> > ProgressBar1.Visible = True
>> >> > ProgressBar1.Max = Fin
>> >> > ProgressBar1.Min = Depart
>> >> > Do Until Adr2Start > Adr2End
>> >> > 'boucle correspondant au deuxième champs de l'adresse IP
>> >> > Do Until Adr3Start > Adr3End
>> >> > 'Boucle correspondant au troisième champs de l'adresse IP
>> >> > 'réinitialisation de cpt
>> >> > Cpt = 1
>> >> > 'Cpt = 100
>> >> > Do Until Cpt > 254
>> >> > 'boucle correspondant au quetrième champs de l'adresse IP
>> >> > If Command1.Caption = "Analyse" Then Exit Sub
>> >> > 'Définition de l'adresse IP à tester
>> >> > Iptest = Text3.Text + "." & Adr2Start & "." &
>> >> > Adr3Start
>> >> > & "." & Cpt
>> >> > DoEvents
>> >> > Result = Echo(Iptest)
>> >> > With ListView1.ListItems.Add
>> >> > .Text = Iptest
>> >> > If Result = "Failure" Then
>> >> > .SubItems(2) = Result
>> >> > DoEvents
>> >> > Enregistrement Iptest, False
>> >> > Else
>> >> > '.SubItems(1) =
>> >> > GetHostName(ConvertIp(Iptest))
>> >> > 'Dim test As Double
>> >> > 'test = CDbl(ConvertIp(Iptest))
>> >> > ' On Error Resume Next
>> >> > '.SubItems(1) > >> >> > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
>> >> > '.SubItems(1) > >> >> > gethostbyaddr(ConvertIp(Iptest),
>> >> > 4, AF_INET)
>> >> > '.SubItems(1) > >> >> > GetHostName(CLng(ConvertIp(Iptest)))
>> >> > DoEvents
>> >> > '.SubItems(1) = HostName(Iptest)
>> >> > .SubItems(1) = GetHostNameFromIP(.Text)
>> >> > DoEvents
>> >> > Enregistrement Iptest, True
>> >> > End If
>> >> > End With
>> >> > Cpt = Cpt + 1
>> >> > Depart = Depart + 1
>> >> > ProgressBar1.Value = Depart
>> >> > Loop
>> >> > Adr3Start = Adr3Start + 1
>> >> > Loop
>> >> > Adr2Start = Adr2Start + 1
>> >> > Loop
>> >> >
>> >> > ProgressBar1.Visible = False
>> >> >
>> >> > Else
>> >> > ProgressBar1.Visible = False
>> >> > Command1.Caption = "Analyse"
>> >> > End If
>> >> >
>> >> > End Sub
>> >> >
>> >> > Voila mon prob ce trouve a l'option 4,je cherche a modifier le 3eme
>> >> > champ
>> >> > en
>> >> > lui donnant 28 valeur mais que je ne modifie pas ces 28 reseau
>> >> > corresponde
>> >> > au
>> >> > reseau d'une entreprise,ce sont des adresses qui ne change pas.
>> >> > un exemple 85.22.5.(0à255)
>> >> > 85.22.10.(0à255)
>> >> > 85.22.18.(0à255)
>> >> > :
>> >> > :
>> >> > je modifie seulement le troisieme champ je choisie les 28 et ca
>> >> > reste
>> >> > toujours meme.si j'explique mal dit le moi je detaillerai plus.
>> >> >
>> >> >
>> >> > "LE TROLL" a écrit :
>> >> >
>> >> >> Oh là mes brave:
>> >> >>
>> >> >> L'exemple indique pour le 4eme groupe IP (1, 5, 79...), et
>> >> >> il dit "ip mais qui NE se suivent", donc c'est bien
>> >> >> traitement aléatoire qu'il faut mettre dans la boucle, en
>> >> >> vérifiant que l'aléatoire n'a pas causé de mitoyenneté d'IP,
>> >> >> moi y'en a m'essayer à ce jeu:
>> >> >> -----------------------
>> >> >>
>> >> >> Sub cree_ip()
>> >> >> Dim i As Long
>> >> >> Dim j As Long
>> >> >> Dim k As Long
>> >> >> Dim ip(256) As Long
>> >> >> Dim ip_ok(30) As Long ' ip retenues
>> >> >> Dim hasard As Long
>> >> >> Dim presente As String
>> >> >> Dim trans As Long
>> >> >> '
>> >> >> For i = 0 To 255 ' choix des ip
>> >> >> ip(i) = Format(i, "000")
>> >> >> Next i
>> >> >> Randomize
>> >> >> hasard = 0
>> >> >> '
>> >> >> For i = 1 To 30
>> >> >> Do While ip(hasard) = 256 ' = déjà choisit
>> >> >> hasard = Int((255 - 0 + 1) * Rnd + 0) ' pseudo
>> >> >> aléatoire
>> >> >> Loop
>> >> >> If hasard > 0 Then ip(hasard - 1) = 256 ' enlève - 1:
>> >> >> interdit mitoyenneté
>> >> >> ip(hasard) = 256 ' ip à ne plus sélectionner
>> >> >> ip_ok(i) = hasard ' ip sélectionnée
>> >> >> If hasard < 255 Then ip(hasard + 1) = 256 ' enlève + 1:
>> >> >> interdit mitoyenneté
>> >> >> Next i
>> >> >> '
>> >> >> For i = 1 To 30 ' tri croissant
>> >> >> For j = 1 To 30
>> >> >> For k = 1 To 30
>> >> >> If j = k Then Exit For
>> >> >> If ip_ok(j) < ip_ok(k) Then
>> >> >> trans = ip_ok(j)
>> >> >> ip_ok(j) = ip_ok(k)
>> >> >> ip_ok(k) = trans
>> >> >> Exit For
>> >> >> End If
>> >> >> Next k
>> >> >> Next j
>> >> >> Next i
>> >> >> '
>> >> >> presente = "" ' présentation
>> >> >> For i = 1 To 30
>> >> >> presente = presente & Format(ip_ok(i), "000") & vbLf
>> >> >> Next i
>> >> >> MsgBox presente, vbInformation
>> >> >> End Sub
>> >> >> -----------------------testé OK
>> >> >>
>> >> >>
>> >> >> "squat541" <squat541@discussions.microsoft.com> a écrit dans
>> >> >> le message de news:
>> >> >> EDEBDB18-FF41-40BD-ADD6-95807F914450@microsoft.com...
>> >> >> > salut a tous,voila j'explique,g un prog qui me liste tout
>> >> >> > les ip des adresses
>> >> >> > de classe a,b,c.
>> >> >> > par exemple,je tape 85.22.55. adresse de classe c,et il
>> >> >> > me sort tout les ip
>> >> >> > du reseau 85.22.55. (de 0 a 255).
>> >> >> > je voudrais afficher seulement 30 ip mais qui ne suivent
>> >> >> > pas85.22.55.(1,5 ,
>> >> >> > 79,101, 103,119.....),quel boucle je dois utiliser pour
>> >> >> > faire cela vu que ce
>> >> >> > n'est pas des chiffres qui se suivent?
>> >> >> > merci de repondre
>> >> >>
>> >> >>
>> >> >>
>> >>
>> >>
>> >>
>>
>>
>>
En fait, si je comprends bien il s'agit surtout de faire un fichier texte
contenant des adresses.
Ce fichier peut être en lecture pour obtenir une liste d'adresse ou en
écriture pour récupérer les adresses qui fonctionnent et les écrire dans le
fichier de façon à ce que l'on ait pas cela à faire à chaque fois.
Donc dans ta procédure enregistrement(adresse, booléen) tu rajoutes (si j'ai
bien compris) une ligne write #1,Iptest
Bien entendu il faut d'abord ouvrir le fichier en écriture
Dans l'initialisation
au début
Open Chemin & "ADRESSES.DAT" For Output As #1
Juste avant end sub
Close #1
Envoies-moi ta procédure enregistrement pour voir comment intégrer le write
#1
Ensuite en lisant le fichier texte, tu peux créer le tableau
Il y a même encore plus simple puisqu'un tableau de byte se lit en une fois
avec un fichier ouvert en Binary.
Exemple
Public Function TableauDePoints(ByVal Nom As String) As tPointPlan()
'lit le tableau des points du globe servant à décrire les limites des zones
Dim P As tPointPlan, T() As tPointPlan
Open Chemin & Nom & ".PTS" For Binary As #1
ReDim T(1 To LOF(1) / Len(P))
Get 1, , T
Close #1
TableauDePoints = T
Erase T
End Function
Le type tPointPlan est comme son nom l'indique un type avec deux champs
réels. Le contenu du fichier est lu directement dans le tableau.
Dans ton cas, supposons que seul le troisième nombre soit important dans ce
cas
Public Function AdressesValides(Nom as string) as Byte()
'Lit le tableau des adresses valides
Dim P as byte, T() as Byte
Open Chemin & Nom for Binary as #1
Redim T(1 to Lof(1)/len(P))
Get 1,,T
AdressesValides=T
Erase T
End Function
Comme ça tu n'as même pas besoin de savoir au départ combien il y a
d'adresses valides.
J'espère que j'ai été clair
"squat541" a écrit dans le message de
news:
> Excusez moi patrice c pas ce que je dois faire,on ma mal expliquer le but
> de
> l'exercie
> c un peu compliquer a expliquer mais je vais faire du mieu que je peu
> g un prog qui liste des adresse ip d'un reseau et de plusieur si je le
> souhaite,la liste des adresse ip de chaque reseau apparait sur une
> listview.
> g creer un un fichier.ini ou g mis les numero ip.
> voila ce que je voudrais faire
> creer une option manu/auto dans le fichier ini
> en auto il a 28 reseau a chercher et il affiche le resultat dans un
> fichier.txt
> en manu je choisi 1 ou plusieur reseau parmi les 28 et j'affiche le
> resultat
> aussi
> le but de l'exercice est qu'une personne qui ne connait rien en
> programmation puisse pouvoir modifier les adresses s'il le desire sans
> qu'il
> est a toujer a la prog
> par exemple si une adresse d'un reseau change il peut la modifier ds le
> fichier.ini tout simplement
> voila le prog sur la command1 qui aidera a mieux comprendre
> on ma deja aider dans le forum sur ce prog
>
> dans fichier texte Private Sub Command1_Click()
> If Command1.Caption = "Analyse" Then
>
> Command1.Caption = "Stopper"
>
> Dim Depart As Integer 'variables utilisées pour la barre
> Dim Fin As Integer 'de défilement
> Dim Iptest As String
> Dim Result As String
> Dim Adr1Start As Integer
> Dim Adr1End As Integer
> Dim Adr2Start As Integer 'variables utilisées pour les
> Dim Adr2End As Integer 'adresses Ip
> Dim Adr3Start As Integer
> Dim Adr3End As Integer
> Dim Cpt As Integer 'Utilisée pour définir le dernier champ
> 'de l'adresse IP
> Dim T(1 To 3) As Byte
> 'g choisi 3 au lieu de 28 reseau pou alleger le prog
> T(1) = 5
> T(2) = 22
> T(3) = 23
>
>
>
> '********************
> '* initialistaion *
> '********************
>
> ListView1.ListItems.Clear
>
>
> Depart = 0
>
> If Option1.Value Then
> Adr2Start = 0
> Adr2End = 255
> Adr3Start = 0
> Adr3End = 255
>
> Fin = 766
> End If
> If Option2.Value Then
> Adr2Start = Val(Text4.Text)
> Adr2End = Val(Text4.Text)
> Adr3Start = 0
> Adr3End = 255
>
> Fin = 510
> End If
> If Option3.Value Then
> Adr2Start = Val(Text4.Text)
> Adr2End = Val(Text4.Text)
> Adr3Start = Val(Text5.Text)
> Adr3End = Val(Text5.Text)
>
> Fin = 254
> End If
> If Option4.Value Then
> Adr2Start = 22
> Adr2End = 22
> Adr3Start = T(1)
> Adr3End = T(3)
> Fin = 766
>
>
> End If
>
>
>
>
> ProgressBar1.Visible = True
> ProgressBar1.Max = Fin
> ProgressBar1.Min = Depart
>
> For i = 1 To 3
> Do Until Adr2Start > Adr2End
> 'boucle correspondant au deuxième champs de l'adresse IP
>
> Do Until Adr3Start > Adr3End
> 'Boucle correspondant au troisième champs de l'adresse IP
>
> 'réinitialisation de cpt
> Cpt = 1
> 'Cpt = 100
> Do Until Cpt > 254
> 'boucle correspondant au quetrième champs de l'adresse IP
>
> If Command1.Caption = "Analyse" Then Exit Sub
>
> 'Définition de l'adresse IP à tester
> Iptest = Text3.Text + "." & Adr2Start & "." & Adr3Start
> & "." & Cpt
> DoEvents
> Result = Echo(Iptest)
> With ListView1.ListItems.Add
> .Text = Iptest
> If Result = "Failure" Then
> .SubItems(2) = Result
> DoEvents
> Enregistrement Iptest, False
> Else
>
>
> '.SubItems(1) = GetHostName(ConvertIp(Iptest))
> 'Dim test As Double
>
> 'test = CDbl(ConvertIp(Iptest))
> ' On Error Resume Next
> '.SubItems(1) > > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
> '.SubItems(1) =
> gethostbyaddr(ConvertIp(Iptest),
> 4, AF_INET)
> '.SubItems(1) > > GetHostName(CLng(ConvertIp(Iptest)))
> DoEvents
> '.SubItems(1) = HostName(Iptest)
> .SubItems(1) = GetHostNameFromIP(.Text)
> DoEvents
> Enregistrement Iptest, True
> End If
> End With
> Cpt = Cpt + 1
> Depart = Depart + 1
> ProgressBar1.Value = Depart
> Loop
> 'Option4
> i = i + 1
> If i = 4 Then
> Command1.Caption = "Analyse"
> End If
> Adr3Start = T(i)
> Loop
> Adr2Start = Adr2Start + 1
> Loop
> ProgressBar1.Visible = False
> Next i
> Else
> ProgressBar1.Visible = False
> Command1.Caption = "Analyse"
> End If
> End Sub
>
> "Patrice Henrio" a écrit :
>
>> Il suffit de connaître la syntaxe des fichiers ini qui sont des fichiers
>> textes.
>> Donc pour la suite tu ouvres un fichier texte truc.ini en écriture et tu
>> ajoutes tes données sous forme de texte en faisant attention à la façon
>> dont
>> tu veux que ce soit compris.
>> En fait à partir du moment où tu peux les afficher à l'écran, tu peux les
>> écrire dans un fichier texte.
>>
>>
>>
>> "squat541" a écrit dans le message
>> de
>> news:
>> > Merci Patrice tu ma bien orienté g reussi grace a toi,mais g une autre
>> > question maintenant que g les resultat que souhaité je voudrais les
>> > mettre
>> > dans un fichier.ini
>> > exemple: g la liste des 28 sous reseau et lorsque je clic sur un sous
>> > reseau
>> > il m'affiche les adresses de 0 à 255.
>> > je voudrait que les resultat soit en meme temps copier sur le
>> > fichier.ini
>> > (est ce deja possible).
>> > merci d'avance
>> >
>> > "Patrice Henrio" a écrit :
>> >
>> >> Déjà remplace tous les
>> >>
>> >> If <var> = true then
>> >>
>> >> par
>> >>
>> >> If <var> then
>> >>
>> >> ça ne change pas le fonctionnement mais c'est plus propre (discussion
>> >> déjà
>> >> tenue sur ce forum).
>> >>
>> >> Pour ton problème, il me semble qu'un tableau de 28 entiers (voire
>> >> byte)
>> >> ferait l'affaire : dans ce tableau je mets les troisième nombre de
>> >> l'adresse
>> >> (puisque tu les connais)
>> >>
>> >> Donc T(1 to 28) as byte
>> >>
>> >> Ensuite, au lieu d'écrire une boucle do, tu peux utiliser un for next
>> >> For I=1 to 28
>> >> adr3=T(I)
>> >> Next I
>> >>
>> >> > If Option4.Value = True Then
>> >> > 'je tape le premier champ
>> >> > Adr2Start = 22
>> >> > Adr2End = 22
>> >> > Adr3Start = 5
>> >> > Adr3End = 5
>> >> > Fin = 254
>> >> > End If
>> >> devient
>> >>
>> >> If Option4.Value Then
>> >> 'je tape le premier champ
>> >> Adr2Start = 22
>> >> Adr2End = 22
>> >> Adr3Start = T(1)
>> >> Adr3End = T(28)
>> >> Fin = 254
>> >> End If
>> >>
>> >> > Loop
>> >> > Adr3Start = Adr3Start + 1
>> >> devient
>> >>
>> >> If Option4.Value then
>> >> I=I+1
>> >> Adr3Start=T(I)
>> >> Else
>> >> Adr3Startr3Start+1
>> >> End If
>> >>
>> >> Quelques conseils supplémentaires, les noms des variables doivent être
>> >> adaptées au problème, ici adr3Start n'est l'adresse de départ mais
>> >> l'adresse
>> >> courante qui parcourt la plage de Start à End, il serait donc plus
>> >> judicieux
>> >> d'écrire adr3 tout seul, voir définr un type adr de la façon suivante
>> >>
>> >> type adresse
>> >> champ1 as byte
>> >> champ2 as byte
>> >> champ3 as byte
>> >> champ4 as byte
>> >> end type
>> >> Encore mieux un objet dont les propriétés permettraient de gérer
>> >> l'affichage
>> >> et le valeur
>> >> une propriété Adresse
>> >> AdresseIp(A as byte, B as byte, C as byte, D as byte) as double
>> >> AdresseIp=D+256*(C+256*(B+256*A))
>> >> fin
>> >>
>> >> .... etc
>> >>
>> >> "squat541" a écrit dans le
>> >> message
>> >> de
>> >> news:
>> >> > Je vous remercie tous de vous intéresser à mon cas,c presque ca sauf
>> >> > que
>> >> > je
>> >> > veux pouvoir les choisirs et pas aleatoire sinon c une bonne idée.je
>> >> > vous
>> >> > met
>> >> > le prog du bouton commande qui vous aidera a me comprendre
>> >> > Private Sub Command1_Click()
>> >> > If Command1.Caption = "Analyse" Then
>> >> > Command1.Caption = "Stopper"
>> >> > Dim Depart As Integer 'variables utilisées pour la barre
>> >> > Dim Fin As Integer 'de défilement
>> >> > Dim Iptest As String
>> >> > Dim Result As String
>> >> > Dim Adr1Start As Integer
>> >> > Dim Adr1End As Integer
>> >> > Dim Adr2Start As Integer 'variables utilisées pour les
>> >> > Dim Adr2End As Integer 'adresses Ip
>> >> > Dim Adr3Start As Integer
>> >> > Dim Adr3End As Integer
>> >> > Dim Cpt As Integer 'Utilisée pour définir le dernier champ
>> >> > 'de l'adresse IP
>> >> > '********************
>> >> > '* initialistaion *
>> >> > '********************
>> >> > ListView1.ListItems.Clear
>> >> > Depart = 0
>> >> > If Option1.Value = True Then
>> >> > Adr2Start = 0
>> >> > Adr2End = 255
>> >> > Adr3Start = 0
>> >> > Adr3End = 255
>> >> > Fin = 766
>> >> > End If
>> >> > If Option2.Value = True Then
>> >> > Adr2Start = Val(Text4.Text)
>> >> > Adr2End = Val(Text4.Text)
>> >> > Adr3Start = 0
>> >> > Adr3End = 255
>> >> > Fin = 510
>> >> > End If
>> >> > If Option3.Value = True Then
>> >> > Adr2Start = Val(Text4.Text)
>> >> > Adr2End = Val(Text4.Text)
>> >> > Adr3Start = Val(Text5.Text)
>> >> > Adr3End = Val(Text5.Text
>> >> > Fin = 254
>> >> > End If
>> >> > If Option4.Value = True Then
>> >> > 'je tape le premier champ
>> >> > Adr2Start = 22
>> >> > Adr2End = 22
>> >> > Adr3Start = 5
>> >> > Adr3End = 5
>> >> > Fin = 254
>> >> > End If
>> >> > ProgressBar1.Visible = True
>> >> > ProgressBar1.Max = Fin
>> >> > ProgressBar1.Min = Depart
>> >> > Do Until Adr2Start > Adr2End
>> >> > 'boucle correspondant au deuxième champs de l'adresse IP
>> >> > Do Until Adr3Start > Adr3End
>> >> > 'Boucle correspondant au troisième champs de l'adresse IP
>> >> > 'réinitialisation de cpt
>> >> > Cpt = 1
>> >> > 'Cpt = 100
>> >> > Do Until Cpt > 254
>> >> > 'boucle correspondant au quetrième champs de l'adresse IP
>> >> > If Command1.Caption = "Analyse" Then Exit Sub
>> >> > 'Définition de l'adresse IP à tester
>> >> > Iptest = Text3.Text + "." & Adr2Start & "." &
>> >> > Adr3Start
>> >> > & "." & Cpt
>> >> > DoEvents
>> >> > Result = Echo(Iptest)
>> >> > With ListView1.ListItems.Add
>> >> > .Text = Iptest
>> >> > If Result = "Failure" Then
>> >> > .SubItems(2) = Result
>> >> > DoEvents
>> >> > Enregistrement Iptest, False
>> >> > Else
>> >> > '.SubItems(1) =
>> >> > GetHostName(ConvertIp(Iptest))
>> >> > 'Dim test As Double
>> >> > 'test = CDbl(ConvertIp(Iptest))
>> >> > ' On Error Resume Next
>> >> > '.SubItems(1) > >> >> > gethostbyaddr(CLng(ConvertIp(Iptest)), 4, AF_INET)
>> >> > '.SubItems(1) > >> >> > gethostbyaddr(ConvertIp(Iptest),
>> >> > 4, AF_INET)
>> >> > '.SubItems(1) > >> >> > GetHostName(CLng(ConvertIp(Iptest)))
>> >> > DoEvents
>> >> > '.SubItems(1) = HostName(Iptest)
>> >> > .SubItems(1) = GetHostNameFromIP(.Text)
>> >> > DoEvents
>> >> > Enregistrement Iptest, True
>> >> > End If
>> >> > End With
>> >> > Cpt = Cpt + 1
>> >> > Depart = Depart + 1
>> >> > ProgressBar1.Value = Depart
>> >> > Loop
>> >> > Adr3Start = Adr3Start + 1
>> >> > Loop
>> >> > Adr2Start = Adr2Start + 1
>> >> > Loop
>> >> >
>> >> > ProgressBar1.Visible = False
>> >> >
>> >> > Else
>> >> > ProgressBar1.Visible = False
>> >> > Command1.Caption = "Analyse"
>> >> > End If
>> >> >
>> >> > End Sub
>> >> >
>> >> > Voila mon prob ce trouve a l'option 4,je cherche a modifier le 3eme
>> >> > champ
>> >> > en
>> >> > lui donnant 28 valeur mais que je ne modifie pas ces 28 reseau
>> >> > corresponde
>> >> > au
>> >> > reseau d'une entreprise,ce sont des adresses qui ne change pas.
>> >> > un exemple 85.22.5.(0à255)
>> >> > 85.22.10.(0à255)
>> >> > 85.22.18.(0à255)
>> >> > :
>> >> > :
>> >> > je modifie seulement le troisieme champ je choisie les 28 et ca
>> >> > reste
>> >> > toujours meme.si j'explique mal dit le moi je detaillerai plus.
>> >> >
>> >> >
>> >> > "LE TROLL" a écrit :
>> >> >
>> >> >> Oh là mes brave:
>> >> >>
>> >> >> L'exemple indique pour le 4eme groupe IP (1, 5, 79...), et
>> >> >> il dit "ip mais qui NE se suivent", donc c'est bien
>> >> >> traitement aléatoire qu'il faut mettre dans la boucle, en
>> >> >> vérifiant que l'aléatoire n'a pas causé de mitoyenneté d'IP,
>> >> >> moi y'en a m'essayer à ce jeu:
>> >> >> -----------------------
>> >> >>
>> >> >> Sub cree_ip()
>> >> >> Dim i As Long
>> >> >> Dim j As Long
>> >> >> Dim k As Long
>> >> >> Dim ip(256) As Long
>> >> >> Dim ip_ok(30) As Long ' ip retenues
>> >> >> Dim hasard As Long
>> >> >> Dim presente As String
>> >> >> Dim trans As Long
>> >> >> '
>> >> >> For i = 0 To 255 ' choix des ip
>> >> >> ip(i) = Format(i, "000")
>> >> >> Next i
>> >> >> Randomize
>> >> >> hasard = 0
>> >> >> '
>> >> >> For i = 1 To 30
>> >> >> Do While ip(hasard) = 256 ' = déjà choisit
>> >> >> hasard = Int((255 - 0 + 1) * Rnd + 0) ' pseudo
>> >> >> aléatoire
>> >> >> Loop
>> >> >> If hasard > 0 Then ip(hasard - 1) = 256 ' enlève - 1:
>> >> >> interdit mitoyenneté
>> >> >> ip(hasard) = 256 ' ip à ne plus sélectionner
>> >> >> ip_ok(i) = hasard ' ip sélectionnée
>> >> >> If hasard < 255 Then ip(hasard + 1) = 256 ' enlève + 1:
>> >> >> interdit mitoyenneté
>> >> >> Next i
>> >> >> '
>> >> >> For i = 1 To 30 ' tri croissant
>> >> >> For j = 1 To 30
>> >> >> For k = 1 To 30
>> >> >> If j = k Then Exit For
>> >> >> If ip_ok(j) < ip_ok(k) Then
>> >> >> trans = ip_ok(j)
>> >> >> ip_ok(j) = ip_ok(k)
>> >> >> ip_ok(k) = trans
>> >> >> Exit For
>> >> >> End If
>> >> >> Next k
>> >> >> Next j
>> >> >> Next i
>> >> >> '
>> >> >> presente = "" ' présentation
>> >> >> For i = 1 To 30
>> >> >> presente = presente & Format(ip_ok(i), "000") & vbLf
>> >> >> Next i
>> >> >> MsgBox presente, vbInformation
>> >> >> End Sub
>> >> >> -----------------------testé OK
>> >> >>
>> >> >>
>> >> >> "squat541" a écrit dans
>> >> >> le message de news:
>> >> >>
>> >> >> > salut a tous,voila j'explique,g un prog qui me liste tout
>> >> >> > les ip des adresses
>> >> >> > de classe a,b,c.
>> >> >> > par exemple,je tape 85.22.55. adresse de classe c,et il
>> >> >> > me sort tout les ip
>> >> >> > du reseau 85.22.55. (de 0 a 255).
>> >> >> > je voudrais afficher seulement 30 ip mais qui ne suivent
>> >> >> > pas85.22.55.(1,5 ,
>> >> >> > 79,101, 103,119.....),quel boucle je dois utiliser pour
>> >> >> > faire cela vu que ce
>> >> >> > n'est pas des chiffres qui se suivent?
>> >> >> > merci de repondre
>> >> >>
>> >> >>
>> >> >>
>> >>
>> >>
>> >>
>>
>>
>>