Saisie automatique de champs userform depuis Inputbox

Bonjour toute et tous

Coucou XCellus^^

Bonjour JeanBaptiste

pour les Majuscules exemple ( à voir pour la textbox Société):

Private Sub TextBox1_Change()
    TextBox1 = UCase(TextBox1)
End Sub

crdlt

André

A nouveau,

Private Sub ComboBox1_Change()
    lgn = ComboBox1.ListIndex + 2
    With Sheets("Destinataires")
        For j = 2 To 7
            If ComboBox1 > "" Then Controls("TextBox_" & 10 + j) = .Cells(lgn, j) Else Controls("TextBox_" & 10 + j) = ""
        Next j
        If Controls("TextBox_12") = "Correspondant:" Then
        For k = 2 To 7
        Controls("TextBox_" & 10 + k) = ""
        Next k
        End If
    End With
    ComboBox1 = UCase(ComboBox1)
    Controls("TextBox_12").SetFocus
End Sub

Edit: Salut André13,

Vu que c'est fait pour le textbox, je l'ai fait pour le Combobox. Ainsi les sociétés seront à égalité.

Merci pour vos réponses, j'ai adapté le code et ça fonctionne :) Cependant, j'ai voulu ajouter un bouton "Annuler" sur mon projet afin de fermer une Userform et empêcher de fermer par la croix rouge en haut à droit de ma UF mais ça ne fonctionne pas comme je veux. Quand je clique sur "Annuler", j'ai bien le message de confirmation qui apparait puis celui qui me demande de me rendre en bas de page...

Est-ce que quelqu'un pourrait m'aider svp ?

Je poste les codes pour que ça soit plus clair.

Private Sub Annuler_Click()
If MsgBox("Êtes-vous certain de vouloir quitter la saisie ?", vbYesNo, "Demande de confirmation") = vbYes Then
Unload Me
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = CloseMode = 0
MsgBox ("Pour quitter cette fenêtre, cliquez sur le bouton #Annuler# situé en bas.")
End Sub

Merci à vous et bonne soirée

J-Baptiste

Bonsoir JeanBaptisteP,

Avec le code ci-dessous le départ du formulaire se fera par le bouton Annnuler et non par la croix haute.

Private Sub Annuler_Click()
Rep = MsgBox("Voulez-vous quitter? ", vbYesNo, "ATTENTION")
If Rep = 6 Then Unload Me
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = 1
If CloseMode = 0 Then Reponse = MsgBox("Veuillez quitter en fin de page par le bouton Annuler", vbCritical, "ATTENTION")
CmbAnnuler.SetFocus
CloseMode = Reponse
End Sub

Merci beaucoup pour votre réponse XCellus mais il a un bug sur le terme suivant:

CmbAnnuler.SetFocus

A quoi correspond le mot "Cmb" s'il vous plait ?

J-Baptiste

Suite,

Désolé, c'est le nom de mon bouton Annuler.

J'ai corrigé en première ligne mais pas sur cette ligne de code.

Marque Annuler, puisque c'est le nom de ton bouton

C'est mieux effectivement !

Merci pour votre retour.

J-Baptiste

Bonsoir à tout le forum,

Alors voilà je me permets de revenir vers vous car je sèche sur un code.

En fait, j'ai un shape qui permet d'ouvrir un UserForm. Jusque là tout va bien ! Ensuite j'ai un checkbox qui permet de redimensionner la UF s'il est coché ou non.

Mon 1er problème, c'est que je n'arrive pas à conserver les mêmes dimensions si je coche ou redécoche le checkbox, étrange...

Ma 2ème question est la suivante: Est-il possible de décaler les Label 2 à Label 5 vers le bas pour qu'ils suivent l'allongement vertical de la UF lorsque le checkbox est coché ?

Est-ce réalisable ?

Merci à celles et ceux qui auront des propositions à m'apporter :)

Bonne soirée

J-Baptiste

9test4.xlsm (15.49 Ko)

Bonjour toutes et tous

@JeanBaptiste

je jonglerai avec un Frame et dedans je place mes labels

à voir ci-joint

Private Sub CheckBox1_Click()
UserForm1.Width = 500
UserForm1.Height = 500
If CheckBox1.Value Then
UserForm1.Width = 500
UserForm1.Height = 800
Frame1.Top = 390
Else
UserForm1.Width = 500
UserForm1.Height = 500
Frame1.Top = 144
End If
End Sub

Private Sub UserForm_Initialize()
UserForm1.Width = 500
UserForm1.Height = 500
Frame1.Top = 144
End Sub
9test4-1.xlsm (21.58 Ko)

crdlt,

André

Bonsoir Andre13, merci pour votre proposition mais malheureusement cela ne s'adapte pas à mon projet. Par conséquent je pensais procéder différemment.

A partir de ma 1ère UF, j'ai placé un chekbox qui me permet de lancer un deuxième UF dans le cas où la case est cochée. Dans cette 2ème UF, il y aurait aussi des champs à renseigner. J'aimerais que ces résultats soient "mémorisés" lorsqu'on clique sur le bouton "Sauvegarder" et que le code ci-dessous soit avec lorsqu'on click sur "Valider" sur la UF1. Est-ce possible ou avez vous des propositions ? Dans ce cas je suis preneur !!

Private Sub CommandButton1_Click()
Worksheets("Calque2").Copy After:=Sheets(Sheets.Count)
wITH ActiceSheet
.Range("C17) = Userform1 +Textbox1  'je voudrais aller chercher l'info renseignée dans le textbox1 de la UF1
End Sub

Je joins un fichier exemple, j'espère que ça sera plus simple à comprendre

Bonne soirée

J-Baptiste

5test-2.xlsm (107.41 Ko)
9test-3.xlsm (160.22 Ko)

Bonjour toutes et tous,

Bonsoir JeanBaptiste

,,,,si j'ai un peu compris ta requête,,,,

ci-joint un aperçu

( il faudra après créer un formatage des cellules, vider les cellules, j'pense)

crdlt,

André

Bonjour Andre13,

Je reviens vers vous car la solution que vous m'avez proposé ne fonctionne pas comme souhaité. Je reformule ce que j'aurais souhaité obtenir (en espérant que cela soit réalisable!)

Sur la "Feuil1", j'ai un bouton "Lancement Userform1", lorsque je clique dessus j'affiche la UF1. Sur cette Userform je peux renseigner 3 textbox qui vont renseigner les cases B3 à B5 de "Feuil2". Sur cette UF1, j'ai aussi une checkbox qui permet d'ouvrir UF2 où je peux également renseigner du texte.

Ce que je souhaiterais, c'est que lorsque je saisie du texte dans les textbox de la UF2 et que je clique sur "MEMORISER", on "stocke" ces valeurs en mémoire et on les renseignent dans la "Feuil2" lorsqu'on clique sur le bouton "Valider" présent sur la UF1. Est-ce possible ?

Je joins mon fichier type, peut-être arriverez-vous à mieux comprendre mon projet.

Bon dimanche

J-Baptiste

5test-2.xlsm (21.48 Ko)

Bonsoir JeanBaptisteP, André13,

Bien que la demande me paraît un peu plus compliqué l'entrée de données. Pourquoi en deux temps au lieu d'un seule fois?

Et pourquoi la validation de l'userform2 ne ferait pas directement l'inscription de données sur la 2ième feuille?

J'ai réalisé quand même le besoin.

7testjbp-2.xlsm (23.12 Ko)

Bonjour ...

Avec 2 formulaires

dans le 1

Private Sub UserForm_Initialize()
    For n = 1 To 3: Me("TextBox" & n) = Feuil2.Cells(2 + n, 2): Next
End Sub
Private Sub CheckBox1_Click()
    If CheckBox1 Then UserForm2.Show
End Sub
Private Sub CommandButton1_Click()
    With Worksheets("Feuil2").Activate
        For n = 1 To 3: Feuil2.Cells(2 + n, 2) = Me("TextBox" & n): Next
        If CheckBox1 Then
            For n = 1 To 3: Feuil2.Cells(6 + n, 2) = Me("TextBox" & n).Tag: Next
        End If
    End With
    Unload Me
End Sub

dans le 2 :

Private Sub CommandButton1_Click()
    For n = 1 To 3: UserForm1.Controls("TextBox" & n).Tag = Me("TextBox" & n): Next
    Unload Me
End Sub

avec un seul formulaire et 2 cadres

Private Sub UserForm_Initialize()
    For n = 1 To 3:  Me("TextBox" & n) = Feuil2.Cells(n + 2, 2): Next
End Sub
Private Sub CheckBox1_Click()
   Frame2.Visible = CheckBox1
End Sub
Private Sub CommandButton3_Click()
    For n = 1 To 3: Feuil2.Cells(n + 2, 2) = Me("TextBox" & n): Next
    If CheckBox1 Then
        For n = 4 To 6: Feuil2.Cells(n + 3, 2) = Me("TextBox" & n): Next
    End If
    Unload Me
End Sub

Bonsoir à tout le forum,

Merci pour vos nombreuses propositions, vous m'avez beaucoup aidé ! J'ouvre 2 UF car je ne peux pas mettre de cadre sur ma première UF car celle-ci est déjà bien saturée !

J'ai retenu le code 1 de Ordonc car c'est celui qui répond le mieux à mes attentes.

Je vais essayé de l'adapter à mon projet et je reviendrai vers vous si jamais je rencontres des soucis. J'ai commencé et pour le moment ça fonctionne plutôt bien !

Par contre, petite question qui vous paraîtra basique je suppose mais je voudrais pouvoir décocher automatiquement la Checkbox1 présente sur la UF1 si on ferme la UF2 en cliquant sur la croix rouge. Je pensais à un code comme ceci:

Private Sub UserForm2_QueryClose(Cancel As Integer, CloseMode As Integer)
    UserForm1.(CheckBox1) = False
    End Sub

Je sais que mon code n'est pas bon mais c'est pour vous donner le but :)

Encore un grand merci pour votre aide si précieuse, c'est grâce à vous que mon projet prend forme !

Et pour répondre à XCellus:

Pourquoi en deux temps au lieu d'un seule fois?

Et pourquoi la validation de l'userform2 ne ferait pas directement l'inscription de données sur la 2ième feuille?

En 2 temps car la UF2 est un complément d'informations qui ne doit servir que si on coche Checkbox1 et qu'on clique sur le bouton "Valider" de la UF1.

Le but de la UF2, c'est de dupliquer 2 feuilles "calque" au lieu d'une avec les informations issues de la UF1 et UF2 dès lors que la checkbox 1 est validée.

Je vous enverrai un exemple si vous voulez de mon projet une fois que j'aurai avancé, peut-être aurez-vous des améliorations à proposer !

J-Baptiste

Re

Oups, dans mon premier code, je n’ai pas supprimé le .Activate.*

On peut se retrouver avec

‘le 1
Private Sub CheckBox1_Click()
  If CheckBox1 Then UserForm2.Show
End Sub
Private Sub CommandButton1_Click()
  With Worksheets("Feuil2")
    For n = 1 To 3
      .Cells(2 + n, 2) = Me("TextBox" & n)
      .Cells(6 + n, 2) = Me("TextBox" & n).Tag
    Next
  End With
  CheckBox1 = 0   ‘False
End Sub 
‘le 2
Private Sub CommandButton1_Click()
  For n = 1 To 3
     UserForm1.Controls("TextBox" & n).Tag = Me("TextBox" & n)
  Next
  UserForm1.CheckBox1 = 0
  Unload Me
End Sub

*habitué à travailler avec le CodeName plutôt que le Name, je n' ai pas été assez attentif. De plus, je ne me suis pas occupé du type de reports (Texte, Nombre, Date...) et là, c'est une autre histoire !

Bonsoir Ordonc,

Merci pour votre retour. Votre 1er code me convient parfaitement ne vous inquiétez pas. Par contre pourquoi écrivez-vous:

De plus, je ne me suis pas occupé du type de reports (Texte, Nombre, Date...) et là, c'est une autre histoire !

Par ailleurs, j'aimerais faire fonctionner le code ci-dessous sans pour autant utiliser des boucles mais celui-ci ne fonctionne pas, pourquoi ?

Private Sub CommandButton1_Click()
    With Worksheets("Feuil2").Activate
.Range ("B3") = Me("TextBox1"): Me("TextBox1") = ""
.Range ("B4") = Me("TextBox2"): Me("TextBox2") = ""
.Range ("B5") = Me("TextBox3"): Me("TextBox3") = ""

.Range ("B7") = Me("TextBox1").Tag : Me("TextBox1") = ""
.Range ("B8") = Me("TextBox2").Tag : Me("TextBox2") = ""
.Range ("B9") = Me("TextBox3").Tag : Me("TextBox3") = ""

.Shapes("AUTRE").OLEFormat.Object.Value = CheckBox_Autre.Tag.Value
End With
   CheckBox1 = 0
    Unload me   
End Sub

Je joins mon fichier modifié.

Merci à vous en tous cas pour votre aide si précieuse !

Bonne soirée

J-Baptiste

Bonjour JeanBaptisteP, le Forum,

Pour ce qui est de la case à cocher. Le code doit être dans l'Userform2 et non dans l'Userform1.

Private Sub CommandButton1_Click()
    For n = 1 To 3: UserForm1.Controls("TextBox" & n).Tag = Me("TextBox" & n): Next
    Sheets("Feuil2").Shapes("AUTRE").OLEFormat.Object.Value = UserForm2.Controls("CheckBox_Autre").Value
    Unload Me
End Sub

Pour ce qui est des autres controls, à corriger dans l'Userform1 comme ci-dessous. Faire à l'identique pour les 2 autres.

Private Sub CommandButton1_Click()
    With Worksheets("Feuil2")
        .Range("B3") = Me.Controls("TextBox1"): Me.Controls("TextBox1") = ""
'etc...

.Range("B7") = Me.Controls("TextBox1").Tag: Me.Controls("TextBox1").Tag = ""
'suite du code...

Bon soir aux chalands qui passent,

avec un contrôle ActiveX en Feuille 2

premier usf

Private Sub CommandButton1_Click()
    For n = 1 To 3
          Cells(2 + n, 2) = Me("TextBox" & n)
          Cells(6 + n, 2) = Me("TextBox" & n).Tag
    Next
   Feuil2.AUTRE.Value = CheckBox1.Tag = "Vrai"
End Sub

second Usf

Private Sub CommandButton1_Click()
    For n = 1 To 3
        UserForm1.Controls("TextBox" & n).Tag = Me("TextBox" & n)
        Me("Textbox" & n) = ""
    Next
    UserForm1.CheckBox1.Tag = CheckBox_Autre.Value
    Unload Me
End Sub

Bonsoir XCellus et Ordonc,

Merci pour votre réponse mais malheureusement je n'ai pas réussi à faire fonctionner le code proposé. Il y a un bug sur la ligne suivante

Sheets("Feuil2").Shapes("AUTRE").OLEFormat.Object.Value = UserForm2.Controls("CheckBox_Autre").Value

Ordonc, pouvons-nous remplacer le code ci-dessous

For n = 1 To 3
        UserForm1.Controls("TextBox" & n).Tag = Me("TextBox" & n)
        Me("Textbox" & n) = ""
    Next

par

With UserForm1
.Controls("TextBox1").Tag = Me("TextBox1") Me("Textbox1") = ""
.Controls("TextBox2").Tag = Me("TextBox2") Me("Textbox1") = ""
.Controls("TextBox3").Tag = Me("TextBox1") Me("Textbox3") = ""
End With

Si jamais je veux intégrer d'autres checkbox dans la UF2 (qui s'appelera Divers par exemple), puis-je écrire:

UserForm1.CheckBox1.Tag = CheckBox_Autre.Value
UserForm1.CheckBox1.Tag = CheckBox_Divers.Value

Merci à vous pour votre aide :)

J-Baptiste

Rechercher des sujets similaires à "saisie automatique champs userform inputbox"