Signaler

Appel de control qui se créer dynamiquement... [Résolu]

Posez votre question GermPeru 57Messages postés mercredi 7 décembre 2016Date d'inscription 17 février 2017 Dernière intervention - Dernière réponse le 18 févr. 2017 à 16:38 par thev
Bonjour a Forum, bonjour a tous,

Mon soucis du jour... A l'initialisation de mon usf j´ai des textbox qui se créent dynamiquement. Ce que je cherche a faire cést lors d´un évenement cmd clik, appeler ces txtbox et en fonction de leur valeur (qui doit etre numerique) je crée de nouveux textbox....

Intuitivement j´ai fait le code suivant mais je nárrive pas a appeler ces txtbox... et du coup je suis un peu bloqué sur mon code... (precision mes variables sont déclarées en debut de module)

Private Sub CmdCalc_Click()
NbLignes = Sheets(2).Range("A1", Selection.End(xlDown)).Cells.Count
For Each Ctrl In Me.Controls
'************ premier soucis -> je n'arrive pas a appeler mes controle qui se créent dynamiquement a l'initialisation de mon usf et agir en fonction de leur valeur
   If Ctrl.Name Like "TxtSelladas*" <> "" And Ctrl.Name Like "TxtFrac*" <> "" Then
        Set CollectTxt = New Collection
        For i = 2 To NbLignes
        Set Obj = Me.Controls.Add("forms.textbox.1")
            With Obj
                .Name = "TxtCantSelladas" & i
                .Object.Value = Selladas("TxtCantPract" & i, "TxtFrac" & i, "TxtSelladas" & i) 
                .Left = 644
                .Top = 22 * i + 4
                .Width = 22
                .Height = 16
                .Enabled = False
                .TextAlign = fmTextAlignCenter
            End With
        Set Cl = New Clase1
        Set Cl.textbox = Obj
        CollectTxt.Add Cl
        Next i
    Else
    MsgBox "Todos los campos de Sellada y de Fracción deben ser llenados!", 48, "Mensaje de error"
   End If
Next Ctrl


Je pense que ma solucion est au travers d´un module de classe avec un evenemnt sur mes ctrl mais nouvelle notion dont je ne métrise pas encore ses suptilités...

Toutes bonnes idées sera recu avec plaisir!

Merci d' avance.

Ps: je ne savais tropp quoi mettre en titre, si certains on des idées plus appropriées je suis prenneur!
Afficher la suite 
Utile
+1
moins plus
Bonsoir,

1 - Il te faut d'abord créer une classe correspondant aux événements à gérer dans tes TextBox.
ci-dessous un exemple d'une classe nommée "Txtbox" avec l'événement "Change"

Option Explicit

'# Formulaire appelant
Private USF As Object

'# Evénement déclenché par la classe
Public Event Change()

'# Evénements pour zone de texte
Private WithEvents Tbox As MSForms.TextBox

Public Property Set Obj_UserForm(ByVal formulaire As Object)
Set USF = formulaire
End Property

Public Property Set Obj_TextBox(ByVal champ As MSForms.TextBox)
Set Tbox = champ
End Property

Public Property Get Obj_TextBox() As MSForms.TextBox
Set Obj_TextBox = Tbox
End Property

Private Sub Tbox_Change()
'activation évenements de la classe dans le formulaire
Set USF.Tbox_i = USF.CollectTxt(Tbox.Name)
'activation événement Change
RaiseEvent Change
End Sub


2- Dans ton UserForm,
a) créer une collection de type dictionnaire avec pour clé chaque élément de ta classe et déclarer cette collection publique afin de pouvoir y accéder dans le module de classe pour activer l'événement de classe dans le formulaire

b) déclarer les événements de classe

comme ceci :

Option Explicit
Public CollectTxt As Object
Private Ctrl As Control
Private valeur_textbox As String

Public WithEvents Tbox_i As Txtbox

Private Sub CmdCalc_Click()

'création collection zones de texte
Set CollectTxt = CreateObject("Scripting.Dictionary")
For Each Ctrl In Me.Controls
'stockage zone de texte dans la collection
CollectTxt.Add Key:=Ctrl.Name, Item:=Nothing
Set CollectTxt(Ctrl.Name) = New Txtbox
Set CollectTxt(Ctrl.Name).Obj_TextBox = Ctrl
Set CollectTxt(Ctrl.Name).Obj_UserForm = Me
Next Ctrl

End Sub

Private Sub Tbox_i_Change()
valeur_textbox = Tbox_i.Obj_TextBox.Value
End Sub


thev 1560Messages postés lundi 7 avril 2008Date d'inscription 19 février 2017 Dernière intervention - 17 févr. 2017 à 01:09
Bonsoir,

Je pense que cette instruction est erronée
Set CollectTxt(Obj.Name) = New ClaseTxtbox

l'instruction doit être
Set CollectTxt(Obj.Name) = New <nom du module de classe>

Si le module de classe est "Txtbox", alors l'instruction est
Set CollectTxt(Obj.Name) = New Txtbox


Par ailleurs, il n'est pas possible d'affecter à la collection et à une instance de cette classe un objet TextBox qui n'a pas encore été créé. Ce code devrait donc mieux convenir

Private Sub CmdCalc_Click()
Dim NbLignes As Integer, i As Integer
NbLignes = Sheets(2).Range("A1", Selection.End(xlDown)).Cells.Count
'création collection zones de texte
Set CollectTxt = CreateObject("Scripting.Dictionary")
For Each Ctrl In Me.Controls
For i = 2 To NbLignes
Set Obj = Me.Controls.Add("forms.textbox.1")
With Obj
.Name = "TxtCantSelladas" & i
.Object.Value = i 'j´ai écarté ma fonction pour éviter pb de progrmation
.Left = 644
.Top = 22 * i + 4
.Width = 22
.Height = 16
.Enabled = False
.TextAlign = fmTextAlignCenter
End With
'stockage zone de texte dans la collection
CollectTxt.Add Key:=Obj.Name, Item:=Nothing
Set CollectTxt(Obj.Name) = New Txtbox
Set CollectTxt(Obj.Name).Obj_TextBox = Obj
Set CollectTxt(Obj.Name).Obj_UserForm = Me
Next i
Next Ctrl
End Sub
Répondre
GermPeru 57Messages postés mercredi 7 décembre 2016Date d'inscription 17 février 2017 Dernière intervention - 17 févr. 2017 à 14:51
Bonjour Thev,

J´avais remplacé le nom du module de classe pour que cela soit plus clair dans ma tete quand je lisais le code...

Le code bloque a ce niveua:
Set CollectTxt = CreateObject("Scripting.Dictionary")


En m´affichant le msg que ne coincide pas les types...

Si j´avais les connaissances suffisantes, je pense que j´aurais procédé avec ta facon de faire car intituivement c´est ce que je voulais, et je trouve le code propre. Mais il y a un mais, je n´arrive pas a bien programmer avec le dictionnaire et la notion de module de classe. J´ai pallié mes lacunes en ne rendant pas visible mes txtbox de calcul et en faisant mes calculs dans une feuille de mon classeur; pour le moment je vais appeler ca de la bidouille mais je vais continuer a travailler les infos que tu m' as transmises , car je penses que ce sont des notions trés importantes et tres utiles dans la conception de progrqamme VBA.

J´ai mis mon pb come résolu pcq je vais bidouiller mais entierement disponible pour continuer sur cette possibilité.

Un sincere Merci Thev
Répondre
thev 1560Messages postés lundi 7 avril 2008Date d'inscription 19 février 2017 Dernière intervention - 17 févr. 2017 à 15:44
Bonjour,

Si le code bloque à ce niveau,
Set CollectTxt = CreateObject("Scripting.Dictionary")

c'est que la définition de la variable "CollectTxt" n'est pas correcte. La définition doit être
Public CollectTxt As Object
Répondre
GermPeru 57Messages postés mercredi 7 décembre 2016Date d'inscription 17 février 2017 Dernière intervention - 17 févr. 2017 à 18:55
Maintenant ca bug ici

CollectTxt.Add Key:=Obj.Name, Item:=Nothing

Je ne veux pas te déranger plus, je vais faire autrement et suivre d´autres pistes qui sont plus accesible vu mon niveau de connaissance; dans tous les cas merci Thev
Répondre
thev 1560Messages postés lundi 7 avril 2008Date d'inscription 19 février 2017 Dernière intervention - 18 févr. 2017 à 16:38
Bonjour,

Il y a peut être un problème avec la collection de type Dictionnaire. Il est possible de revenir à la collection native. Essayer ce code, chez moi il fonctionne

Option Explicit
Public CollectTxt As New Collection
Private Ctrl As Control
Private valeur_textbox As String

Public WithEvents Tbox_i As ClaseTxtbox

Private Sub CmdCalc_Click()
Dim NbLignes As Integer, i As Integer
Dim obj As MSForms.TextBox
NbLignes = Sheets(2).Range("A1", Selection.End(xlDown)).Cells.Count

For Each Ctrl In Me.Controls
For i = 2 To NbLignes
Set obj = Me.Controls.Add("forms.textbox.1")
With obj
.Name = "TxtCantSelladas" & i
.Object.Value = i 'j´ai écarté ma fonction pour éviter pb de progrmation
.Left = 644
.Top = 22 * i + 4
.Width = 22
.Height = 16
.Enabled = False
.TextAlign = fmTextAlignCenter
End With
'stockage zone de texte dans la collection
CollectTxt.Add Key:=obj.Name, Item:=New ClaseTxtbox
Set CollectTxt(obj.Name).Obj_TextBox = obj
Set CollectTxt(obj.Name).Obj_UserForm = Me
Next i
Next Ctrl

End Sub

Private Sub Tbox_i_Change()
valeur_textbox = Tbox_i.Obj_TextBox.Value
End Sub
Répondre
Donnez votre avis
Utile
+0
moins plus
Bonjour,

Il y a peut-être plus simple que la création d'un module de classe.
Ici les textbox sont ajoutés dynamiquement, mais n'ont pas besoin d'un événement particulier. Si?

Par contre, ce qui nous manque pour t'aider c'est le code créant tes premières textbox. A l'initialisation de mon usf j´ai des textbox qui se créent dynamiquement.
Donne nous ce code stp.
GermPeru 57Messages postés mercredi 7 décembre 2016Date d'inscription 17 février 2017 Dernière intervention - 15 févr. 2017 à 14:31
Bjr pijaku,

Je vais te donner tout le code pour que cela soit plus explicite, avant tout je vais téxpliquer un peu le deroulement:
- lútilisateur rentre un N° via un inputbox, ce numero qui correspond a un fichier (N°), ce qui lóuvre et copie les données, crée une nouvelle feuille en position 2 et les colles, puis ferme le fichier (N°)
- charge certaines données de la feuille (2) dans mon usf a son iniatilisation
- et a la fermeture de mon usf cela supprime cette feuille.

Option Explicit
Dim TNumBox() As New ClassNumBox 'variable en debut pour rester en memoire

Private Sub UserForm_Initialize()
'Pour la creation dynamique des txtbox
Dim Obj As Control, Ctrl As Control
Dim Cl As Clase1
Dim i As Integer, NbLignes As Integer, T As Integer '(i boucle nb lignes,T boucle tag 1 numbox)
'ctrl spé a la limitation num
Dim ctrlNumBox As Control

'On compte le nb de lignes
 NbLignes = Sheets(2).Range("A1", Selection.End(xlDown)).Cells.Count
'chargement automatique des lbl
    LblProd.Caption = Range("D2").Value
    LblCodProd.Caption = Range("C2").Value
    LblLote.Caption = Range("F2").Value
    LblFecha.Caption = Format(Now(), "dddd dd/mm/yyyy")
    LblUsuario.Caption = Sheets(5).Range("E65536").End(xlUp).Value
 
'boucle pour la création des Lbl
Set CollectTxt = New Collection
For i = 2 To NbLignes
'dimension de l'usf
Me.Height = 50 + 22 * i
'N° de lignes
Set Obj = Me.Controls.Add("forms.textbox.1")
    With Obj
        .Name = "TxtN" & i
        .Object.Value = i - 1
        .Left = 1
        .Top = 22 * i + 4
        .Width = 22
        .Height = 16
        .Enabled = False
        .TextAlign = fmTextAlignLeft
    End With
'le nom de chaque matiere premiere
Set Obj = Me.Controls.Add("forms.textbox.1")
    With Obj
        .Name = "TxtMP" & i
        .Object.Value = Sheets(2).Range("J" & i)
        .Left = 25
        .Top = 22 * i + 4
        .Width = 262
        .Height = 16
        .Enabled = False
    End With
'le codigo chaque matiere premiere
Set Obj = Me.Controls.Add("forms.textbox.1")
    With Obj
        .Name = "TxtCodMP" & i
        .Object.Value = Mid(Sheets(2).Range("I" & i), 4, 5)
        .Left = 289
        .Top = 22 * i + 4
        .Width = 36
        .Height = 16
        .TextAlign = fmTextAlignCenter
        .Enabled = False
    End With
'N° lote de chaquew mat pemiere
Set Obj = Me.Controls.Add("forms.textbox.1")
    With Obj
        .Name = "TxtLote" & i
        .Object.Value = Sheets(2).Range("O" & i)
        .Left = 327
        .Top = 22 * i + 4
        .Width = 53
        .Height = 16
        .Enabled = False
    End With
'cantidad requirida mat pemiere
Set Obj = Me.Controls.Add("forms.textbox.1")
    With Obj
        .Name = "TxtCantRec" & i
        .Object.Value = Sheets(2).Range("M" & i)
        .Left = 382
        .Top = 22 * i + 4
        .Width = 61
        .Height = 16
        .TextAlign = fmTextAlignCenter
        .Enabled = False
    End With
'cantidad practica mat pemiere
Set Obj = Me.Controls.Add("forms.textbox.1")
    With Obj
        .Name = "TxtCantPract" & i
        .Object.Value = Sheets(2).Range("N" & i)
        .Left = 445
        .Top = 22 * i + 4
        .Width = 61
        .Height = 16
        .TextAlign = fmTextAlignCenter
        .Enabled = False
    End With
'unidad
Set Obj = Me.Controls.Add("forms.textbox.1")
    With Obj
        .Name = "TxtUnidad" & i
        .Object.Value = Sheets(2).Range("L" & i)
        .Left = 508
        .Top = 22 * i + 4
        .Width = 34
        .Height = 16
        .TextAlign = fmTextAlignCenter
        .Enabled = False
    End With
'fraccion de chaque mat prim
Set Obj = Me.Controls.Add("forms.textbox.1")
    With Obj
        .Name = "TxtFrac" & i
        .Left = 544
        .Top = 22 * i + 4
        .Width = 43
        .Height = 16
        .BackColor = RGB(180, 205, 205)
        .Tag = "2"
    End With
'selladas de chaque mat prim
Set Obj = Me.Controls.Add("forms.textbox.1")
    With Obj
        .Name = "TxtSelladas" & i
        .Left = 589
        .Top = 22 * i + 4
        .Width = 51 ' 53 ojo - 2 car dernier
        .Height = 16
        .Tag = "1"
    End With
'ajout de l'objet dans la classe
 Set Cl = New Clase1
    Set Cl.textbox = Obj
    CollectTxt.Add Cl
Next i
'limitation valeur numerique de mes txtbox
For Each ctrlNumBox In Me.Controls
     If TypeOf ctrlNumBox Is MSForms.textbox Then
         Select Case ctrlNumBox.Tag
            Case Is = "1", Is = "2"
                T = T + 1
                ReDim Preserve TNumBox(1 To T)
                Set TNumBox(T).NumBox = ctrlNumBox
        End Select
     End If
Next ctrlNumBox

End Sub


Comme tu peux le voir je crée 9 txtboxs, qui ont chacune des propriétés différentes, avec des positions et des tailles particulieres, pour cela que je fais une par une.

Associé a ce code j´ai 2 module de classe:
- classe1 pour mes txtbox a l´initialisation
Option Explicit
Public WithEvents textbox As MSForms.textbox


-classnumbox pour limiter des valeurs numerique dans 2 de mes txtbox: "txtselladas"et "txtfrac"
Public WithEvents NumBox As MSForms.textbox
Private Sub NumBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 Select Case KeyAscii
    Case Is < 48, Is > 57
        KeyAscii = 0
        MsgBox "Solemente se puede ingresar cifras", 32, "Mensaje informativo"
    End Select
End Sub


Cést tres fortement possible que ce code peut etre optimisé ; mais ne voulant pas créer d´interaction entre mes variables et mes modules j´en ai créer une pour chacun.

Je pense que thev a raison pour l´evenement change; car mon objectif est que l´utilisateur erntre des valeur numerique dans mes txtbox "txtselladas"et "txtfrac", a partir de ces valeurs et de 2 valeur deja dans mon tableau, j'ai créé 6 fonctions qui me donne 6 resultats, du coup ce que je cherche a faire c´est créer 6 txtbox m'affichant ces resultat dans mon usf pour ensuite imprimer certaines de ces données dans un format particulier....

Tu pourras constater que j´utilise des collections pour créer dynamiquement mes txtbox et thev utilise un dictionnaire, je pense encore qu´il a raison et que c´est la bonne facon de faire, car moins gourmand en temps de réalisation mais plus simple de compréhension, tout du mois au premier abords... Je vais étudier la réponse de thev bien attentivement, mais voila tu sais a peu prés tout...

Dans tous les cas merci pour ton temps, et je continue d´essayer de finir mes phrases ;)
Répondre
Donnez votre avis
Utile
+0
moins plus
Cést tres fortement possible que ce code peut etre optimisé
En effet.
On va procéder par étapes.
Essaye ce code dans ton bouton :
Private Sub CmdCalc_Click()
Dim Ctrl As Control
For Each Ctrl In Me.Controls
   If Ctrl.Name Like "TxtSelladas*" Or Ctrl.Name Like "TxtFrac*" Then
      MsgBox Ctrl.Name & " contient : " & Ctrl.Value
   End If
Next Ctrl 
End Sub

Pour le reste on verra après
GermPeru 57Messages postés mercredi 7 décembre 2016Date d'inscription 17 février 2017 Dernière intervention - 15 févr. 2017 à 19:54
oui cela me donne le nom de ma txtbox et la valeur qu´elle contient... Pourrais tu m´en dire plus?
Répondre
Donnez votre avis
Utile
+0
moins plus
Bonjour,

Pourrais tu m´en dire plus?

Certainement, mais tu dis :

Ce que je cherche a faire cést lors d´un évenement cmd clik, appeler ces txtbox et en fonction de leur valeur (qui doit etre numerique) je crée de nouveux textbox....

et aussi :

5- toujours concernant la création, pour l´asigantion des valeurs a mes nouvelles txtbox, qui depend dúne fonction dont les variables la composant sont des valeurs dáutres txtbox ds mon usf.

Nous ne savons pas combien créer de TextBox, ni comment, ni qu'elle fonction tu utilises, ni ou les créer, etc...

Ta question initiale est toutefois résolue, tu sais maintenant les appeler et récupérer leur valeur.
Tente donc de faire quelque chose.

Après cela, je te montrerai 3-4 petites choses à améliorer dans ton code.
GermPeru 57Messages postés mercredi 7 décembre 2016Date d'inscription 17 février 2017 Dernière intervention - 16 févr. 2017 à 14:38
Bonjour Pijaku,

C´est vrai que j´ai bcp écrit et peut etre pas été assez concis, et certaines infos sont passés a la trappe. De plus ce n´est pas clair non plus dans ma tete pcq novice en VBA, je me pose plein de question sur la conception du programme, et le faire bien!

A l´initialisation de mon USF, j´ai 9 txtbox par ligne, 7 qui charge des info de ma feuille en position 2 et 2 txtbx que l´utilisateur rentre des infos. Jai autant de ligne ds mon USF que dans ma feuille 2.
Si ces 2 dernieres txtbox ne sont pas vide je voudrais, en créer 6 autres (evenemnt clik ou initialisation: je ne sais pas quel est le mieux...) sur la meme ligne et utiliser leur valeur comme variable de mes fonction et botter mes résultats dans mes 6 nvlles txtbx.

En poste 1, cad ma premiere question, je prends l ' exemple juste de la premiere des 6 txtbox que je veux créer, je la positionne a un left definit et a un top qui depend de i. La valeur que je souhaiterai serait le resultat de ma premiere fonction: "Selladas". Celle que j´emploie dans mon premiere exemple.

'quantité de selladas
Function Selladas(Cantidad, Fraccion, Sellada) As Double

If Fraccion = 1 Then
  Selladas = Fix(Cantidad / Sellada)

ElseIf Fraccion >= 1 Then
 CantReg = Round(Cantidad / Fraccion, 3)
 SellReg = Abs(Fix(CantReg / Sellada))
 FracReg = Fraccion - 1
 CantIReg = Cantidad - CantReg * FracReg
 SellIReg = Fix(CantIReg / Sellada)

        If SellIReg <= 0 Then
        Selladas = SellReg * FracReg
        ElseIf SellIReg > 0 Then
        Selladas = SellReg * FracReg + SellIReg
        End If
Else
MsgBox "Falta dato de fraccion", 48, "Error"
End If
End Function


Cette premiere fction selladas a 3 variables qui sont :
-cantidad: sa valeur est chargé a l ínitialisation de mon USF "TxtCantPract" & i
-Fracion: sa valeur est une des 2 txtbox que renseigne l útilisateur "TxtFrac" & i
-sellada: sa valeur est la 2ieme txtbox que renseigne lútilisateur "TxtSelladas" & i

Pour le moment je n´arrive pas a créer les 6 nouvelles txt box (ou tout du moins une pour commencer), au cmdclik et en fonction des valeurs de mes autres textbox et encore moins leur assigné la valeur des résultats de mes fonctions....

Mon casse tete est loin d´être résolu....

Mais tu as raison je vais essayé de faire avec ce que j´ai... c´est a dire que ces 6 autres txtbox je vais les créer a l´initialisation de mon usf, je vais essayer de faire appel a mes fonction seulement a l´événement cmdclik... voir si je m´en sors avec ca mais sinon ca sera un autre sujet de discution.

J´espere avoir été plus clair et explicite dans mes problematique.

Merci Pijaku pour le temps consacré a mes pb, et pour les 3-4 petites choses a améliorer je suis prenneur et meme plus si tu as :)
Répondre
pijaku 12158Messages postés jeudi 15 mai 2008Date d'inscription ModérateurStatut 17 février 2017 Dernière intervention - 16 févr. 2017 à 16:18
1- j'espère que toutes tes textbox sont situées dans un Frame sur l'userform. Si beaucoup de lignes dans ta feuille, ton userform va déborder de l'écran...

2- tes 6 textbox à ajouter "dynamiquement" peuvent être ajoutées lors de l'initialisation, en étant simplement cachées (propriété Visible = False). Il suffirait de les afficher (Propriété Visible = True) en fonction des valeurs contenues dans tes 2 textbox gérées par la classe.

3- tu souhaites que :
>>3a - tes 6 textbox s'affichent dès la saisie des 2 textbox de la ligne
>>3b - tes 6 textbox par ligne s'affichent tous en même temps pour toutes les lignes
>>3c - autre solution?

4- pour la suite, et selon tes réponses, il va nous falloir le fichier...
Utilisation d'un site de pièces jointes (ex : Cjoint.com)
Pour joindre un fichier sur les forums de ccm il faut :
> se rendre sur le site : http://www.cjoint.com/
> cliquer sur "Parcourir"
> rechercher le fichier
> cliquer sur "Ouvrir"
> cliquer sur "Créer le lien Cjoint"
> copier le lien
> revenir ici le coller dans une réponse
Répondre
GermPeru 57Messages postés mercredi 7 décembre 2016Date d'inscription 17 février 2017 Dernière intervention - 16 févr. 2017 à 17:31
1-Non pour le coup elles ne sont pas dans une fram mais je nái jamais eu de cas a plus de 20 lignes, eta ce que jái testé l usf peut afficher jusqu´a 22; mais c´est une possibilité que je devrais prendre en compte

2- Ton deuxieme points est une trés bonne reflexion qui serait une solution de substitution adequat, de plus ca me donne l´idée de proceder a l ´utilisation de mes formules directement dans ma deuxieme feuille puis rappatrié les résultats dans mon usf...

3-ce detail de conception est flou car je ne sais pas trop d'un point de vue utilisateur quel est le mieux. Mais jáurais envie de te repondre a partir du moment que toute les informations sont presentes, lútilisateur clik sur cmdcalc pour calculer et toues mes 6 nouvelles txtbox apparaissent avec les resultats

4- je ne peux pas te donner le fichier tel quel pour la simple raison que jái acheté un petit programme excel pour limiter l ´acces et la protection. De plus a travers une inputbox j áccede a une base de données, que je peu te fournir non plus. Alors j ái exporté tous les modules suffisant et nenecessaire dans un nvx fichier, j´ai copié une feuille exmple, essayé de faire en sorte que tu es a disposition toutes les données me parraissant utiles.
Mais en soit a l´affichage de mon usf j´ai un code d érreur que je n´ai pas sur le fichier originel... J´ai essayé de comprendre le pk du comment, mais pas reussi...Tu m´en excusera... Je te le fournis quand meme...

http://www.cjoint.com/c/GBqqEDVWrjF

Un grand merci pour ces idées nouvelles qui vont permettre de faire de nouveaux essais, etudier de nouvelles pistes pour faire avec les connaissances que jái, en esperant qu´avec ce paliatif je pourrais remedier a mon probleme initiale dúne autre maniere. Merci, et j´ai hate de lire
Répondre
Donnez votre avis
Utile
+0
moins plus
Bonjour,

Voici comment je verrais les choses à ta place :
http://www.cjoint.com/c/GBrjBupyYhE

Ce n'est qu'un test, essaye le.
Tu clic sur la listbox, ou tu veux, plusieurs fois sur chaque ligne, et vois.

Avantages :
> plus de classe
> plus de textbox dynamiques
inconvénient :
> esthétique pas top
pijaku 12158Messages postés jeudi 15 mai 2008Date d'inscription ModérateurStatut 17 février 2017 Dernière intervention - 17 févr. 2017 à 12:44
Voici une seconde version un peu plus complète.
http://www.cjoint.com/c/GBrlSpj3MZE
Répondre
GermPeru 57Messages postés mercredi 7 décembre 2016Date d'inscription 17 février 2017 Dernière intervention - 17 févr. 2017 à 13:58
Bonjour Pijaku,

C'est beau, simple et propre... Je ne connaissais pas ces possibilités, ca libere de léspace dans l´usf, cela simplifie tres grandement le code, et de visue ca rend bien...

J´avais commencé a cacher toutes les nouvelles txtbox, a faire mes calculs dans la feuille 2, et rappatrier les résultats dans mon usf.... Mais avec ces nouvelles données; vu que j´ai le temps, je vais essayé de développer les différentes interfaces pour voir ce qui correspond le mieux a mes nécéssité.

Du coup pb résolu, voir mieux: simplifié!! avec dáutres pistes a étudier, jái beaucoup de taf devant moi; je ne sais pas comment te remercier pour ton aide et le partage de tes connaissance... Avec une telle distance je peux juste te dire merci Pijaku
Répondre
pijaku 12158Messages postés jeudi 15 mai 2008Date d'inscription ModérateurStatut 17 février 2017 Dernière intervention - 17 févr. 2017 à 14:04
je ne sais pas comment te remercier pour ton aide
C'est fait.
A+ n'hésite pas !
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !