XL 2013 userform erreur

gena

XLDnaute Occasionnel
bonjour le forum
voila j'ai encore un petit soucis j'ai un userform pour ma base de clients qui est pas de moi mais essaye de adapter a mes besoins
il fonctionne assez bien ,mais voila quand je veux modifier ou ajouter il me change la colonne A civilité
j'arrive pas a trouvé erreur
pouvez vous me dire ou elle peut être et comment
avec tout mes remerciments
 

Pièces jointes

  • userform recherche gena v01.xlsm
    53.2 KB · Affichages: 19

patricktoulon

XLDnaute Barbatruc
Bonjour gena
je pense que si tu regarde d'un peu plus pret ce que tu fait tu comprendra toute seule

et oserais-je dire que la même erreur est faite avec le L1 _click
traduit ces 3 lignes en francais dans ta tète ;)

oserais je dire aussi que je comprends pas très bien ce code a répétition(3 fois) tout du moins le besoins

Capture.JPG
 

patricktoulon

XLDnaute Barbatruc
re
ben l'erreur elle est simple

VB:
 For i = 2 To 12
            If IsNumeric(Controls("T" & i)) Then
                .Cells(n, 1) = CDbl(Controls("T" & i))
            Else
                .Cells(n, 1) = Controls("T" & i)
            End If
            n = n + 2
        Next i

je te traduis en considérant l’arrêt de la boucle à 2 juste pour l'explication
traduction


si le controls(T2) est un nombre alors
la cell(2,1)= le numérique de controls(T2)
sinon
la cell(2,1)= le contenu de controls(T2)

dans n'importe quel cas n commence a 2 donc avec cette 3 eme boucle (après avoir écrit ta derniere ligne( la bonne) avec la ligne"fin"

tu reéécrit mais dans la ligne 2(n) et ainsi de suite

ca y est tu vois le smilbilk ;)


j'ai donc pris la peine de le réecrire en respectant ta contrainte du mode ajout ou listebox ("fin"/"lig") bien que je n'aurais pas fait comme cela
cela dit ca fait ce que tu demande
a toi d'adapter cela dans le L1_click
VB:
Private Sub Bt1_Click()
    Dim n&
    With Feuil8
        If L1.ListIndex = -1 Then
            fin = .Range("A" & Rows.Count).End(xlUp).Row + 1
            For i = 2 To 12
                .Cells(fin, i - 1) = IIf(IsNumeric(Controls("T" & i)), Val(Controls("T" & i)), Controls("T" & i))
            Next i
        Else
            For i = 2 To 12
                .Cells(lig, i - 1) = IIf(IsNumeric(Controls("T" & i)), Val(Controls("T" & i)), Controls("T" & i))
            Next i
        End If
    End With
    Unload Me
End Sub
c'est quand meme plus clair on saisi tout de suite l'intention ;)
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour ; Slt patrick
Je regardais aussi , déjà aussi pourquoi toutes ces complications , if numeric, cdbl .... et des boucles .... une suffit pour ajouter et une autre pour modif

et enfin , je sais pas si cela va servir mais les déclarations de variables PUBLIC se mettent dans un module et pas dans l'usf
 

patricktoulon

XLDnaute Barbatruc
bonjour @hervé62
Bonjour ; Slt patrick
Je regardais aussi , déjà aussi pourquoi toutes ces complications , if numeric, cdbl .... et des boucles .... une suffit pour ajouter et une autre pour modif

et enfin , je sais pas si cela va servir mais les déclarations de variables PUBLIC se mettent dans un module et pas dans l'usf
c'est ce que j'ai fait me semble t'il
voir même une seule boucle suffirait pour les deux

VB:
Private Sub Bt1_Click()
    Dim fin&,i&
    With Feuil8
              'a condition que "!! Lig !!" soit bien instruit ailleurs dans le module du userform
        fin = .Range("A" & Rows.Count).End(xlUp).Row + 1
        lig = IIf(L1.ListIndex = -1, fin, lig)
         For i = 2 To 12
            .Cells(lig, i - 1) = IIf(IsNumeric(Controls("T" & i)), Val(Controls("T" & i)), Controls("T" & i))
        Next i
    End With
    Unload Me
End Sub
;)
 

Discussions similaires