Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
Bonjour à tous,
Je vous joint un fichier sur le quel je bute :
Je voudrais que lorsqu'un textbox change une action de controle s'effectue sur une feuille. Or cette action s'effectue seulement lors de la fermeture de l'Userform !!!
Peut on remédier à ce problème ?
Bonjour Pierre Jean , c'est vrai que mes explications sont embrouillées je vais tenter d'éclaircir celà :
Les textbox 8 à 67 correspondent à des cases à bouteilles avec en valeur le N° de case.
Quand l'userform s'initialise seul les N° de places vides s'affichent ( par rapport à la feuille case).
Lorsque je saisie de nouvelles entrées ; pour une référence de vin les places choisies se mettent en textbox5 pour être inscrite en colonne U de la feuille cave.
Puis sur la feuille case disparraissent pour indiquer que la case est occupée.
Ce que je voudrais c'est quand une case est sélectionnée pour se mettre en textbox 5 que le N° de case ne s'affiche plus dans son textbox.
Si j'ai bien compris en rajoutant une instruction pour vider le TB dans la procédure TextBoxXX_DblClick, cela devrait suffir.
Comme ceci :
Code:
Private Sub TextBox15_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox5 = "" Then
TextBox5 = TextBox15
Else
TextBox5.Value = TextBox5.Value & " " & TextBox15.Value
End If
[COLOR=blue]TextBox15 = ""[/COLOR]
End Sub
Par ailleurs tu pourrais aussi vider le TB 5 après avoir clicker sur le bouton "SAISIE". Cela te permetterais de faire plusieurs saisies à suivre.
Je me suis permis de "jouer" un peu avec ton fichier en y introduisant un module de classe (mon tout premier 🙂) en adaptant un code de Pierrot93, même si je ne maitrise pas bien ce genre de chose.
Le module de classe gére le double click sur les TextBox8 à ... TextBox67.
Cela permet de n'avoir qu'un seul code pour tous ces Textboxs.
L'alimentation des TextBoxs (8 à 67) est aussi modifiée avec une double boucle à l'initialisation du UserForm.
L'utilisation d'un module de classe dans ce cas, permet de définir une action commune à ensemble d'objet identique : ici des TextBox.
Cela évite de répéter plusieurs fois le même code.
Code:
Public WithEvents TBox As MSForms.TextBox
Création d'un nouvel objet équivalent à un TextBox et qui recevra les procédures évenementielles de ce dernier.
Code:
Private Sub TBox_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If UserForm1.TextBox5 = "" Then
UserForm1.TextBox5 = TBox
Else
UserForm1.TextBox5.Value = UserForm1.TextBox5.Value & " " & TBox.Value
End If
TBox = ""
End Sub
Procédure évenementielle du nouvel objet crée
Code:
Private MesObjets() As New Classe1
Variable qui fait référence au nouvel objet
Code:
For Each ctrl In Me.Controls
If TypeOf ctrl Is MSForms.TextBox Then
If Right(ctrl.Name, Len(ctrl.Name) - 7) > 7 And Right(ctrl.Name, Len(ctrl.Name) - 7) < 68 Then
ReDim Preserve MesObjets(0 To k)
Set MesObjets(k).TBox = ctrl
k = k + 1
End If
End If
Next ctrl
Boucle sur tous les contrôles du Userform. Si le contrôle est un TextBox et si son N° est > à 7 et < à 68 Il sera associé à l'objet TBox et utilisera la procédure évenementielle crée pour lui.
Pour l'alimentation des TextBox à l'ouverture du UserForm, comme les N° des TB se suivent et qu'ils sont positionnés comme sur ta feuille "case", en colonne, c'est assez simple d'utiliser une boucle pour les remplir.
Code:
j = 8
For q = 2 To 5
For z = 5 To 19
Controls("TextBox" & j) = Sheets("case").Cells(z, q)
j = j + 1
Next
Next
j correspond au N° des TB
q correspond au N° de la colonne de la feuille "case"
z correspond au N° de la ligne de la feuille "case"
Le TB N° 8 recevra le contenu de la cellule ligne 5 colonne 2 de la feuille
Le TB N° 9 recevra le contenu de la cellule ligne 6 colonne 2 de la feuille
Le TB N° 10 recevra le contenu de la cellule ligne 7 colonne 2 de la feuille
.../...
- 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