Explications

azerty67

XLDnaute Occasionnel
:)Bonjour à tous,

J'aimerais une explication détaillée à propos de ce code, merci.


Private Sub ComboBox1_Change()
For n = 9 To 20
Me.Controls("Textbox" & n) = Sheets("Natzwiller").Cells(ComboBox1.ListIndex + 2, n - 7).Value
Next n
End Sub


avec 12 texbox le code fonctionne mais si je retire 4 texbox j'ai une erreur
au niveau :

Me.Controls("Textbox" & n) = Sheets("Natzwiller").Cells(ComboBox1.ListIndex + 2, n - 7).Value


---> "objet spécifié introuvable"

Je ne comprend pas le code simplement:(
 

fanfan38

XLDnaute Barbatruc
Re : Explications

Bonjour,
Private Sub ComboBox1_Change()
'si le combobox (boite de choix) change
For n = 9 To 20
Me.Controls("Textbox" & n) = Sheets("Natzwiller").Cells(ComboBox1.ListIndex + 2, n - 7).Value
' boucle qui va de la textbox 9 à la textbox 20
'la textbox correspondante reçoit la valeur de la cellule de la même ligne que le choix de la combobox et de la colonne équivalent à n-7 (donc si n=9 cellule de la colonne B) de la feuille "Natzwiller"
Next n
End Sub

Me.Controls("Textbox" & n) = Sheets("Natzwiller").Cells(ComboBox1.ListIndex + 2, n - 7).Value

Vous comprendrez donc que si vous enlevez 4 textbox il faut enlever les textbox 17, 18,19 et 20 et diminuer la boucle For n = 9 To 16...

A+ François
 

justine

XLDnaute Occasionnel
Re : Explications

bonsoir tout le monde, azerty67

Private Sub ComboBox1_Change()
For n = 9 To 20
Me.Controls("Textbox" & n) = Sheets("Natzwiller").Cells(ComboBox1.ListIndex + 2, n - 7).Value
Next n
End Sub


pour t'expliquer: a chaque changement de ta combobox, tu auras une bouche qui remplira tes textbox (textbox9 à textbox20).
les valeurs de tes textbox prendront la valeur de ta feuille "natzwiller", cellule en fonction du numero de la ligne selectionnée de ta combobox +2 et valeur de ta boucle-7

biensur pour que ce code marche, il faut que tu aies un certain nombre de textbox , ici, 12 puisque ta boucle va de 9 à 20
attention a cela
si tu as moins de textbox, tu obtiens l'erreur que tu cites car l'application ne trouve pas la textbox concernee.
j'espere avoir ete claire
 

azerty67

XLDnaute Occasionnel
Re : Explications

bonsoir tout le monde, azerty67

Private Sub ComboBox1_Change()
For n = 9 To 20
Me.Controls("Textbox" & n) = Sheets("Natzwiller").Cells(ComboBox1.ListIndex + 2, n - 7).Value
Next n
End Sub


pour t'expliquer: a chaque changement de ta combobox, tu auras une bouche qui remplira tes textbox (textbox9 à textbox20).
les valeurs de tes textbox prendront la valeur de ta feuille "natzwiller", cellule en fonction du numero de la ligne selectionnée de ta combobox +2 et valeur de ta boucle-7

biensur pour que ce code marche, il faut que tu aies un certain nombre de textbox , ici, 12 puisque ta boucle va de 9 à 20
attention a cela
si tu as moins de textbox, tu obtiens l'erreur que tu cites car l'application ne trouve pas la textbox concernee.
j'espere avoir ete claire


:)Merci à vous !! Je comprend mieux avec vos explications. Il est maintenant évident à mes yeux que cela ne pouvait pas fonctionner :(

C'est le problème de la rédaction du code, je sais ce que je voudrais mais les syntaxes manquent.....

Mais je m'améliore de jour en jour grace aux gens comme vous:;)

Encore merci
 

jp14

XLDnaute Barbatruc
Re : Explications

Bonjour

Pour éviter le message d'erreur en gardant la notation précédente trois solutions
Créer les textbox manquants et les rendre invisible

Utiliser "on error resume next" ce qui permettra de sauter l'erreur en prenant soin de mettre ensuite On error goto 0

Utiliser select case n
case numéro des textbox manquants séparé par une virgule
case else
end select
J'utilise cette dernière méthode pour utiliser la boucle quand j'ai des textbox et des combobox.

JP
 

azerty67

XLDnaute Occasionnel
Re : Explications

Bonjour,
Private Sub ComboBox1_Change()
'si le combobox (boite de choix) change
For n = 9 To 20
Me.Controls("Textbox" & n) = Sheets("Natzwiller").Cells(ComboBox1.ListIndex + 2, n - 7).Value
' boucle qui va de la textbox 9 à la textbox 20
'la textbox correspondante reçoit la valeur de la cellule de la même ligne que le choix de la combobox et de la colonne équivalent à n-7 (donc si n=9 cellule de la colonne B) de la feuille "Natzwiller"
Next n
End Sub

Me.Controls("Textbox" & n) = Sheets("Natzwiller").Cells(ComboBox1.ListIndex + 2, n - 7).Value

Vous comprendrez donc que si vous enlevez 4 textbox il faut enlever les textbox 17, 18,19 et 20 et diminuer la boucle For n = 9 To 16...

A+ François

:)J'ai un autre problème, lorsque je saisis des chiffres dans un userform la retranscription dans la feuille concernée est erronnée au niveau du format.
J'aimerais que l'affichage soit avec le signe €, j'ai formaté ma feuille afin que les cellules sélectionnées soit de type "comptabilité" mais à chaque saisi les cellules sont considérées comme du texte ??
Faut il rajouter un code ou est-ce normal ?

merci à nouveau
 

fanfan38

XLDnaute Barbatruc
Re : Explications

Oui car un textbox (comme son nom l'indique) contient du texte...
Donc il faut pour remettre le chiffre dans la cellule le transformer en chiffre
exemple: range("a1").value=cdbl(textbox1.value)

A+ François
 

azerty67

XLDnaute Occasionnel
Re : Explications

Oui car un textbox (comme son nom l'indique) contient du texte...
Donc il faut pour remettre le chiffre dans la cellule le transformer en chiffre
exemple: range("a1").value=cdbl(textbox1.value)

A+ François

:)Merci

Donc ilfaut intégrer le code dans:

Private Sub TextBox9_Change()

End Sub



Et dans cette partie, j'avoue que je suis un peu perdu :confused:

With Sheets("Datas" & ComboBox2.Value)
l = .Range("A65536").End(xlUp).Row + 1
For i = 1 To 1
Select Case i
Case 3 ' combobox
.Cells(l, i).Value = Me.Controls("Combobox" & i).Value
Case Else
.Cells(l, i).Value = Me.Controls("Textbox" & i).Value
End Select

Next i
End With
Unload ajouter
Application.ScreenUpdating = True
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize() 'à l'initialisation de l'Userform
Dim k%
ComboBox2.Clear
For Each ws In Worksheets
If InStr(1, ws.Name, "Data") = 0 Then ComboBox2.AddItem ws.Name
Next ws
End Sub


Encore ;)merci
 
Dernière édition:

azerty67

XLDnaute Occasionnel
Re : Explications

Tiens essaye ceci
Private Sub TextBox9_AfterupDaTe()
TextBox9.Value = Format(TextBox9.Value, "# ###.00 €")
End Sub
Et ne change rien au reste du code

:)Merci cela fonctionne ;)
Mais sur la feuille j'ai toujours la remarque que le nombre est stocké sous forme de texte....
Modifications des alertes ?

J'avais une autre demande concernant un problème de userform
J'avais déjà posté des demandes mais je finalise et JP14 m'avait aidé avec son code je vous le propose si éventuellment une idée vous aviez. J'avoue que je ne m'en sort pas

Le principe:

J'ai 5 userforms dans lesquels après avoir fait une sélection à l'aide de deux combobox, je voudrais pouvoir à la fois visualiser, saisir et modifier des données par l'intermédiaire de différents textbox

avec la première combo je voudrais sélectionner une feuille qui représente un client
et avec une seconde combo sélectionner une colonne (n° de commande) de cette même feuille
Sachant que je disposerais d'une douzaine de feuilles représentant chacune des clients différents

Le principe fonctionne mais, je voudrais regrouper ces 5 userforms en un seul et arriver à coder la première combo. Alléger le fichier !!:)
L'userform a modifier est "ajouter"

JP14 m'avais envoyé un code extra (!!) pour attaquer la mise en place de mes formulaires mais je ne vois pas comment faire pour arriver à ce que je veux
ce n'est pas faute d'y avoir passer des heures
Si vous pensez que ce n'est pas le bon fil vous m'en excuserez
 

Pièces jointes

  • essai1.zip
    47.3 KB · Affichages: 53
  • essai1.zip
    47.3 KB · Affichages: 49
  • essai1.zip
    47.3 KB · Affichages: 46
Dernière édition:

roro69

XLDnaute Impliqué
Re : Explications

Bonsoir azerty

"""J'ai 5 userforms dans lesquels après avoir fait une sélection à l'aide de deux combobox, je voudrais pouvoir à la fois visualiser, saisir et modifier des données par l'intermédiaire de différents textbox

avec la première combo je voudrais sélectionner une feuille qui représente un client
et avec une seconde combo sélectionner une colonne (n° de commande) de cette même feuille
Sachant que je disposerais d'une douzaine de feuilles représentant chacune des clients différents

Le principe fonctionne mais, je voudrais regrouper ces 5 userforms en un seul et arriver à coder la première combo. Alléger le fichier !!
L'userform a modifier est "ajouter"""""


J'ai regardé le code de ton USF ajouter; tes combos sont bien programmer :
pour aller ajouter ou modifier les données danS chaque feuilles ;tu n'as pas besoin d'autre USF.
Au plaisir de te lire
 

Discussions similaires

Réponses
6
Affichages
347

Statistiques des forums

Discussions
313 344
Messages
2 097 337
Membres
106 916
dernier inscrit
Soltani mohamed