Boucle avec VB
Fermé
NagNag
-
25 oct. 2007 à 16:55
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 30 oct. 2007 à 16:12
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 30 oct. 2007 à 16:12
A voir également:
- Boucle avec VB
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
71 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
26 oct. 2007 à 11:36
26 oct. 2007 à 11:36
si tu initialises 'trouver' dans ta bloucle, tu vides les éléments de : trouver = trouver & " " & j & "," . Il faut initialiser 'trouver' en dehors de la boucle.
Ensuite A et B sont de tableaux initialisés. Il faut les déclarer:
Dim tabA(10) As Integer
Dim tabB(5) As Integer
tabA(1) = 1
tabA(2) = 2
etc ...
idem pour tabB
Ensuite J reste initialisé à 4 donc tu ne testes qu'une seule fois dans ta boucle. Il faut donc l'initialiser en dehors de la seconde boucle.
Tu testes des entiers (Integer), donc les valeurs qui doivent être dans le tableau C doivent aussi être des entiers et non une chaîne de caractères (String).
Mais l'idée générale est bonne, creuses un peu plus, tu n'es pas loin du résultat. Aides toi de ce que dit Shaboo
Bon courage ...
;o)
Polux
Ensuite A et B sont de tableaux initialisés. Il faut les déclarer:
Dim tabA(10) As Integer
Dim tabB(5) As Integer
tabA(1) = 1
tabA(2) = 2
etc ...
idem pour tabB
Ensuite J reste initialisé à 4 donc tu ne testes qu'une seule fois dans ta boucle. Il faut donc l'initialiser en dehors de la seconde boucle.
Tu testes des entiers (Integer), donc les valeurs qui doivent être dans le tableau C doivent aussi être des entiers et non une chaîne de caractères (String).
Mais l'idée générale est bonne, creuses un peu plus, tu n'es pas loin du résultat. Aides toi de ce que dit Shaboo
Bon courage ...
;o)
Polux
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
26 oct. 2007 à 16:25
26 oct. 2007 à 16:25
Ce n'est pas rendre service que de faire les exercices à la place des autres, pour bien programmer il faut bien comprendre et la seule façon que je connaisse c'est de trouver soit même la solution ... surtout pour l'algo ... pour le code, c'est un peu différent, il est difficile de connaitre toutes les subtilités d'un langage. Mais ne te décourage pas, on est tous passé par là ...
;o)
Polux
PS: il existe une solution à ton algo plus simple ... mais là aussi, il n'y a pas de bonnes ou mauvaises solutions, il n'y a que des solutions pertinentes : celles qui répondent au cahier des charges ...
Bonne continuation et bon courage
;o)
Polux
PS: il existe une solution à ton algo plus simple ... mais là aussi, il n'y a pas de bonnes ou mauvaises solutions, il n'y a que des solutions pertinentes : celles qui répondent au cahier des charges ...
Bonne continuation et bon courage
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
50
26 oct. 2007 à 16:46
26 oct. 2007 à 16:46
lol ...
je veux bien voir la solution pertinente en MP stp ;p
je veux bien voir la solution pertinente en MP stp ;p
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
26 oct. 2007 à 17:41
26 oct. 2007 à 17:41
Désolé Shaboo si tu l'as mal pris, mais je ne disais pas ça pour toi ... je voulais simplement expliquer à nagnag que l'important c'était d'obtenir le résultat attendu, peu importe la manière dans un premier temps. Après effectivement on peut optimiser le code pour gagner en rapidité d'exécution.
Je vais faire une exception lol ... voilà comment je procède :
Dim i As Integer
Dim j As Integer
For i = 0 To Me.A.ListCount - 2 ' - 2 pour exclure le 10
If Me.A.List(i) <> Me.B.List(j) Then
Me.C.AddItem Me.A.List(i)
j = j + 1
End If
Next i
Shaboo, je ne dis pas que ma solution est plus pertinente, ni meilleure que la tienne, c'est une solution parmi d'autres. Ta proposition est bonne aussi puisqu'elle répond au besoin exprimé ... je regrette seulement que ça ne soit pas nagnag qui l'ai trouvé, c'est tout... et en lui disant qu'il existait une solution plus simple, je voulai l'inciter à chercher encore un peu. Mais c'est mon jour de bonté ... lol
;o)
Polux
Je vais faire une exception lol ... voilà comment je procède :
Dim i As Integer
Dim j As Integer
For i = 0 To Me.A.ListCount - 2 ' - 2 pour exclure le 10
If Me.A.List(i) <> Me.B.List(j) Then
Me.C.AddItem Me.A.List(i)
j = j + 1
End If
Next i
Shaboo, je ne dis pas que ma solution est plus pertinente, ni meilleure que la tienne, c'est une solution parmi d'autres. Ta proposition est bonne aussi puisqu'elle répond au besoin exprimé ... je regrette seulement que ça ne soit pas nagnag qui l'ai trouvé, c'est tout... et en lui disant qu'il existait une solution plus simple, je voulai l'inciter à chercher encore un peu. Mais c'est mon jour de bonté ... lol
;o)
Polux
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
50
26 oct. 2007 à 17:45
26 oct. 2007 à 17:45
wow ... pas mal ...
j'avais cette solution là en tete aussi ... ;p
j'avais cette solution là en tete aussi ... ;p
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
30 oct. 2007 à 14:55
30 oct. 2007 à 14:55
Bonjour, je vais merci ...
Tu veux dire que tu veux récuperer les numéros manquants dans un listBox et ensuite faire des insert dans la table de ta base de données ? Si c'est le cas, pourquoi ne pas le faire en même temps que ton tri ? il suffit de faire la fonction qui va bien pour ça...
Tu veux dire que tu veux récuperer les numéros manquants dans un listBox et ensuite faire des insert dans la table de ta base de données ? Si c'est le cas, pourquoi ne pas le faire en même temps que ton tri ? il suffit de faire la fonction qui va bien pour ça...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
26 oct. 2007 à 10:14
26 oct. 2007 à 10:14
Bonjour,
Tu veux l'algo ? c'est ça ?
Tu veux l'algo ? c'est ça ?
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
26 oct. 2007 à 10:24
26 oct. 2007 à 10:24
salut,
Je ne suis pas là pour faire les exercices ... je suis là pour aider sur tel ou tel point d'algo ou code. Désolé
Je ne suis pas là pour faire les exercices ... je suis là pour aider sur tel ou tel point d'algo ou code. Désolé
Bonjour,
Je sais, mais je peux te donner mon algo si tu veux ?
Je sais, mais je peux te donner mon algo si tu veux ?
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
50
26 oct. 2007 à 10:37
26 oct. 2007 à 10:37
Envoie ...
Tu dois utiliser 2 boucles :
l'une pour ta 1ere liste, l'autre pour ta 2nde liste :
tu scannes la 1ere et tu compares avec la 2eme => si l'occurence de la 1ere liste est dans la 2eme OK, sinon tu inseres dans la 3eme.
Tu dois utiliser 2 boucles :
l'une pour ta 1ere liste, l'autre pour ta 2nde liste :
tu scannes la 1ere et tu compares avec la 2eme => si l'occurence de la 1ere liste est dans la 2eme OK, sinon tu inseres dans la 3eme.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
26 oct. 2007 à 10:34
26 oct. 2007 à 10:34
ok fais passer ...
CODE :
'La liste A contient 1,2,3,4,5,6,7,8,9,10
'La liste B contient 1,3,5,7,9
'Je veux renvoyer les chiffres 2,4,6,8 dans la liste C,
'Début du code
Dim i, j As Integer
Dim trouver As String
i = 1
j = 0
Do While i < 10
trouver = ""
Do While j < 4 'puisque 5 éléments dans la liste
If i = B.List(j) Then
trouver = trouver & " " & j & ","
End If
j = j + 1
Loop
i = i + 1
If i = 10 Then c.AddItem trouver
Loop
'La liste A contient 1,2,3,4,5,6,7,8,9,10
'La liste B contient 1,3,5,7,9
'Je veux renvoyer les chiffres 2,4,6,8 dans la liste C,
'Début du code
Dim i, j As Integer
Dim trouver As String
i = 1
j = 0
Do While i < 10
trouver = ""
Do While j < 4 'puisque 5 éléments dans la liste
If i = B.List(j) Then
trouver = trouver & " " & j & ","
End If
j = j + 1
Loop
i = i + 1
If i = 10 Then c.AddItem trouver
Loop
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
50
26 oct. 2007 à 11:08
26 oct. 2007 à 11:08
Pas mal ...
Mais avec cette instruction :
tu ne vas insérer qu'une seule ligne dans ta 3eme liste. Elle est la concatenation des valeurs trouvés dans la comparaison entre ta 1ere liste et ta 2eme liste.
C'est ce que tu recherches ?
Mais avec cette instruction :
If i = 10 Then c.AddItem trouver
tu ne vas insérer qu'une seule ligne dans ta 3eme liste. Elle est la concatenation des valeurs trouvés dans la comparaison entre ta 1ere liste et ta 2eme liste.
C'est ce que tu recherches ?
Oui ce que je cherche
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
50
26 oct. 2007 à 11:21
26 oct. 2007 à 11:21
Ok ...
Mais je pense que ta 3eme liste ressemblera à ta 2eme liste ;p
Mais je pense que ta 3eme liste ressemblera à ta 2eme liste ;p
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
50
26 oct. 2007 à 11:32
26 oct. 2007 à 11:32
regarde ton code :
je le fais tourner
i = 1 B.List(0) = 1 => OK => tu concatenes => trouver = 0
i = 1 B.List(1) = 3 => pas OK
i = 1 B.List(2) = 5 => pas OK
i = 1 B.List(3) = 7 => pas OK
i = 1 B.List(4) = 9 => pas OK
i = 2 B.List(0) = 1 => pas OK
i = 2 B.List(1) = 3 => pas OK
i = 2 B.List(2) = 5 => pas OK
i = 2 B.List(3) = 7 => pas OK
i = 2 B.List(4) = 9 => pas OK
i = 3 B.List(0) = 1 => pas OK
i = 3 B.List(1) = 3 => OK => tu concatenes => trouver = 0,1
i = 3 B.List(2) = 5 => pas OK
i = 3 B.List(3) = 7 => pas OK
i = 3 B.List(4) = 9 => pas OK
...
et en plus je m'apperçois que tu n'auras pas les bon elements
If i = B.List(j) Then trouver = trouver & " " & j & "," End If
je le fais tourner
i = 1 B.List(0) = 1 => OK => tu concatenes => trouver = 0
i = 1 B.List(1) = 3 => pas OK
i = 1 B.List(2) = 5 => pas OK
i = 1 B.List(3) = 7 => pas OK
i = 1 B.List(4) = 9 => pas OK
i = 2 B.List(0) = 1 => pas OK
i = 2 B.List(1) = 3 => pas OK
i = 2 B.List(2) = 5 => pas OK
i = 2 B.List(3) = 7 => pas OK
i = 2 B.List(4) = 9 => pas OK
i = 3 B.List(0) = 1 => pas OK
i = 3 B.List(1) = 3 => OK => tu concatenes => trouver = 0,1
i = 3 B.List(2) = 5 => pas OK
i = 3 B.List(3) = 7 => pas OK
i = 3 B.List(4) = 9 => pas OK
...
et en plus je m'apperçois que tu n'auras pas les bon elements
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
26 oct. 2007 à 13:30
26 oct. 2007 à 13:30
Oui 'trouver' est un string ... tu dois trier des integer ...
aider moi car rien ne ca marche, merci
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
50
26 oct. 2007 à 14:10
26 oct. 2007 à 14:10
mets ton code stp
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
50
26 oct. 2007 à 14:11
26 oct. 2007 à 14:11
mets ton code avec les balises code stp
i = 1
j = 0
Do While i < 10
Do While j < 4
If i = B.List(j) Then
Exit Do
Else
C.AddItem j
End If
j = j + 1
Loop
i = i + 1
Loop
NB: Je veux renvoyer 2,4,6,8 et 10 (sachant que la 1ere liste contient 1...10 et la 2ème 1,3,5,7,9
j = 0
Do While i < 10
Do While j < 4
If i = B.List(j) Then
Exit Do
Else
C.AddItem j
End If
j = j + 1
Loop
i = i + 1
Loop
NB: Je veux renvoyer 2,4,6,8 et 10 (sachant que la 1ere liste contient 1...10 et la 2ème 1,3,5,7,9
i = 1 j = 0 Do While i < 10 Do While j < 4 If i = B.List(j) Then Exit Do Else C.AddItem j End If j = j + 1 Loop i = i + 1 Loop
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
50
26 oct. 2007 à 14:30
26 oct. 2007 à 14:30
If i = B.List(j) Then Exit Do Else C.AddItem j End If
Ok ...
On reprend.
je le fais tourner avec ton code
i = 1 B.List(0) = 1 => tu ne vas pas plus loin grace au Exit Do
i = 2 B.List(0) = 1 => tu ajoutes 0 à ta 3eme liste
i = 2 B.List(1) = 2 => tu ne vas pas plus loin grace au Exit Do
i = 3 B.List(0) = 1 => tu ajoutes 0 à ta 3eme liste
i = 3 B.List(1) = 2 => tu ajoutes 1 à ta 3eme liste
i = 3 B.List(1) = 3 => tu ne vas pas plus loin grace au Exit Do
etc, etc , ...
Vois tu d'ou viens le pb ?