Valoriser un ROwSource depuis un autre USerForm

  • Initiateur de la discussion Olivier SAUNIER
  • Date de début
O

Olivier SAUNIER

Guest
Salut,

Voici mon code qui est sur le bouton Valider d'un UserForm. J'aimerais aprés Saisie et Validation que la valeur de ma Combox située sur le premier Userform s'incremente de 1 pour englober la nouvelle saisie. Ca marche pas :eek:(

If Intitule.Value <> "" Then
Pos = Sheets("Provenance").Range("B65536").End(xlUp).Row + 1
' Ajout de l'intitulé
Sheets("Provenance").Range("B" & Pos) = Me.Intitule

' Tri des provenances
Range("B" & Pos).Select
Selection.Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("B4").Select

' Modification Range listbox
SaisieTitre.ComboBoxProvenance.RowSource = Provenance!Range("B" & Pos)

End If
Unload Me
End Sub


Si quelqu'un voit la soluce...

Merci
 
@

@+Thierry

Guest
Salut Olivier, le Forum

Je vois que tu travailles dûr et j'ai déjà vu ton échange avec G'Claire tout à l'heure.

Pour cette question, il n'est pas évident de se mettre dans ton contexte surtout que tu utilises des noms en non-conformité avec les standards de programmation ("Intitule" c'est quoi ? une ComboBox ? Une TextBox ?)

Enfin bref, peu importe... La Propriété RowSource est celle la plus utilisée car "apparemment" la plus facile pour les débutants (paramétrable sans code depuis la fenêtre Propriété)... Mais c'est la moins maniable ! Sans faire d'essai, je pense que simplement le RowSource lancé depuis ton second UserForm vers le UserForm "SaisieTitre" (encore un nom non-conforme, qui complique la lecture et des intervention de maintenance dans 10 mois quand tu ne te souviendras plus...) n'est pas géniale puisque que le UserForm doit être encore actif.... (vu ce que j'ai vu de la solution que G'Claire t'a proposé)

En plus tu as aussi une erreur de Syntax...

Enfin bon, moi ce que je te conseille (vu que je sais l'ampleur de ce que tu cherches à faire) c'est de faire d'une manière un peu plus organisée et d'avoir une structure de programmation solide et fiable en s'appuyant sur l'évenement Activate (sans faire d'essai car je n'ai pas envie de refabriquer des UserForms avec tes paramètres...) Mais bon je pense que celà devrait marcher... (Attention, j'utilise des noms standards par Défaut)

USERFORM1

Private Sub UserForm_Activate()
Dim Pos As Integer
Pos = Sheets("Feuil1").Range("B65536").End(xlUp).Row
ComboBox1.RowSource = "Feuil1!B2:B" & Pos '<<<< Regarde la Syntax Correcte !
End Sub


Private Sub CommandButton1_Click() '<<<< Le Bouton qui lance ton UserForm2
Me.Hide
UserForm2.Show
End Sub


USERFORM2

Private Sub CommandButton1_Click() '<<<< Le Bouton qui lance ton UserForm2

Unload Me
UserForm1.Show
End Sub


Donc le fait de procéder de la sorte, t'assure qu'à chaque activation de Ton UserForm1 celui ci sera à jour des données mises à jour par n'importe lequel des autres UserForms et des autres Controls...

Voilà c'est une autre façon de voir d'un manière plus rationnelle que de lancer des instructions de Mises à Jour "Inter-UserForms" toujours plus délicates et lourdes à gérér... Faut juste jouer avec Hide et Show (ce qui déclencle l'évènement "Activate"...


Bon Samedi et bonne programmation
@+Thierry
 

Discussions similaires

Réponses
3
Affichages
752

Statistiques des forums

Discussions
314 121
Messages
2 106 128
Membres
109 495
dernier inscrit
jerome bonneau