Bug des macros [Résolu]

gruf 8 Messages postés jeudi 18 janvier 2018Date d'inscription 7 février 2018 Dernière intervention - 25 janv. 2018 à 18:43 - Dernière réponse : gruf 8 Messages postés jeudi 18 janvier 2018Date d'inscription 7 février 2018 Dernière intervention
- 7 févr. 2018 à 01:40
Bonjour, Merci pour toute l'aide que vous m'aviez donné.
Bon j'ai un userform pour faire des saisie de données comprenant des textbox et des combobox. Parfois certains textbox et combobox se plantent. j"ai plus de 20 textbox et combobox sur mon Userform.
Afficher la suite 

5 réponses

Répondre au sujet
Whismeril 10978 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 6 février 2018 Dernière intervention - 25 janv. 2018 à 19:25
+3
Utile
1
Bonsoir
Ma boule de cristal dit que ton code est envouté.
Fait une offrande au dieu du vba.

Ha pardon, tu voulais une réponse sérieuse?
Et bien c’est impossible.
  • Tu n’as montré aucun code ou poster un fichier d’exemple (sans données confidentielles, sur un hébergeur tierce, cijoint par exemple)
  • Tu n’as pas dit quelles successions d’actions declenchent le bug
  • Tu n’as pas décrit le bug ou transcrit un message d’erreur.


gruf 8 Messages postés jeudi 18 janvier 2018Date d'inscription 7 février 2018 Dernière intervention - 26 janv. 2018 à 09:57
Bonjour Whismeril merci pour cette intervention. Voilà le code d'une de mes textbox qui récupère l'âge de l'utilisateur. son bug est qu'une fois la macro de contrôle d'âge exécuté elle ne reprend plus le curseur et parfois il est même impossible de remettre le curseur sur ce textbox car au Click de la souri rien ne se passe


Private Sub Txtdatebornphy_Change()

Dim today As Date
Dim age As Date
Dim valeur As Byte
Dim calc As Long
Dim uz As Integer
Dim dat As Integer
Dim som As Integer
Dim foer As String
Dim loar As String

'contrôle de saisie en fonction de l'âge
valeur = Len(Me.Txtdatebornphy.Text)


If valeur = 10 Then

foer = Mid(Txtdatebornphy.Text, 7)
loar = Mid(CStr(CDate(Date)), 7)
uz = Val(foer)
dat = Val(loar)
som = dat - uz


If som <= 10 And som >= 7 Then
If Me.Txtcollecteur.Text <> "" Then
Me.RbcarteNon = True
Me.PnlréférencementParrain.Visible = True
Me.PnlréférencementParrain.Enabled = True
Me.TxtNomParrain = ""
Me.TxtNomParrain.SetFocus
Exit Sub
End If
End If
If som < 7 Then
Me.Txtdatebornphy.Value = ""
Me.Txtdatebornphy.SetFocus
MsgBox "Le client doit avoir un âge supérieur ou égale à 7 ans au minimum", vbOKOnly + vbCritical, "Erreur"
Me.Pnlphysique.Enabled = True
Me.Txtdatebornphy.Value = ""
Me.Txtdatebornphy.SetFocus


End If

End If

Me.Txtdatebornphy.SetFocus

End Sub



Le bug récurent est que les textbox refusent de prendre le curseur et l'autocomplétion des combobox qui ne fonctionne plus
comme exemple voici le code du combobox qui récupère les nationalités


Private Sub CBnationalphy_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

'dévérouillage de la console combobox
Dim F As Integer
Dim lr As Integer
Dim bis As Integer
Dim ws As Worksheet
Set ws = Sheets("Nationalité")

lr = ws.Cells(Rows.count, 1).End(xlUp).Row + 1

Select Case KeyAscii

Case 97 To 122 ' Caracteres alpha min

Case 8
'Retour Chariot

Case Else

KeyAscii = 0

End Select


With ws

For F = 2 To lr
Me.CBnationalphy.AddItem (.Cells(F, 1))
Next F
End With

End Sub


Merci d'avance
Commenter la réponse de Whismeril
ucfoutu 18033 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 1 février 2018 Dernière intervention - 26 janv. 2018 à 19:19
+2
Utile
2
Bonjour

Plusieurs lignes de ton code me donnent à penser que tu n'as aucune conscience réelle du résultat des instructions que tu écris.
La plus surprenante de ces instructions est sans aucun doute l'utilisation que tu fais de l'évènement Keypress de la combobox !
Pour ton info : à chaque fois qu'une touche alphabétique est pressée dans la zone d'édition de ta combo, tu y ajoutes x fois (ou x = lr) les mêmes articles (toujours les mêmes, d'ailleurs).
Très rapidement, même les oeufs doivent envier ta combobox. Même eux sont moins pleins qu'elle ne l'est ... Et elle l'est à ce point (pleine) qu'elle déborde .
Devant un tel constat, je préfère ne pas aller au-delà, le seul conseil que j'ai à te donner étant de t'intéresser d'abord sérieusement à la fois aux choses les plus élémentaires et à la nature des instructions que tu exécutes.

gruf 8 Messages postés jeudi 18 janvier 2018Date d'inscription 7 février 2018 Dernière intervention - 27 janv. 2018 à 11:46
Merci ucfoutu je vais modifier mon code pour voir
gruf 8 Messages postés jeudi 18 janvier 2018Date d'inscription 7 février 2018 Dernière intervention - 7 févr. 2018 à 01:40
grand merci j'ai trouvé la source du problème. Et la modification du code a largement accéléré le traitement. Merci ucfoutu
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.