Textbox / Formulaire / Incompatibilité de type "Erreur 13"
Résolu
Julien
-
Julien -
Julien -
Bonjour tout le monde,
Je débute sous VBA, j'ai commencé il y a quelques jours. Donc si mes questions peuvent vous paraitre simples je m'en excuse.
J'ai parcouru plusieurs forum sans trouver la solution à mon problème (malgré que plusieurs questions ressemblais à ce que je cherchais) donc je me permets de la poser ici.
Mon problème :
J'ai créé un formulaire "Notation"
Dans celui-ci j'ai des TextBox
Les TextBox de 1 à 16 font références à la valeur des cellules correspondantes dans un fichier excel (correspondance assurée par "numl")
Les textBox 17 à 32 devrait me permettre de mettre à jour les données en ajoutant la valeur correspondante.
Le problème de mon code est que quand je le lance j'ai une erreur d'incompatibilité de type.
Je soupçonne que c'est du au fait que j'associe le texte "TextBox" & "I" (qui est integer) Mais je n'ai aucune idée de comment le résoudre...
Exemple:
Cellule : M1 = 2
TextBox1 = 2
TextBox17 = 10
Actualisation (Assurer par le boutton4)
Cellule M1 = 12
TextBox1 = 12
TextBox17 = ""
PS : l'objet 'numl" me permet de retrouver la ligne de la cellule travaillé.
J'espère que je n'ai pas été trop vague.
J'espère que vous pourrez m'aider, n'hésitez pas à me demander des précisions.
Merci d'avance de votre aide précieuse!!
Je débute sous VBA, j'ai commencé il y a quelques jours. Donc si mes questions peuvent vous paraitre simples je m'en excuse.
J'ai parcouru plusieurs forum sans trouver la solution à mon problème (malgré que plusieurs questions ressemblais à ce que je cherchais) donc je me permets de la poser ici.
Mon problème :
J'ai créé un formulaire "Notation"
Dans celui-ci j'ai des TextBox
Les TextBox de 1 à 16 font références à la valeur des cellules correspondantes dans un fichier excel (correspondance assurée par "numl")
Les textBox 17 à 32 devrait me permettre de mettre à jour les données en ajoutant la valeur correspondante.
Le problème de mon code est que quand je le lance j'ai une erreur d'incompatibilité de type.
Je soupçonne que c'est du au fait que j'associe le texte "TextBox" & "I" (qui est integer) Mais je n'ai aucune idée de comment le résoudre...
Exemple:
Cellule : M1 = 2
TextBox1 = 2
TextBox17 = 10
Actualisation (Assurer par le boutton4)
Cellule M1 = 12
TextBox1 = 12
TextBox17 = ""
Private Sub CommandButton4_Click()
Dim c As Range
Dim numl
Dim a As Integer
Dim T As Integer
a = Worksheets(ActiveSheet.Name).Index
Set c = ActiveCell
numl = c.Offset(1, 0).Value
TextBox42 = ActiveCell.Value
TextBox41 = Sheets(a).Range("I" & 1).Value
For T = 17 To 32
If IsEmpty("TextBox" & T) = True Then
Sheets(3).Cells(T - 4 & numl).Value = CDbl(("TextBox" & ((T - 16))))
ElseIf IsEmpty("TextBox" & T) = False Then
Sheets(3).Cells(T - 4 & numl).Value = (CDbl(("TextBox" & T)) + CDbl(("TextBox" & (T - 16))))
End If
Next T
Unload Me
Notation.Show
PS : l'objet 'numl" me permet de retrouver la ligne de la cellule travaillé.
J'espère que je n'ai pas été trop vague.
J'espère que vous pourrez m'aider, n'hésitez pas à me demander des précisions.
Merci d'avance de votre aide précieuse!!
A voir également:
- Textbox / Formulaire / Incompatibilité de type "Erreur 13"
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Fifa 13 - Télécharger - Jeux vidéo
- Formulaire de reclamation instagram - Guide
- Erreur 3005 france tv - Forum TV & Vidéo
1 réponse
Bonjour,
Pour explorer les textbox, tu peux utiliser une boucle de ce type :
Pour explorer les textbox, tu peux utiliser une boucle de ce type :
Option Explicit Private Sub CommandButton1_Click() Dim Ctr As Control For Each Ctr In Me.Controls If TypeOf Ctr Is MSforms.TextBox Then If Ctr.Value = vbNullString Then MsgBox Ctr.Name & " est vide" ' à remplacer par tes instructions Else MsgBox Ctr.Name & " = " & Ctr.Value ' idem End If End If Next End Sub
D'abord je vous remercie pour votre première réponse. Cela m'a appris la fonction "Ctr" qui me servira à de multiples reprises. je vais approfondir mes connaissances pour cette fonction.
Votre code marche très bien, Ceci dit, j'ai besoin de tester la validité uniquement sur certaines "textbox" : de la 17 à la 32. Si jamais ces textbox sont vides, je souhaite les additionner à la texbox (N - 16) r ou plutôt à la cellule afficher sur cette textBox (N-16).
Exemple :
TextBox 17 = 12
TextBox (17-16) = Valeur de départ + 12
Cellule (columns(17-4), numl) = Valeur de départ +12
De manière générale je cherche à créer un objet qui reprend le numéro de la TextBox pour pouvoir y faire référence par la suite.
C'est ce que j'essaye de faire avec :
num = Mid(Ctr.Name, 8)
Donc j'ai écris avec ton script: Et ça marche plutôt pas mal dans l'ensemble. Pet être as tu des idée pour simplifier?
En tout cas MERCI beaucoup! Vous m'avez bien aidé!!
Je me permet de vous posez une question quelque peu différente quoique complémentaire.
Lorsque j'ouvre mon formulaire en mode non-modal; j'aimerai que celui ci s'actualise à chaque fois que je sélectionne une nouvelle cellule dans mon classeur excel. Pensez vous que cela est possible?
Je pensais utiliser quelque chose du genre :
UserForm_KeyDown
UserForm_KeyUp
Mais je dois apprendre comment m'en servir.
Si vous avez une solution simple je suis preneur.
Encore MERCI.
Je n'ai pas essayé mais je pense à :
Le sujet est OK.
Si vous voulez répondre à mon autre question :
https://forums.commentcamarche.net/forum/affich-32931751-actualisation-du-formulaire-lors-de-changement-de-cellule-active#newanswer
PS : la fonction Userform1.repaint ne marche pas vraiment car elle ne modifie pas le contenu des textBox