Probleme de conception

Résolu
GermPeru Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   -  
GermPeru Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour Forum,

Je reviens vers vous pour un probleme de conception. A l'initialisation d'un USF, je charge les données d'une feuille dans plusieurs txtbox, j'ai autant de lignes dans mon usf que dans ma feuille. L'utilisateur a la possibilité de coché une chkbox correpondant a une ligne, si il y a le chek cela duplique la ligne en question.
Le but est d'actualiser mon USF avec les nouvelles données de la ligne dupliquée, mais avant ca j´ai le probleme que s' il y a plusieurs chekbox de coché je n'arrive pas a dupliquer la bonne ligne, cela fonctionne juste lorsque qu´une seule chkbox est coché.

Pour etre plus explicite voici mon code dans mon module de classe

With ChkBox
    For i = 2 To Nblignes
        If .Name Like "ChkC" & i Then
            If .Value = True Then
            StrRep = InputBox("Nombre de fraccionamiento?", "Caso de fracionamiento irregular")
                Cells(i, 1).EntireRow.Copy
                    For j = 1 To StrRep
                        Cells(Nblignes + j, 1).EntireRow.Select
                        ActiveCell.PasteSpecial (xlPasteValuesAndNumberFormats)
                    Next j
                Cells(i, 1).EntireRow.Delete
                Application.ScreenUpdating = False
             End If
        End If
    Next i
    End With


Le nom de ma chek box est relié au numero de ma ligne, car cré automatiquement lors de línitialisation de mon USF.

Set CollectChk = New Collection
For i = 2 To Nblignes
Set Obj = USFEt.Controls.Add("forms.checkbox.1")
    With Obj
    .Name = "ChkC" & i
    .Left = 29
    .Top = 22 * i + 4
    .Width = 22
    .Height = 16
    End With

    Set Cl = New Clase1
    Set Cl.ChkBox = Obj
    CollectChk.Add Cl
Next i


Mais lorsque je procede a un deuxieme tours de boucle le i indenté a ma chek box ne correspond plus au numero reel de ma ligne... car la ligne a été couper et coller n fois.

J´espere avoir été clair au possible.

Je ne sais pas si je mý prends de la bonne facon. Et je ne sais pas non plus comment procéder pour passer a l´étape suivante qui sera de réinitialiser mon USF avec les nouvelles données copier de ma feuille....

Merci dávance pour les indices voir meme plus une solution!

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonsoir, je n'ai pas regardé en détails. souvent, quand on fait ce genre de manipulation, on commence par la dernière ligne (de bas en haut), afin d'éviter de perturber la numérotation des lignes à manipuler ensuite.
donc plutôt, dans le module de classe:
For i = Nblignes To 2
0
GermPeru Messages postés 172 Date d'inscription   Statut Membre Dernière intervention  
 
Bjr yg_be,

Le detail est que je ne peux pas limiter l´utilisateur a partir de la fin puis le debut... Cad que s'il coche chkbx 7 correspondant a la ligne 7 (coupe colle n fois) puis la chk2 correpondant a la ligne 2 pas de pb mais s'il fait l´inverse coupe colle n fois la ligne 2, si il coche la chkbox 7, dans ce cas cela ne corespond plus a la ligne 7 mais a la ligne 6...

Pour palier a cela, je ne créé plus txtbox et chkbox a l´initialisation de mon usf mais au travers d'une autre sub; et j' appele ma sub a l´initialisation de mon usf et lors d' un chek, ainsi j' actualise le nom des chekbx qui correspond tjs au bon numero de ligne...

Mon probleme maintenant et que je n´arrive pas plus a récuperer la valeur de certaines text box... j´ai bien essayé un repaint un peu partout dans le code mais je pense que le nom de mes textbox reste en memoire et il y doit y avoir interference klk part... Mais ca sera le sujet d'une nouvelle question au forum. Enfin si tu as une idée du pk du comment tu peux tjs dire.

Merci
0