Problème conversion valeur contrôle

  • Initiateur de la discussion Initiateur de la discussion mécano41
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mécano41

XLDnaute Accro
Bonjour à tous,

Quelqu'un pourrait-il me dire où est l'erreur?

Code:
Private Sub BoutonValider_Click()
Dim Ctrl As Control
Dim T(1, 23)

For Each Ctrl In Me.Controls
    If Ctrl.Tag <> "" Then
        T(1, CLng(Ctrl.Tag)) = CSng(Ctrl.Value)
    End If
Next Ctrl

Les contrôles sont des Textbox dont les Tag sont en ordre croissant. Je cherche à mettre dans un tableau, au rang indiqué par le Tag, la valeur du Textbox correspondant convertie (ici en Single). Cela fonctionne sans le CSng (donc, en restant en texte), mais avec la conversion cela m'indique une erreur "Incompatibilité de type"...

Merci d'avance.

Cordialement
 
Re : Problème conversion valeur contrôle

Bonjour mecano41,

CSng, comme CLng ou CDbl, renvoie une erreur si la valeur à convertir n'est pas numérique (texte vide par exemple).

On peut donc utiliser :

Code:
Private Sub BoutonValider_Click()
Dim Ctrl As Control
Dim T(1, 23)

For Each Ctrl In Me.Controls
    If Ctrl.Tag<> Then
        If IsNumeric(Ctrl) then T(1, CLng(Ctrl.Tag)) = CSng(Ctrl)
    End If
Next Ctrl

End Sub
ou aussi :

Code:
Private Sub BoutonValider_Click()
Dim Ctrl As Control
Dim T(1, 23)

For Each Ctrl In Me.Controls
    If Ctrl.Tag <> "" Then
        T(1, CLng(Ctrl.Tag)) = Val(Replace(Ctrl, ",", "."))
    End If
Next Ctrl

End Sub
A+
 
Re : Problème conversion valeur contrôle

Bonjour job75,

Merci pour cette réponse. Effectivement, en faisant cela, tout fonctionne.

Mais alors, pourquoi si je fais ce qui suit, les trois cas fonctionnent :

Code:
Sub essai()
Dim A As String
A = "125"
MsgBox CSng(A)
MsgBox CSng(A) * 10
MsgBox A / 10
End Sub

Pour info. : les textbox concernés font l'objet d'un module de classe qui n'autorise qu'une saisie de chiffre, virgule et point...

Autre exemple : si je mets dans mon code, pour l'un des textbox "MsgBox CSng(TxtX1.Value)" par ex. cela me sort la valeur sans erreur...

Pourquoi cela ne fonctionne plus dans une boucle des contrôles. J'avoue ne pas toujours comprendre certaines réaction d'EXCEL...

Cordialement
 
Re : Problème conversion valeur contrôle

Re,

Mais alors, pourquoi si je fais ce qui suit, les trois cas fonctionnent :

Tout simplement parce que dans ton exemple IsNumeric(A) renverrai True...

En VBA il suffit que la fonction IsNumeric() renvoie True pour qu'un texte puisse se convertir en nombre.

Note que sur une cellule vide IsNumeric renvoie True.

Mais si la cellule contient une date (formatée) IsNumeric renvoie False.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
1 K
Compte Supprimé 979
C
Réponses
9
Affichages
1 K
N
Réponses
1
Affichages
650
New_VBA_User
N
V
Réponses
2
Affichages
2 K
VOILLOT
V
M
Réponses
2
Affichages
1 K
mikaconny
M
Q
Réponses
7
Affichages
3 K
M
Réponses
0
Affichages
948
MIMI28CG
M
K
Réponses
2
Affichages
1 K
K
Réponses
21
Affichages
3 K
Retour