Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Énigmes

20 réponses
Avatar
andre.araste
Bonjour

J'anime une rubrique Visual Basic parmi un club de retraités.

Chaque trimestre je propose un petit programme VB5 & VB6 qui comporte une
erreur de programmation simple mais subtile l'empêchant de fonctionner
correctement.

Il faut bien entendu trouver l'erreur et redresser le programme.

Je manque d'idées.

Pouvez-vous me proposer quelques cas issus de votre expérience personnelle ?

Merci et ...
--
Bonne réception.
andre.araste@wanadoo.fr
http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.

10 réponses

1 2
Avatar
Pierre
référencer un recordset en ommetant de mettre

set myrec as dao.recordset
et
set myrec as adodb.recordset

Le bug survient si l'on met

set myrec as recordset et que l'on travaille sur des connections (commandes)
adodb et que la première référence est du dao...

en ayant déclaré les librairies dao 3.6 et ADO 2.8

ca montre comment on peut se tromper de librairie et la déclaration d'alias.

--
D'avance merci
Meilleures salutations
Pierre

"andre.araste" a écrit dans le message de news:
47ac4409$0$852$
Bonjour

J'anime une rubrique Visual Basic parmi un club de retraités.

Chaque trimestre je propose un petit programme VB5 & VB6 qui comporte une
erreur de programmation simple mais subtile l'empêchant de fonctionner
correctement.

Il faut bien entendu trouver l'erreur et redresser le programme.

Je manque d'idées.

Pouvez-vous me proposer quelques cas issus de votre expérience personnelle
?

Merci et ...
--
Bonne réception.

http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.




Avatar
jean-marc
"andre.araste" wrote in message
news:47ac4409$0$852$
Bonjour

J'anime une rubrique Visual Basic parmi un club de retraités.

Chaque trimestre je propose un petit programme VB5 & VB6 qui comporte une
erreur de programmation simple mais subtile l'empêchant de fonctionner
correctement.

Il faut bien entendu trouver l'erreur et redresser le programme.

Je manque d'idées.

Pouvez-vous me proposer quelques cas issus de votre expérience personnelle
?



Bonjour Andre,

Voici 3 classiques (chapitres) :

Le Premier est un grand classique de l'usage
incorrect de l'appel d'une fonction:


' Chapitre 1. Une fonction qui divise !
'
Private Sub Command1_Click()
Dim n As Double

n = 2#
Divise2 (n)
MsgBox "resultat = " & n

End Sub

Private Sub Divise2(ByRef x As Double)
x = x / 2
End Sub



Celui-ci est un grand classique de mauvaise utilisation
de certaines fonctions ou objets dont le premier
élément est à l'indide zéro.

' Chapitre 2. Au voleur !
'
Private Sub Command2_Click()
Dim s As String, sr As String
Dim t() As String
Dim i As Integer

On Error Resume Next

' une phrase, les mots séparés par des espaces
s = "Dulce et decorum est pro patria mori"

' découpe en mots
t() = Split(s, " ")

' refabrique une chaine en listant les mots
' et en séparant chaque mot par une virgule
sr = ""
For i = 1 To 10
sr = sr & t(i) & ","
Next i
MsgBox "sr = " & sr

End Sub


Et enfin celui ci est un classique Overflow,
très contre-intuitif et pas simple à trouver
si on ne connait pas la doc qui explique
comment VB choisit le type de représentation
interne des résultats intermédiaire :

' Chapitre 3. Diviser pour régner ?
'
Private Sub Command3_Click()
Dim n1 As Integer, n2 As Integer, n3 As Integer

n1 = 1000
n2 = 1000

n3 = (n2 * n1) / n1

Debug.Print n3

End Sub

Ceux-la soint courts et assez simples à trouver pour
un programmeur de niveau moyen. Un débutant peut s'y
arracher les cheveux quelques heures!


Bon amusement;


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
jean-marc
"andre.araste" wrote in message
news:47ac4409$0$852$
Bonjour

J'anime une rubrique Visual Basic parmi un club de retraités.

Chaque trimestre je propose un petit programme VB5 & VB6 qui comporte une
erreur de programmation simple mais subtile l'empêchant de fonctionner
correctement.



Re bonjour,

En voici une autre pour le plaisir, qui peut
être difficile à détecter si on maintient la
présentation que je donne ici :

Private Sub Command4_Click()
Dim perimetre As Double
Dim surface As Double
Dim PI As Double
Dim volume As Double
Dim rayon As Double

' Initialisation des variables
rayon = 3
' definition de la constante PI
PI = "3.141592657"
' calculs
' P = 2.PI.R
perimetre = 2 * PI * rayon
' S = PI.R^2
surface = PI * rayon * rayon
' V = 4/3 PI.R^3
volume = (4 / 3) * PI * (rayon ^ 3)

MsgBox "Perimetre = " & perimetre
MsgBox "Surface = " & surface
MsgBox "Volume = " & rayon

End Sub

Ca a des chances de ne marcher qu'avec des débutants,
mais les résultats obtenus sont rigolos :-))


Bonne journée,

Cordialement



--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
LE TROLL
' programme qui refuse de se fermer, quelle que
soit la
' réponse, du fait que la condition est mal posée.

Sub Form_Unload(Cancel As Integer)
MsgBox "confirmer la sortie du programme",
vbYesNo + vbDefaultButton2 + vbQuestion
If vbYes <> True Then
Cancel = -1
Exit Sub
End If
Unload Form1
End
End Sub


--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"andre.araste" a écrit
dans le message de news:
47ac4409$0$852$
| Bonjour
|
| J'anime une rubrique Visual Basic parmi un club
de retraités.
|
| Chaque trimestre je propose un petit programme
VB5 & VB6 qui comporte une
| erreur de programmation simple mais subtile
l'empêchant de fonctionner
| correctement.
|
| Il faut bien entendu trouver l'erreur et
redresser le programme.
|
| Je manque d'idées.
|
| Pouvez-vous me proposer quelques cas issus de
votre expérience personnelle ?
|
| Merci et ...
| --
| Bonne réception.
|
| http://perso.orange.fr/andre.araste/
| Membre du Club Win's: http://www.clubwins.org
| Avertissement: Je ne vends rien.
|
|
Avatar
LE TROLL
Sub Form_Load()
' text1 dont on a oublié le multiLines
Text1 = "un" & vbCrLf
Text1 = Text1 & "deux" & vbCrLf
Text1 = Text1 & "trois" & vbCrLf
End Sub

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"andre.araste" a écrit
dans le message de news:
47ac4409$0$852$
| Bonjour
|
| J'anime une rubrique Visual Basic parmi un club
de retraités.
|
| Chaque trimestre je propose un petit programme
VB5 & VB6 qui comporte une
| erreur de programmation simple mais subtile
l'empêchant de fonctionner
| correctement.
|
| Il faut bien entendu trouver l'erreur et
redresser le programme.
|
| Je manque d'idées.
|
| Pouvez-vous me proposer quelques cas issus de
votre expérience personnelle ?
|
| Merci et ...
| --
| Bonne réception.
|
| http://perso.orange.fr/andre.araste/
| Membre du Club Win's: http://www.clubwins.org
| Avertissement: Je ne vends rien.
|
|
Avatar
LE TROLL
' form qui se plante quand on la réduit en tâche
' absence de test de "WindowsStats"
' maxiButton = false
Sub Form_Resize()
ScaleMode = 1 ' twip
If Form1.Height <= 1200 Then
Form1.Height = 1200
Exit Sub
End If
If Form1.Height >= 10000 Then
Form1.Height = 10000
Exit Sub
End If
' list1 qui est resizée en HAUTEUR, suivant la
taille de la form
List1.Height = Form1.Height - 750
End Sub


--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"andre.araste" a écrit
dans le message de news:
47ac4409$0$852$
| Bonjour
|
| J'anime une rubrique Visual Basic parmi un club
de retraités.
|
| Chaque trimestre je propose un petit programme
VB5 & VB6 qui comporte une
| erreur de programmation simple mais subtile
l'empêchant de fonctionner
| correctement.
|
| Il faut bien entendu trouver l'erreur et
redresser le programme.
|
| Je manque d'idées.
|
| Pouvez-vous me proposer quelques cas issus de
votre expérience personnelle ?
|
| Merci et ...
| --
| Bonne réception.
|
| http://perso.orange.fr/andre.araste/
| Membre du Club Win's: http://www.clubwins.org
| Avertissement: Je ne vends rien.
|
|
Avatar
LE TROLL
' test qui ne teste rien dans un textBox (pas de :
keyascii = 0)
Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then Exit Sub
End Sub


--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"andre.araste" a écrit
dans le message de news:
47ac4409$0$852$
| Bonjour
|
| J'anime une rubrique Visual Basic parmi un club
de retraités.
|
| Chaque trimestre je propose un petit programme
VB5 & VB6 qui comporte une
| erreur de programmation simple mais subtile
l'empêchant de fonctionner
| correctement.
|
| Il faut bien entendu trouver l'erreur et
redresser le programme.
|
| Je manque d'idées.
|
| Pouvez-vous me proposer quelques cas issus de
votre expérience personnelle ?
|
| Merci et ...
| --
| Bonne réception.
|
| http://perso.orange.fr/andre.araste/
| Membre du Club Win's: http://www.clubwins.org
| Avertissement: Je ne vends rien.
|
|
Avatar
LE TROLL
' BOUM si <rc> pour changer des 3 text1(indexés),
manque keyascii=0
Sub Text1_KeyPress(Index As Integer, KeyAscii As
Integer) '0, 1, 2
If Index = 0 And KeyAscii = 13 Then
Text1(Index + 1).SetFocus
Exit Sub
End If
If Index = 1 And KeyAscii = 13 Then
Text1(Index + 1).SetFocus
Exit Sub
End If
End Sub


--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"andre.araste" a écrit
dans le message de news:
47ac4409$0$852$
| Bonjour
|
| J'anime une rubrique Visual Basic parmi un club
de retraités.
|
| Chaque trimestre je propose un petit programme
VB5 & VB6 qui comporte une
| erreur de programmation simple mais subtile
l'empêchant de fonctionner
| correctement.
|
| Il faut bien entendu trouver l'erreur et
redresser le programme.
|
| Je manque d'idées.
|
| Pouvez-vous me proposer quelques cas issus de
votre expérience personnelle ?
|
| Merci et ...
| --
| Bonne réception.
|
| http://perso.orange.fr/andre.araste/
| Membre du Club Win's: http://www.clubwins.org
| Avertissement: Je ne vends rien.
|
|
Avatar
LE TROLL
'ultra classique !
Sub Form_Activate()
Dim i As Long
Dim j As Byte
For i = 1 To 80000
j = i
Next i
End Sub


--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"andre.araste" a écrit
dans le message de news:
47ac4409$0$852$
| Bonjour
|
| J'anime une rubrique Visual Basic parmi un club
de retraités.
|
| Chaque trimestre je propose un petit programme
VB5 & VB6 qui comporte une
| erreur de programmation simple mais subtile
l'empêchant de fonctionner
| correctement.
|
| Il faut bien entendu trouver l'erreur et
redresser le programme.
|
| Je manque d'idées.
|
| Pouvez-vous me proposer quelques cas issus de
votre expérience personnelle ?
|
| Merci et ...
| --
| Bonne réception.
|
| http://perso.orange.fr/andre.araste/
| Membre du Club Win's: http://www.clubwins.org
| Avertissement: Je ne vends rien.
|
|
Avatar
LE TROLL
' pourquoi ça plante ??? en (2eme), un peu de
culture...

Sub Form_Activate()
Dim ladate As Date
'
Cls
Print " "
ladate = "29/02/2000"
GoSub jour
ladate = "29/02/1900"
GoSub jour
Exit Sub
jour:
Select Case Weekday(ladate)
Case 1: Print " dimanche " & ladate
Case 2: Print " lundi " & ladate
Case 3: Print " mardi " & ladate
Case 4: Print " mercredi " & ladate
Case 5: Print " jeudi " & ladate
Case 6: Print " vendredi " & ladate
Case 7: Print " samedi " & ladate
End Select
Return
End Sub


--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"andre.araste" a écrit
dans le message de news:
47ac4409$0$852$
| Bonjour
|
| J'anime une rubrique Visual Basic parmi un club
de retraités.
|
| Chaque trimestre je propose un petit programme
VB5 & VB6 qui comporte une
| erreur de programmation simple mais subtile
l'empêchant de fonctionner
| correctement.
|
| Il faut bien entendu trouver l'erreur et
redresser le programme.
|
| Je manque d'idées.
|
| Pouvez-vous me proposer quelques cas issus de
votre expérience personnelle ?
|
| Merci et ...
| --
| Bonne réception.
|
| http://perso.orange.fr/andre.araste/
| Membre du Club Win's: http://www.clubwins.org
| Avertissement: Je ne vends rien.
|
|
1 2