Problème utilisation d'un Userform

  • Initiateur de la discussion Initiateur de la discussion Icedarts
  • 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 !

Icedarts

XLDnaute Occasionnel
Bonjour à tous,

voila j'ai crée un userform sur une feuille qui s'active lorsque je clique sur une la cellule A8:A9 (elle est fusionné)
grace a ce code:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$8:$A$9" Then col = 4: UserForm1.Show
End Sub

Donc cette userform contient 8 petites cases ou je rentre du texte.
voila le code sur la feuille:
Code:
Private Sub TextBox1_Change()
If TextBox1 = " " Then Exit Sub
TextBox2.SetFocus
End Sub

Private Sub TextBox2_Change()
If TextBox2 = " " Then Exit Sub
TextBox3.SetFocus
End Sub
Private Sub TextBox3_Change()
If TextBox3 = " " Then Exit Sub
TextBox4.SetFocus
End Sub
Private Sub TextBox4_Change()
If TextBox4 = " " Then Exit Sub
TextBox5.SetFocus
End Sub
Private Sub TextBox5_Change()
If TextBox5 = "" Then Exit Sub
TextBox6.SetFocus
End Sub
Private Sub TextBox6_Change()
If TextBox6 = "" Then Exit Sub
TextBox7.SetFocus
End Sub
Private Sub TextBox7_Change()
If TextBox7 = "" Then Exit Sub
TextBox8.SetFocus
End Sub

Private Sub TextBox8_Change()
If TextBox8 = "" Then Exit Sub
[COLOR="Red"]lig = Cells(65000, col).End(8).Row + 1[/COLOR]
If lig < 7 Then lig = 7
Cells(lig, col - 7) = TextBox1
Cells(lig, col - 6) = TextBox2
Cells(lig, col - 5) = TextBox3
Cells(lig, col - 4) = TextBox4
Cells(lig, col - 3) = TextBox5
Cells(lig, col - 2) = TextBox6
Cells(lig, col - 1) = TextBox7
Cells(lig, col) = TextBox8
Application.EnableEvents = False
TextBox1 = "": TextBox2 = "": TextBox3 = "": TextBox4 = "": TextBox5 = "": TextBox6 = "": TextBox7 = "": TextBox8 = ""
Application.EnableEvents = True
TextBox1.SetFocus
End Sub

Private Sub UserForm_Click()

End Sub
Pour le moment quand je valide le 8eme caractère excel me dit qu'il y a un problème au niveau de la ligne de code en rouge, et je en sais pas trop quoi faire.

D'autre part dans chaque cellule je ne peux ecrire qu'un seul caractère je voudrais en mettre au maxi 5.
Je n'arrive pas non plus à choisir l'endroit ou va être mis ce texte.
Dans mon cas j'aimerai de D54 à K54.
Si vous pouviez me dire ce qu'il y a à modifier dans le code pour pouvoir choisir l'endroit ou se mettent les données et aussi pouvoir écrire plus d'un caractère par cellule ça me serait très utile.

Merci.
 

Pièces jointes

Dernière édition:
Re : Problème utilisation d'un Userform

Bonjour Icedarts,

Je n'ai pas regardé attentivement tout ton code, mais tu auras un souci avec 'col':
-Tu l'initialise à 4 dans ta macro événementielle 'SelectionChange' ... mais col ne "vaut plus rien" dans tes autres événements 'TextBoxChange'
- D'autre part, même si tu lui donnes (ailleurs) 4 comme valeur de départ, mais que, par la suite, tu fais 'col - 7', il devrait exister une colonne dont l'indice serait -3 !?

... Bref, j'ignore ce que tu veux faire exactement, mais ce qui est certain c'est que col pose problème. Quand tu exécute ton code et que tu as le message d'erreur, choisis déboguage et regarde dans l'Editeur VBA la fenêtre "variables locales"
 
Re : Problème utilisation d'un Userform

Bonjour,

Ce que je souhaite faire c'est un userform qui s'active quand je suis en A8:A9, dans lequel je peux mettre 8 nombres qui vont se mettre en D54:K54.

Je ne vois pas la fenetre "variables locales"???
 
Re : Problème utilisation d'un Userform

bonjour Icedarts,Modeste
une possibilité

Private Sub TextBox1_Change()
If Len(TextBox1) > 5 Then
TextBox1 = Left(TextBox1, 5)
End If

End Sub

Sub x()
Dim Col As Integer, I As Integer, L As Long
Col = 4
lig = Cells(65000, Col).End(xlUp).Row + 1
For I = 1 To 8
Cells(lig, Col + I - 1) = Controls("TextBox" & I)
Next I
End Sub

à bientôt
 
Re : Problème utilisation d'un Userform

Bonjour,

Je peux maintenant mettre plusieurs caractères dans une case.
Merci.
Par contre quand je fais "entrée" sur la 8eme case cela revient à la première.
Comment dois-je valider les résultats?
 
Re : Problème utilisation d'un Userform

re-bonjour,

dans l'éditeur VBA, menu Affichage, "Fenêtre variables locales" ...
Ton instruction
Code:
lig = Cells(65000, col).End(8).Row + 1
est destinée à trouver la ligne de la première cellule vide en colonne D ? ... Si c'est le but, et que 'col' est "vide", au lieu de valoir 4, ça ne fonctionne pas. Sur ma machine et en Excel 2000, si j'écris:
Code:
lig = Cells(65000, [COLOR="Red"][B]4[/B][/COLOR]).End([B][COLOR="red"]xlUp[/COLOR][/B]).Row + 1
... la ligne trouvée est la ligne 29 et non la 54

Edit: Ooops! Salut Bebere!
 
Re : Problème utilisation d'un Userform

Donc j'ai modifié le code de Bebere en remplacant col par 4.
J'ai mis un caractère en D54 finalement car en D53 il y a une formule.
Si les nombres sont en D55:K55 ce n'est pas important 😉
Par contre à la 8eme case avec le code de Bebere je ne parviens toujours pas à valider la saisie.
 
Re : Problème utilisation d'un Userform

et encore re-bonjour,

Je ne pense pas que la proposition de Bebere avait pour but de tout "régler" ... soit tu réutilises ton 'TextBox8_Change', soit tu ajoutes un bouton dans ton Usf ... dans les 2 cas, tu lances le code proposé par Bebere 'sub x()', pour lancer la recopie dans les cellules.
 
Re : Problème utilisation d'un Userform

J'ai essayé avec le textbox8_change
Mais maintenant ça bloque ici:
Cells(lig, col - 7) = TextBox1
Et je suppose que toutes les lignes du dessous ne sont pas valides non plus...
Merci de m'avoir indiqué ou se trouve la fenetre "variables locales" car avec ça je peux voir que c'est à nouveau "col" qui pose problème.
 
Re : Problème utilisation d'un Userform

voila j'ai modifié mon code:
Cells(Lig, 4) = TextBox1
Cells(Lig, 5) = TextBox2
Cells(Lig, 6) = TextBox3
Cells(Lig, 7) = TextBox4
Cells(Lig, 8) = TextBox5
Cells(Lig, 9) = TextBox6
Cells(Lig, 10) = TextBox7
Cells(Lig, 11) = TextBox8

Dernier petit problème.
Pouvoir mettre plusieurs caractères dans une même case.
 
Re : Problème utilisation d'un Userform

Aller ça vient ça vient!!!

J'ai modifié chaque textbox de cette manière:
Private Sub TextBox7_Change()
If Len(TextBox7) > 5 Then
TextBox7 = Left(TextBox7, 5)
End If
End Sub
Et cela fonctionne je peux mettre plusieurs caractères dans une cellule.

Mais ça ne fonctionne pas pour le 8eme textbox...

Private Sub TextBox8_Change()
If Len(TextBox8) > 5 Then
TextBox8 = Left(TextBox8, 5)
End If
Lig = Cells(65000, 4).End(xlUp).Row + 1
If Lig < 7 Then Lig = 7
Cells(Lig, 4) = TextBox1
Cells(Lig, 5) = TextBox2
Cells(Lig, 6) = TextBox3
Cells(Lig, 7) = TextBox4
Cells(Lig, 8) = TextBox5
Cells(Lig, 9) = TextBox6
Cells(Lig, 10) = TextBox7
Cells(Lig, 11) = TextBox8
Application.EnableEvents = False
TextBox1 = "": TextBox2 = "": TextBox3 = "": TextBox4 = "": TextBox5 = "": TextBox6 = "": TextBox7 = "": TextBox8 = ""
Application.EnableEvents = True
TextBox1.SetFocus
End Sub

La je ne vois pas quoi modifié???...
 
- 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
10
Affichages
298
Réponses
9
Affichages
205
Réponses
2
Affichages
170
Réponses
2
Affichages
469
Réponses
35
Affichages
2 K
Réponses
16
Affichages
1 K
Réponses
3
Affichages
673
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
184
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
532
Retour