gratifiant > microsoft.* > microsoft.excel

raptorus1er (08/08/2018, 12h31)
Bonjour,
Tout nouveau sur le forum et dans le codage VBA, je viens vers vous car n'ayan
que pour seul méthode d'apprentissage le visionnage et la retranscription d
tutoriels vidéos je suis vite perdu dans les termes utilisés.
Après bcp de temps à essayer de comprendre comment créer un formulaire, je sui
face à une colle pour mon faible niveau.
Pour la petite explication, j'ai souhaité créer un formulaire car dans mo
service, chaque dossier contient une liste mise sous excel, j'ai premièremen
rassemblé toutes les listes sur un seul classeur sur diverses feuilles.
De là je me suis lancé sur la création d'un formulaire qui reprend par le
textbox toutes les données des diverses listes et une combobox (dans laquell
j'ai listé les diverses feuilles) qui est censée diriger les information
remplies vers la feuille qui aura été sélectionné dans la ComboBox.
et me voilà dans le flou le plus total pour la rédaction d'un code me permettan
cette instruction.
Après avoir parcouru les diverses questions, je n'ai pas trouver de solution
mon problème.
Quelqu'un aurait il la possibilité d'orienter mes recherches ou de me guide
dans la rédaction du code.
merci à vous
bien cordialement
Michd (08/08/2018, 16h39)
Bonjour,

Un fichier exemple à cette adresse :

Il y a plus d'une manière de procéder, cela dépend de ce que tu veux faire. L'exemple est simple!

MichD
Jacquouille (08/08/2018, 17h55)
Juste une question:
Quand on remplit le formulaire, il ne s'inscrit pas automatiquement sous la
dernière ligne, dans le tableau des datas?

Jacques
" Le vin est au repas ce que le parfum est à la femme."
..
"Michd" a écrit dans le message de groupe de discussion :
pkevaj$1ig8$1...

Bonjour,

Un fichier exemple à cette adresse :

Il y a plus d'une manière de procéder, cela dépend de ce que tu veux faire.
L'exemple est simple!

MichD
Michd (08/08/2018, 21h48)
Quand tu cliques sur le bouton du combobox, tu choisis l'item que tu désires et les 3 textbox se
remplissent automatiquement. Il n'est pas fait pour saisir de nouvelles données ou mettre à jour les
données du tableau. Cela se voulait un exemple simple pour un débutant...

MichD
Jacquouille (08/08/2018, 21h59)
Alors, je suis pré-débutant. -))
Merci

Jacques
" Le vin est au repas ce que le parfum est à la femme."
..
"Michd" a écrit dans le message de groupe de discussion :
pkfhe6$jfh$1...

Quand tu cliques sur le bouton du combobox, tu choisis l'item que tu désires
et les 3 textbox se
remplissent automatiquement. Il n'est pas fait pour saisir de nouvelles
données ou mettre à jour les
données du tableau. Cela se voulait un exemple simple pour un débutant...

MichD
raptorus1er (09/08/2018, 11h22)
Le mercredi 08 Août 2018 à 21:59 par Jacquouille :
[..]
> données du tableau. Cela se voulait un exemple simple pour un
> débutant...
> MichD

bonjour,
après avoir cherché encore et toujours, je me retrouve avec ceci

Private Sub ComboBox1_Click()
Sheets(ComboBox1.Value).Activate
End Sub

Private Sub ComboBox1_DropButtonClick()
ComboBox1.Clear
For Each vfeuille In ActiveWorkbook.Sheets
ComboBox1.AddItem vfeuille.Name
Next
End Sub

qui me permet de passer de feuille en feuille depuis mon formulaire via l
ComboBox1 mais lors de la validation,
un message d'erreur s'affiche en disant :"valeur de propriété non valide".

y a t'il une erreur ou quelque chose à rajouter?

merci à vous
Michd (09/08/2018, 12h12)
Bonjour

Ton code fonctionne bien, testé à l'aide d'un copier-coller dans un formulaire n'ayant qu'un
combobox.

Cependant, si tu désires que le nom de la feuille sélectionnée demeure dans le combobox, j'ai
modifié ton code comme ceci.

'Déclaration de la variable dans le haut du module du formulaire
Dim X As Long
'----------------------------------------------
Private Sub ComboBox1_Click()
Sheets(ComboBox1.Value).Activate
X = 1
End Sub
'----------------------------------------------
Private Sub ComboBox1_DropButtonClick()
If X = 0 Then
ComboBox1.Clear
Else: X = 0
Exit Sub
End If
For Each vFeuille In ActiveWorkbook.Sheets
ComboBox1.AddItem vFeuille.Name
Next
End Sub
'----------------------------------------------

MichD
raptorus1er (09/08/2018, 13h54)
Le jeudi 09 Août 2018 à 12:12 par Michd :
[..]
> End Sub
> '----------------------------------------------
> MichD

j'ai positionné la modification du code que tu m'as fourni mais je ne peu
toujours pas inscrire sur les autres feuilles malgré tout.

Je te mets le codage complet de mon formulaire pour que tu vois si une erreu
empêcherait la selection des données de la ComboBox1.

Dim X As Long
'----------------------------------------------
Private Sub ComboBox1_Click()
Sheets(ComboBox1.Value).Activate
X = 1
End Sub
'----------------------------------------------
Private Sub ComboBox1_DropButtonClick()
If X = 0 Then
ComboBox1.Clear
Else: X = 0
Exit Sub
End If
For Each vFeuille In ActiveWorkbook.Sheets
ComboBox1.AddItem vFeuille.Name
Next
End Sub

Private Sub CommandButton1_Click()
If Sheets("feuille1").Range("A3") = "" Then
Sheets("feuille1").Range("A3") = TextBox2
Else
Sheets("feuille1").ListObjects(1).ListRows.Add
End If
dlt = Sheets("feuille1").Range("d1000000").End(xlUp).Row
Sheets("feuille1").Range("A" & dlt) = TextBox2
Sheets("feuille1").Range("B" & dlt) = TextBox3
Sheets("feuille1").Range("C" & dlt) = TextBox8
Sheets("feuille1").Range("D" & dlt) = TextBox9
End Sub

Private Sub Label25_Click()
End Sub

'creation format de date et message d'erreur listing
Private Sub TextBox11_AfterUpdate()
On Error GoTo Messagerreur
TextBox11 = Format(TextBox11, "short date")
Exit Sub
Messagerreur:
MsgBox ("le format de la date n'est pas valide jj/mm/aaaa")
TextBox11 = Empty
End Sub

Private Sub TextBox11_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox11 = "" Then
TextBox11 = "jj/mm/aaaa"
End If
End Sub

'definition des caractères imposé pour la case listing
Private Sub TextBox11_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 46 And KeyAscii < 58)) Then KeyAscii = 0
End Sub
'suppression automatique du modèle de date imposé date des faits
Private Sub TextBox11_Enter()
If TextBox11 = "jj/mm/aaaa" Then
TextBox11 = ""
End If
End Sub

'creation format de date et message d'erreur date de départ feuille1
Private Sub TextBox8_AfterUpdate()
On Error GoTo Messagerreur
TextBox8 = Format(TextBox8, "short date")
Exit Sub
Messagerreur:
MsgBox ("le format de la date n'est pas valide jj/mm/aaaa")
TextBox8 = Empty
End Sub

Private Sub TextBox8_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox8 = "" Then
TextBox8 = "jj/mm/aaaa"
End If
End Sub

'definition des caractères imposé pour la case date de départ feuille1
Private Sub TextBox8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 46 And KeyAscii < 58)) Then KeyAscii = 0
End Sub
'suppression automatique du modèle de date imposé date de départ feuille1
Private Sub TextBox8_Enter()
If TextBox8 = "jj/mm/aaaa" Then
TextBox8 = ""
End If
End Sub

'creation format de date et message d'erreur listing
Private Sub TextBox9_AfterUpdate()
On Error GoTo Messagerreur
TextBox9 = Format(TextBox9, "short date")
Exit Sub
Messagerreur:
MsgBox ("le format de la date n'est pas valide jj/mm/aaaa")
TextBox9 = Empty
End Sub

Private Sub TextBox9_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox9 = "" Then
TextBox9 = "jj/mm/aaaa"
End If
End Sub

'definition des caractères imposé pour la case retour feuille 1
Private Sub TextBox9_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 46 And KeyAscii < 58)) Then KeyAscii = 0
End Sub
'suppression automatique du modèle de date imposé case retour feuille 1
Private Sub TextBox9_Enter()
If TextBox9 = "jj/mm/aaaa" Then
TextBox9 = ""
End If
End Sub

'demonstration format de date demandée case des dates
Private Sub UserForm_Initialize()
TextBox11.Text = "jj/mm/aaaa"
TextBox9.Text = "jj/mm/aaaa"
TextBox8.Text = "jj/mm/aaaa"

With ComboBox1
..AddItem " feuille1"
..AddItem " feuille 2"
..AddItem " feuille 3"
..AddItem " feuille 4"
..AddItem " feuille 5"
..AddItem " feuille 6"
..AddItem " feuille 7"
..AddItem " feuille 8"
End With

With ComboBox2
..AddItem "M."
..AddItem "Melle"
..AddItem "Mme"
End With

With ComboBox3
..AddItem "membre1"
..AddItem " membre2"
..AddItem " membre3"
..AddItem " membre4"
..AddItem " membre5"
End With

With ComboBox4
..AddItem "Actif"
..AddItem "Non Actif"
End With

With ComboBox5
..AddItem "dossier 1"
..AddItem " dossier 2"
..AddItem " dossier 3"
..AddItem " dossier 4"
..AddItem " dossier 5"
End With

End Sub

'definition des caractères imposé pour la case code postal logement
Private Sub TextBox26_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 47 And KeyAscii < 58)) Then KeyAscii = 0
End Sub

'definition des caractères imposé pour la case km liaison
Private Sub TextBox29_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 47 And KeyAscii < 58)) Then KeyAscii = 0
End Sub
'definition des caractères imposé pour la case numéro de téléphone fixe
Private Sub TextBox32_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 46 And KeyAscii < 58)) Then KeyAscii = 0
End Sub
'definition des caractères imposé pour la case code postal civilité
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 47 And KeyAscii < 58)) Then KeyAscii = 0
End Sub
'definition des caractères imposé pour la case numéro de téléphone portable
Private Sub TextBox6_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 46 And KeyAscii < 58)) Then KeyAscii = 0
End Sub

Je pense que j'ai dû zapper pas mal de choses et avoir fait des bourdes!
mais bon jusque là tout fonctionne avec la feuille1 seulement.
merci à toi MichD en tout cas de te pencher sur mon cas.
raptorus1er (09/08/2018, 17h05)
Le jeudi 09 Août 2018 à 12:12 par Michd :
[..]
> End Sub
> '----------------------------------------------
> MichD Me faudrait il dupliquer


Private Sub CommandButton1_Click()
If Sheets("feuille1").Range("A3") = "" Then
Sheets("feuille1").Range("A3") = TextBox2
Else
Sheets("feuille1").ListObjects(1).ListRows.Add
End If
dlt = Sheets("feuille1").Range("d1000000").End(xlUp).Row
Sheets("feuille1").Range("A" & dlt) = TextBox2
Sheets("feuille1").Range("B" & dlt) = TextBox3
Sheets("feuille1").Range("C" & dlt) = TextBox8
Sheets("feuille1").Range("D" & dlt) = TextBox9
End Sub

pour chaque feuille? avec evidemment le changement des nom des textBox?
Michd (09/08/2018, 18h12)
Dans le haut du module du formulaire, ajoute une variable :

Dim X As Long
Dim Feuille As String '<<<<=====

modifie cette procédure comme ceci :
'----------------------------------------
Private Sub ComboBox1_Click()
Feuille = ComboBox1.Value
Sheets(ComboBox1.Value).Activate
X = 1
End Sub
'----------------------------------------

Et dans cette procédure, ajoute une ligne de code :
'------------------------------------------------
Private Sub CommandButton1_Click()
if Feuille = "" then Exit sub ' <<<<<=====

'Le reste du code

'------------------------------------------------

MichD
Michd (09/08/2018, 21h39)
| pour chaque feuille? avec evidemment le changement des nom des textBox?

Je n'en sais rien. Je ne sais pas où sont ces textbox? De plus, rien n'empêche tes textbox d'avoir
le même nom s'ils sont dans des feuilles différentes. À toi de voir!

MichD
raptorus1er (23/08/2018, 18h11)
Le jeudi 09 Août 2018 à 21:39 par Michd :
> | pour chaque feuille? avec evidemment le changement des nom des textBox?
> Je n'en sais rien. Je ne sais pas où sont ces textbox? De plus, rien
> n'empêche tes textbox d'avoir
> le même nom s'ils sont dans des feuilles différentes. À toi
> de voir!
> MichD

bonjour,
après avoir fait les modifications que tu m'as donné (Michd),
donc au jour d'aujourd'hui, les informations s'inscrivent sur toutes le
feuilles en même temps peu importe la feuille que je sélectionne sur l
ComboBox1.

je reste donc dans la galère mais pas la même lol.
si quelqu'un a une solution je suis toujours preneur.

merci à tous
Michd (23/08/2018, 22h06)
Fichier exemple : :

Tu sélectionnes la feuille que tu désires dans le textbox
Tu entres des données dans les textbox du formulaire
et tu cliques sur le bouton transfert.

MichD

"raptorus1er" a écrit dans le message de groupe de discussion :
EOWdnSYjnZokQePGnZ2dnUU798zNnZ2d...

Le jeudi 09 Août 2018 à 21:39 par Michd :
> | pour chaque feuille? avec evidemment le changement des nom des textBox?
> Je n'en sais rien. Je ne sais pas où sont ces textbox? De plus, rien
> n'empêche tes textbox d'avoir
> le même nom s'ils sont dans des feuilles différentes. À toi
> de voir!
> MichD

bonjour,
après avoir fait les modifications que tu m'as donné (Michd),
donc au jour d'aujourd'hui, les informations s'inscrivent sur toutes les
feuilles en même temps peu importe la feuille que je sélectionne sur la
ComboBox1.

je reste donc dans la galère mais pas la même lol.
si quelqu'un a une solution je suis toujours preneur.

merci à tous
raptorus1er (06/09/2018, 17h24)
Le jeudi 23 Août 2018 à 22:06 par Michd :
[..]
> je reste donc dans la galère mais pas la même lol.
> si quelqu'un a une solution je suis toujours preneur.
> merci à tous bonjour MichD et à tous,


j'ai testé les formules que tu as mis dans ton formulaire mais je ne peux pas l
mettre en place dans le mien car je n'ai pas de textbox dans mes feuilles mai
un tableau par feuille.

les cellules des tableaux sont remplies via:

Private Sub CommandButton1_Click()

'activation de commande de la 1ere textbox valide pour feuille1
If Sheets("feuille1").Range("A3") = "" Then
Sheets("feuille1").Range("A3") = TextBox2
Else
Sheets("feuille1").ListObjects(1).ListRows.Add
End If

'Détail des TextBox uilisé pour la feuille sélectionnée
dlt = Sheets("feuille1").Range("d1000000").End(xlUp).Row
Sheets("feuille1").Range("A" & dlt) = TextBox2
Sheets("feuille1").Range("B" & dlt) = TextBox3
Sheets("feuille1").Range("C" & dlt) = TextBox8
Sheets("feuille1").Range("D" & dlt) = TextBox9

du coup j'ai fait cela pour chaque feuille ce qui fonctionne au jou
d'aujourd'hui.
Malheureusement TextBox2 impacte également une colonne de la feuille 2, de l
feuille 3 etc.... et me les inscrit également.

tu me conseilles de coder:

Private Sub CmdTransfer_Click()

plutot que

Private Sub CommandButton1_Click()

ou cela importe peu?

quelqu'un aurait une idée pour le transfert des données des textbox sur un
feuille vers les cellules correspondantes?
Michd (06/09/2018, 20h11)
'--------------------------------------------------------------
tu me conseilles de coder:

Private Sub CmdTransfer_Click()

plutot que

Private Sub CommandButton1_Click()

'--------------------------------------------------------------

Si tu as remarqué, si tu affiches les propriétés (barre des menus / développeur / Mode création /
après sélectionne le bouton de commande et affiche les propriétés par la commande du même nom.
Remarque que la propriété "Name" a comme "NOM" CmdTransfer".

Si ce bouton est dans un formulaire, en mode création, sélectionne le bouton et regarde la propriété
"NAME" du bouton, il doit avoir comme nom "CmdTranfer". Le fait de donner un nom au bouton de
commande aide à reconnaître à quoi sert ces boutons lorsque vient le temps de CODER. Le nom lui-même
n'a aucun impact sur l'exécution du code. Après donner un nom, lorsque tu fais un double-clic pour
inscrire le code, au lieu d'avoir un bouton Private Sub CommandButton1_Click(), tu as Private Sub
CmdTransfer_Click()

MichD

?

Discussions similaires