Comment interfacer mes usf avec ma plage de donnéés

Salut à tous

Avant d’aller droit au but, j’aimerai avoir certains éclaircissements sur les usf.

En effet, j’ai crée 2 usf. Après avoir rempli l’e 1er (useform13), on click sur le 2è (userform14) pour remplir la suite des informations.

Y’a-t-il un inconvénient à procéder de la sorte par rapport à un usf sur 2 feuilles?

Comment interfacer mes usf (13 et 14)avec ma plage B4 :B48 de la feuille DONNE?

Bonne compréhension

41inter-usf.xlsm (220.56 Ko)

Bonjour,

Pas nécessaire d'employer plusieurs UF pour faire ce que tu veux.

Voir exemple avec un Multi pages

Je n'ai pas trouver l'attribution de tes CheckBox ?

Tu dis.

A+

48zombe-retour1.xlsm (195.15 Ko)

Salut Lermite et le forum

Comme d'habitude tu as tj proposé des solutions magiques.

J'ai bcp apprécié.

Ok pour les multipages.

Que voulez-vous dire par :

lermite a écrit :

Je n'ai pas trouver l'attribution de tes CheckBox

Est-il possible de faire en sorte que lorsqu'on fini de renseigner le dernier champ de la page DATA, que la page complement soit automatiquement sélectionnée?

Pour les combobox, est-il possible de faire en sorte que lorsqu'on commence à écrire la 1ère lettre d'un mot, que la liste des mots qui commencent par la meme lettre s'affichent afin que l'on puisse choisir facilement?

Pour les champs reservés aux date, lorsuqe je saisisse la date de facon "brute" (09092012), après avoir fait ENTREE, que la date soit convertie comme ca 09.09.2012 OU 09/09/2012?

Je m'arrête la d'abord et encore merci

zombe a écrit :

Est-il possible de faire en sorte que lorsqu'on fini de renseigner le dernier champ de la page DATA, que la page complement soit automatiquement sélectionnée?

Ça demanderait beaucoup trop de conditions à tester. et je n'en vois pas l'utilité, suppose qu'une des donnée ne soit pas nécessaire ?

zombe a écrit :

Pour les combobox, est-il possible de faire en sorte que lorsqu'on commence à écrire la 1ère lettre d'un mot, que la liste des mots qui commencent par la meme lettre s'affichent afin que l'on puisse choisir facilement?

Que la liste s'affiche, NON

l'idéal serait de remplir le Combo avec une liste triée, de cette façon les mots sont sélectionnés au fur et à mesure de la frappe dans le texte du combo.

zombe a écrit :

Pour les champs reservés aux date, lorsuqe je saisisse la date de facon "brute" (09092012), après avoir fait ENTREE, que la date soit convertie comme ca 09.09.2012 OU 09/09/2012?

Qui peu affirmer, dans ces conditions que ce sera toujours écrit comme ça ?

Ça pourrait aussi être 992012 ou 0992012 etc..

Voir pour trouver un contrôle Masked Edit qui fonctionnerait sous VBA, j'en ai bien un mais il ne va que pour VB6.

Salut Lermite et le forum

Merci pour le feedback.

lermite a écrit :

Ça demanderait beaucoup trop de conditions à tester. et je n'en vois pas l'utilité, suppose qu'une des donnée ne soit pas nécessaire ?

Si vous avez une solution merci de me la donner et j'apprécierai sa lourdeur ou sa complexité.

Est-ce que ce que vous dites tend vers un code de ce genre ou il faut tester tous les champs:

Private Sub CommandButton1_Click()

'Vérif des saisies
If Trim(TextBox1) = "" Then
  MsgBox "Veuillez saisir le nom."
  TextBox1.SetFocus
  Exit Sub
ElseIf Trim(TextBox2) = "" Then
  MsgBox "Veuillez saisir le prénom."
  TextBox2.SetFocus
  Exit Sub
ElseIf Not (OptionButton1 Or OptionButton2 Or OptionButton3) Then
  MsgBox "Veuillez saisir la situation."
  Frame1.SetFocus
  Exit Sub
ElseIf Not (CheckBox1 Or CheckBox2 Or CheckBox3) Then
  MsgBox "Veuillez saisir les justificatifs."
  Frame2.SetFocus
  Exit Sub
Else
  'Tous les champs sont saisis -> transfert sur Feuille "DONNE"
  With Sheets("DONNE")
    .Range("B5") = TextBox1
    .Range("B6") = TextBox2
    .Range("B7") = _
        IIf(OptionButton1, OptionButton1.Caption, _
        IIf(OptionButton2, OptionButton2.Caption, OptionButton3.Caption))
    .Range("B10") = _
        IIf(CheckBox1, CheckBox1.Caption, "") & _
        IIf(CheckBox2, ", " & CheckBox2.Caption, "") & _
        IIf(CheckBox3, ", " & CheckBox3.Caption, "")
    If Left(.Range("B10"), 2) = ", " Then .Range("B10") = Mid(.Range("B10"), 3)
  End With
 ' Unload Me
End If
End Sub

Pour la 2è question, je confirme que la liste de mon combobox sera triée.

Pour la 3è question je pense que ca doit pouvoir etre possible d'obliger la saisie à 8 chiffres ce qui obligerait mes utilisateurs à tj saisir 09092012.

Essayer de voir ce qui est faisable svp.

Encore merci

Pour la date c'est plutôt faisable avec un DTPicker1 Sera présent dans version suivante

Dans Frame5 tu à des checkBox où mettre leur résultats. de plus s'il faut tous les checker ça rime à rien que tu doivent tout remplir. autant pas les mettre.

Je constate aussi que t'a pas compris comment j'inscrit les données dans la feuille DONNEE. Voir la propriété .Tag des contrôles, il sont initialiser avec le N° de la ligne où il doivent aller, si tout est bien initialiser il ne faut pas une seule ligne de code en plus pour tout inscrire dans la feuille DONNEE

Faire ce que tu demande pour contrôler que tout est rempli nécessite un code plus ou moins pointu (pour pas dire.. très pointu) et je doute encore plus que tu y comprenne quelque chose.

Tâche dans un premier temps de faire avec tes moyens.

Répond à ma question sur Frame5 et les CheckBox.

EDIT : Et qu'est-ce que tu fait avec ton truc Transfert données sur feuille DONNEE.

Quand tu clique sur le bouton tout est saver, à part TextBox1 et 2, je savais pas ce qui allait dedans ainsi que les CheckBox.

Salut lermite

Merci pour le feedback.

Suis preneur pour ta proposition sur la date.

Le resltat de frame5 est à renseigner dans B9. tout ce qui est coché dans frame5 devra être espacé par ce signe , suivant d'un espace. ex : CH, SESAME, BSMS...Il faut noter que ces checkbox ne se cochent pas tout à la fois mais en fonction des infos qu'on a on peut être amené à tout checker ou bien checkier certains.

lermite a écrit :

Et qu'est-ce que tu fait avec ton truc Transfert données sur feuille DONNEE

C'est un code d'essai qu'on m'avait proposer afin que je vois comment se fait le transfert des données d'un usf vers une feuille.

Je pense avoir repondu à tes interrogations sinon je suis tj dispo.

A bientôt

Bon, finalement je t'ai mis un truc qui contrôle tout, mais il manque des questions dans ton UF.

Tu ne sais donc pas le sauver..

Tu dois ajouter les contrôles nécessaire, quand tu active l'UF, remplir toutes las cases tu verras ce qui manque (c'est affiché)

A faire

Ajouter les contrôles pour ceux là.

Dans la propriété Tag mettre le N° de ligne où la donnée doit aller.

A+

38zombe-retour2.xlsm (198.08 Ko)

Je t'ai ajouter quelques contrôles supplémentaires.

Voir pour les dates si ça te convient (avec les flèches c'est plus rapide)

49zombe-retour3.xlsm (203.12 Ko)

Salut Lermite

Tj super ce tu fais.

Pour le champ date du jour, je vais simplement utiliser la valeur d'une cellule (E3) au lieu d'un calendrier.

Pour le champ suivant, ca sera également la valeur d'une cellule (E4).

Autre chose : j'ai au 10 usf pour chaque types de compte à ouvrir.

En fonction du compte à ouvrir, j'appel l'usf correspondant.

Les code que vous me proposez peuvent-ils être adaptés à tous mes usf?

Sinon comment le faire?

J'ai pris acte des controls manquants et j'en tiendrai compte.

Tu peu adapter aux autres UF à condition que tu ai compris comment ça fonctionne, sinon...

A+

Salut Lermite

Dire que je maitrise le fonctionnement des usf c'est trop dit.

Hièr j'ai vu un code qui permet de reduire ou d'agrandir un usf et j'ai voulu l'adapter à mes usf mais en vain.

Je vous le paratge et si c'est possible de m'épauler comme d'habitude ca sera bien.

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Const GWL_STYLE = (-16), GWL_EXSTYLE = (-20), WS_SIZEBOX = &H40000, WS_TROIS_BOUTON = &H70000, WS_EX_APPWINDOW = &H40000
Dim l(), h(), f(), p(), s() As String, wLong As Long, hwnd As Long, i, c As Control, la As Long, ha As Long 

suite du code

Private Sub UserForm_Initialize()
ha = Me.Height: la = Me.Width
For Each c In Me.Controls
i = i + 1
ReDim Preserve l(i): l(i) = c.Width
ReDim Preserve h(i): h(i) = c.Height
ReDim Preserve p(i): p(i) = c.Top
ReDim Preserve f(i): f(i) = c.Left
'ReDim Preserve s(i): s(i) = c.Width / c.Font.Size
Next
hwnd = FindWindow(vbNullString, Me.Caption)
wLong = GetWindowLongA(hwnd, GWL_STYLE) Or WS_SIZEBOX Or WS_TROIS_BOUTON
SetWindowLong hwnd, GWL_STYLE, wLong

End Sub
Private Sub UserForm_Resize()
On Error Resume Next
i = 0
For Each c In Me.Controls
i = i + 1
c.Width = Me.Width / (la / l(i))
c.Height = Me.Height / (ha / h(i))
c.Left = Me.Width / (la / f(i))
c.Top = Me.Height / (ha / p(i))
c.Font.Size = c.Width / s(i)
Next
End Sub 

Avec souvent de petits explications, j'arrive à comprendre les codes.

Aujourdhui grace au forum j'arrive à concevoir des petits macros.

Pour dire que tout ce que vous faites compte bcp pour moi et ce que j'arrive pas à comprendre tout suite le sera tot ou tard compris.

Encore merci pour votre coaching.

Je disais dans un autre poste que j'ai de la patience à revendre...

Malheureusement, sur ce poste... j'ai tout vendu.

Abandon du suivi.

A+

Salut Lermite

Tu m'abandonne ou quoi?

Ais-je fais qqch que te deplaît?

C'est pas que tu ai fait quelque chose mais tu n'est jamais content, quand une chose est réglée.. fait moi ceci ou fait moi cela et encore ça.. y a plus de fin.

De plus je passe mon temps à te faire un truc pour le zoom que tu me demande et tu me répond que l'autre est mieux mais que je dois t'expliquer comment t'en servir., tu na dons pas su comparer alors qu'il fait exactement la même chose.

En fait tu me fait tourner en bourrique et je préfère arrêter avant de devenir désagréable.

A+

Salut Lermite

Merci pour ta franchise.

T'as le droit de dire ce que tu prenses mais une chose est certaine quand ce que tu me proposes me conviens, j'apprécie cela à sa juste valeur.

Aussi, on ne peut souvent pas tout exposer d'un seul coup.

Je vais pas à pas voila pourquoi quand un problème est résolu, je passe au point souvent.

Si ne pas accepter ce que tu me propose est décourageant, je ne pense pas que qqu souhaite offenser celui qui l'aide à traverser une rive.

Si tu souhaite tj me coacher, je rencontre une difficulté en voulant exécuter le code ci-dessous:

Dim Ctl As Control
Dim Col As Integer, Lig As Integer
Dim Fr5 As String
    Col = 2 'pour la colonne B
    'Boucle sur tout les contrôles de l'userform
    If Not ControlerRemplir() Then Exit Sub
    With Sheets("DONNE")
        .Cells(DTPicker1.Tag, Col) = DTPicker1.Value
        For Each Ctl In Me.Controls
            If TypeOf Ctl Is msforms.TextBox Then
                If Ctl.Tag <> "" And Ctl <> "" Then
                Lig = Ctl.Tag
                .Cells(Lig, Col).Value = Ctl.Text
                End If
            ElseIf TypeOf Ctl Is msforms.OptionButton Then
                If Ctl.Value Then
                    'l'OptionButton est checker
                    Lig = Ctl.Tag
                    .Cells(Lig, Col).Value = Ctl.Caption
                End If
            ElseIf TypeOf Ctl Is msforms.ComboBox Then
                Lig = Ctl.Tag
                .Cells(Lig, Col).Value = Ctl.Text
            ElseIf TypeOf Ctl Is msforms.CheckBox Then
                If Ctl.Value Then
                    Fr5 = Fr5 + IIf(Fr5 = "", Ctl.Caption, ", " & Fr5)
                     Lig = Ctl.Tag
                    .Cells(Lig, Col).Value = Fr5
               End If
            End If
        Next Ctl
    End With
End Sub
'******************************************************************

Function ControlerRemplir() As Boolean
Dim Check(4 To 47) As Boolean
Dim i As Integer
Dim Ctl As Control
    Check(9) = True
    For Each Ctl In Me.Controls
        If TypeOf Ctl Is msforms.TextBox Then
            If Ctl.Tag <> "" And Ctl <> "" Then
                Check(Ctl.Tag) = True
            End If
        ElseIf TypeOf Ctl Is msforms.OptionButton Then
            If Ctl.Value Then
                Check(Ctl.Tag) = True
            End If
        ElseIf TypeOf Ctl Is msforms.ComboBox Then
            If Ctl.Text <> "" Then
                Check(Ctl.Tag) = True
            End If
       ' ElseIf TypeOf Ctl Is msforms.CheckBox Then
       '     If Ctl.Value Then
       '         Fr5 = Fr5 + IIf(Fr5 = "", Ctl.Caption, ", " & Fr5)
       '          Lig = Ctl.Tag
       '         .Cells(Lig, Col).Value = Fr5
       '    End If
        End If
    Next Ctl
    For i = 4 To 46
        If Not Check(i) Then
            MsgBox "Toutes les entrées doivent êtres remplies." & Chr(13) _
            & "notamment .. " & Sheets("DONNE").Cells(i, "A").Value, vbCritical
            Exit Function
        End If
    Next i
    ControlerRemplir = True
End Function

Lorsque je l'exécute, il y'a debogage avec ce message :variable non définie (DTPicker1).

Comment la définir?

merci pour tout ce que t'as déjà fait

Salut à tous

Je ferme la manche même si certaines questions restent en suspend.

Je vous reviendrai dans un nveau post.

Encore merci à tous et plus precisement à Lermite.

Je suppose que c'est quand tu met la macros sur un autre UF ?

Ces macros doivent êtres adaptées aux contrôles présent sur l'UF, c'est pour cela que tu a des erreurs.

Si, sur un UF tu n'a pas de contrôle de date ça ne va pas fonctionner il faut supprimer les lignes dans le code qui y font références.

A+

Salut lermite

Merci d'avoir accepter une fois de plus de donner une suite sur ce sujet.

c'est lorsque je cherche à l'adapter à mon cas réel que y'a débogage.

Je vous represente le fichier tel qu'il ressemble à mon cas réel avec les controles aditifs.

Etant donné que je ne souhaite pas trop charger mes usf, à partir du combobox7 (de la 2è page), je souhaite que le 2è usf soit appelé. Pouvez-vous en tenir compte?

J’apprécie bcp votre fonction "ctl.tag".

Il n’est pas long mais très puissant.

Je souhaite comprendre son mécanisme pour mieux m’en servir dans mes autres usf.

Quand j'ajoute ou réduit des controles comment faire pour l'adapter?

Je pense que ca sera tout pour ce post tj pour ne plus abuser de votre patience que j'ai bien noté.

N.B:J'ai convenu avec le utilisateurs de l'outil que je suis entrain de créer que les date seront saisies manuellement pour ne pas trop abuser de votre patience et tous le monde est d'accord (donc c'est bon pour le DTPicker1).

Mci grandement à toi

24zombe-debogage.xlsm (202.48 Ko)
Rechercher des sujets similaires à "comment interfacer mes usf plage donnees"