Probleme de conception

Résolu/Fermé
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 - Modifié par GermPeru le 1/03/2017 à 19:14
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 - 2 mars 2017 à 15:54
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!
A voir également:

1 réponse

yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
Modifié par yg_be le 1/03/2017 à 20:37
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 mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
2 mars 2017 à 15:54
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