Microsoft 365 TextBox (sans création d'UserForm) = modal ? ou pas ?

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite une belle fin de journée :)

Job75 m'a donné un TextBox (direct sans création d'UserForm) qui fonctionne super bien , encore un grand merci car c'est vraiment pratique :)

J'aimerais obliger la sortie de ce TextBox avant de pouvoir cliquer dans une autre cellule de la feuille, sauf si clic sur la cellule "H2".
J'ai tenté et cherché sans trouver.

Est-ce possible ?
En cas, je joins le fichier test.

Je vous remercie pour votre aide,
Amicalement,
lionel,
 

Pièces jointes

  • cellule_msgBAffiche.xlsm
    25.3 KB · Affichages: 16
Solution
Bonjour Gérard, le Forum,
Je vous souhaite un beau WE :)
Merci Gérard pour cette modification :)

Je reviens sur "En général les codes que je propose sont assez élaborés et n'ont pas à être modifiés."
Evidemment, tes codes répondent toujours au besoin exprimé, sont toujours d'une grande précision et n'ont pas à être modifiés :)

De mon côté, "Usine à gaz 🤣" oblige lol 🤔 , mes fichiers de travail sont toujours "équipés" de beaucoup de codes me permettant de "diriger", "d'orienter" et de prévoir si possible "toutes les erreurs de saisies ou de clics intempestifs".

Quand je poste un sujet, si j'expliquais mon besoin jusqu'à l'intégration finale dans le fichier de travail concerné, personne ne pourrait me répondre et je...

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Usine à gaz, le forum

une très légère modification devrait suffire !

Bien cordialement, @+
VB:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
With TextBox1
    If Not Intersect(R, Range("f2:h27")) Is Nothing Then 'désactive ti autre feuille
        .Visible = False
        If Intersect(ActiveCell, [F4:F27,H2]) Is Nothing Or ActiveCell = "" Then Exit Sub 'Or ActiveCell = "Ferme" Then Exit Sub
        .Text = ActiveCell
        .SelStart = 0
        .Visible = True
    Else
        .Visible = False
    End If
End With
End Sub
 

fanch55

XLDnaute Barbatruc
Salut Lionel :
A rajouter:
VB:
Private Sub TextBox1_LostFocus()
    If ActiveCell <> "Ferme" Then TextBox1.Activate
End Sub
ou
Code:
Private Sub TextBox1_LostFocus()
    If ActiveCell.Address <> "$H$2" Then TextBox1.Activate
End Sub
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
re, salut fanch55

@Usine à gaz , après relecture de ta demande, ce serait plutôt cela.
VB:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
With TextBox1
    If Not Intersect(R, Range("f2:h27")) Is Nothing Then 'désactive ti autre feuille
        If Not ActiveCell = "Ferme" Then .Visible = False
        If Intersect(ActiveCell, [F4:F27]) Is Nothing Or ActiveCell = "" Or ActiveCell = "Ferme" Then Exit Sub
        .Text = ActiveCell
        .SelStart = 0
        .Visible = True
    Else
        .Visible = False
    End If
End With
End Sub
 

job75

XLDnaute Barbatruc
Bonjour Lionel, salut Yeahou, fanch55,

En général les codes que je propose sont assez élaborés et n'ont pas à être modifiés.

C'est le cas ici, tu compliques inutilement les choses avec ta cellule H2.

Et il est logique de positionner la TextBox à coté de la cellule sélectionnée.

A+
 

job75

XLDnaute Barbatruc
Une chose possible c'est de remplacer Private Sub TextBox1_Change() par :
VB:
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Cela permet de modifier la cellule quand on est sûr du texte ou bien d'annuler.
 

job75

XLDnaute Barbatruc
Bonjour Lionel, le forum,

Je joins le fichier.

Pour que le texte soit correctement cadré dans la TextBox j'ai ajouté .Activate qui lui donne le focus.

A+
 

Pièces jointes

  • cellule_msgBAffiche(1).xlsm
    27.3 KB · Affichages: 5

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Gérard, le Forum,
Je vous souhaite un beau WE :)
Merci Gérard pour cette modification :)

Je reviens sur "En général les codes que je propose sont assez élaborés et n'ont pas à être modifiés."
Evidemment, tes codes répondent toujours au besoin exprimé, sont toujours d'une grande précision et n'ont pas à être modifiés :)

De mon côté, "Usine à gaz 🤣" oblige lol 🤔 , mes fichiers de travail sont toujours "équipés" de beaucoup de codes me permettant de "diriger", "d'orienter" et de prévoir si possible "toutes les erreurs de saisies ou de clics intempestifs".

Quand je poste un sujet, si j'expliquais mon besoin jusqu'à l'intégration finale dans le fichier de travail concerné, personne ne pourrait me répondre et je le comprendrais parfaitement car ce serait de vrais "casse tête". Je suis déjà pas mal lol 🤣

C'est pour cela que j'émets le besoin qui sera le code de base que j'aurai à modifier en fonction de l'intégration dans les codes du fichier de travail concerné.

Par exemple, en ce qui concerne ce #post, dans le fichier de travail :
- j'ai besoin d'afficher en grand et au plein milieu le TextBox, pour voir tout le texte contenu dans la cellule,
- TextBox en cours d'utilisation si clic dans certaines cellules, d'autres codes s'exécutent et il me fallait trouver comment les en empêcher, dans le fichier joint, pour l'exemple, j'ai codé si clic sur la cellule "J2",
- il fallait aussi que le code du TextBox ne s'exécute pas si je lance un autre code m'amenant sur une autre feuille,
- j'ai besoin aussi que le TextBox soit fermé uniquement au clic sur la cellule "H2",
(si clic dans cellule vide "F4:F27" tu l'avais déjà fait :))

Je profite de ce long message pour te remercier car sans tes codes et les codes d'autres intervenants, à l'évidence, je n'aurais jamais pu travailler dans de bonnes conditions.

Bien évidement, j'en oublierais si je faisais la liste de tous ceux qui m'ont aidé directement ou indirectement,. Je remercie vraiment tous les "aidants" de notre Forum.

Sincères GRANDS MERCIS à toi et à tous,
Amicalement,
lionel :)
 

Pièces jointes

  • cellule_TextBox_Affiche.xlsm
    30.1 KB · Affichages: 6
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35