Conversion VBA Excel vers C#

Résolu
gruf Messages postés 29 Date d'inscription jeudi 18 janvier 2018 Statut Membre Dernière intervention 25 octobre 2018 - 30 avril 2018 à 20:46
gruf Messages postés 29 Date d'inscription jeudi 18 janvier 2018 Statut Membre Dernière intervention 25 octobre 2018 - 4 mai 2018 à 11:30
Bonjour, Merci d'avance pour votre aide. Voila j'avais fais ce code en Excel Vba :


Me.TxtNumMoov.MaxLength = 11 'nb caracteres maxi dans textbo

valeur = Len(Me.TxtNumMoov.Text)
If valeur = 0 Then
Select Case KeyAscii
Case 57, 55

Case Else

KeyAscii = 0
End Select

End If
If valeur = 1 Then
bar = Mid(Me.TxtNumMoov, 1, 1)
'contrôle sur le 7 qui prendra que 9
If bar = "7" Then
Select Case KeyAscii
Case 57 'le chiffre 9
Case Else
KeyAscii = 0
End Select
Else
'contrôle sur le 9 qui prendra de 6 à 9
If bar = "9" Then
Select Case KeyAscii
Case 54 To 57 'les chiffres de 6 à 9
Case Else
KeyAscii = 0
End Select
End If
End If
End If

'contrôle de la saisie
Select Case KeyAscii
Case 48 To 57 'les chiffres de 0 à 9

Case Else

KeyAscii = 0
'MsgBox "Carractère interdit !"
End Select

'placer un "-" après chaque deux byte de nombre
Select Case Len(TxtNumMoov.Text)
Case 2, 5, 8

TxtNumMoov.Text = TxtNumMoov.Text & "-"
End Select

Me.TxtNumMoov.SetFocus


Alors j'aimerais refaire la chose même en C#. bon le but de ce code est de contrôler la saisie de l'utilisateur et de personnaliser l'affichage de la saisie du textbox du genre (XX-XX-XX-XX). bon j'ai essayé de faire cela avec substring le résultat n'était pas ça. Merci d'avance

1 réponse

Whismeril Messages postés 19019 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 14 avril 2024 655
30 avril 2018 à 20:58
Bonsoir

alors on va commencer par ne surtout pas traduire ton code.
VBA, c'est un langage vaguement orienté objet.

C# c'est un langage tout objet.

Pour bien coder en C#, il ne faut pas penser l'algorithme comme en VBA.
Tu "oublies" ce que tu connais et tu réapprends.

Donc en .Net (comme dans beaucoup de langages), il existe un contrôle qui fait ça tout seul
https://msdn.microsoft.com/fr-fr/library/system.windows.forms.maskedtextbox(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1
2
gruf Messages postés 29 Date d'inscription jeudi 18 janvier 2018 Statut Membre Dernière intervention 25 octobre 2018
1 mai 2018 à 08:45
ok merci
0
gruf Messages postés 29 Date d'inscription jeudi 18 janvier 2018 Statut Membre Dernière intervention 25 octobre 2018
2 mai 2018 à 04:37
salut, pour l'affichage de la saisie c'est ok avec Append(). Mais j'ai ce message d'erreur : An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll

Additional information: L'index et le compte doivent faire référence à un emplacement situé dans la chaîne. ce message apparait au moment de la gestion des saisies.


// contrôle de saisie
if(koa==1)
{
if (go != "9" || go != "7")
{
maskedTextBox2.Text.Remove(1, 1); // c'est ici
}

}


Merci
0
Whismeril Messages postés 19019 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 14 avril 2024 655
2 mai 2018 à 06:54
Je t’ai dit que ce controle fait ca tout seul.
Tu lui mets un masque et c’est tout pas de code.

Ps pour poster un code, il faut forcer le langage de la coloration (là ça fait des pavés gris, moche, sans ascenseur, bref illisibles) voir ici
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
gruf Messages postés 29 Date d'inscription jeudi 18 janvier 2018 Statut Membre Dernière intervention 25 octobre 2018
4 mai 2018 à 11:30
Merci problème résolu
0
Rejoignez-nous