XL 2013 [ Résolu ] Besoin d'un petit décryptage du VBA

Le_Troll_Du_27

XLDnaute Occasionnel
Bonjour le forum

J'ai un tableau de 13 colonnes. (A-M). Mes formules sont dans F, L & M
Voilà mon code :


Code:
Private Sub ComboBox1_Change()
    Nettoyage        ' ------------------------- Lance le programme Nettoyage
    Me.ComboBox2.Clear        ' ---------------- Efface les données de la combobox2
    If Me.ComboBox1.ListIndex = -1 Then Exit Sub
    With Me.ComboBox2
        For j = 2 To NbLignes
            If Ws.Range("A" & j) = Me.ComboBox1 Then
                .AddItem Ws.Range("B" & j)
                .List(.ListCount - 1, 1) = j ' - Note numéro de ligne dans la colonne masquée
            End If
        Next j
    End With
    TextBox11 = ComboBox1        ' ------------- remplit la texbox11
End Sub

Private Sub ComboBox2_Change()
    Dim Ligne As Long
    Dim i As Integer
    Nettoyage        ' ------------------------- Lance le programme Nettoyage
    If Me.ComboBox2.ListIndex = -1 Then Exit Sub
    Ligne = Me.ComboBox2.List(Me.ComboBox2.ListIndex, 1)
    For i = 1 To 10
        Me.Controls("TextBox" & i) = Ws.Cells(Ligne, i + 2)
    Next i
    TextBox11 = ComboBox1        ' ------------- Equipements
    TextBox12 = ComboBox2        ' ------------- Désignation
    TextBox13 = TextBox1        ' -------------- Référence
    TextBox14 = TextBox2        ' -------------- Prix HT
    ComboBox3 = TextBox3        ' -------------- Coefficient de revente
    TextBox15 = TextBox3        ' -------------- Coefficient de revente
    TextBox16 = TextBox4        ' -------------- Prix de revente
    TextBox17 = TextBox5        ' -------------- Quantité
    TextBox18 = TextBox6        ' -------------- Poids
    TextBox19 = TextBox7        ' -------------- Seuil
    TextBox20 = TextBox8        ' -------------- Entrée
    TextBox21 = TextBox9        ' -------------- Sortie
    TextBox22 = TextBox10        ' ------------- Stock Réel
End Sub

Et c'est ici que j'ai besoin de comprendre

Code:
Private Sub CmdB_Modifier_Click()
    
    If MsgBox("Etes-vous certain de vouloir modifier ce produit ?", _
              vbYesNo, "Demande de confirmation") = vbYes Then
        Dim Ligne As Long
        Dim i As Integer

        If Me.ComboBox2.ListIndex = -1 Then Exit Sub
        Ligne = Me.ComboBox2.List(Me.ComboBox2.ListIndex, 1)
        For i = 11 To 15
            If Me.Controls("TextBox" & i).Visible = True Then
                Ws.Cells(Ligne, i - 2) = Me.Controls("TextBox" & i)
            End If
        Next i
        For i = 17 To 21
            If Me.Controls("TextBox" & i).Visible = True Then
                Ws.Cells(Ligne, i - 4) = Me.Controls("TextBox" & i)
            End If
        Next i
        
    End If
End Sub

Sub InitComboBox1()
    Dim MonDico As Object
    Set MonDico = CreateObject("Scripting.dictionary")
    For j = 2 To NbLignes
        MonDico(Ws.Range("A" & j).Value) = ""
    Next j
    With Me.ComboBox1
        .Clear
        If MonDico.Count > 0 Then
            .List = Application.Transpose(MonDico.keys)
        End If
    End With
End Sub

Private Sub UserForm_Initialize()        ' ----- à l'initialisation de l'userform
    Dim i As Integer
    Set Ws = Worksheets("PRODUIT")
    NbLignes = Ws.Range("A65536").End(xlUp).Row

    With Me.ComboBox2
        .ColumnCount = 2        ' -------------- 2 colonnes
        .ColumnWidths = "-1;0"        ' -------- Dont une de masquée
    End With

    InitComboBox1        ' --------------------- Lance le programme Init

    For i = 2 To Ws.Range("E65536").End(xlUp).Row
        ComboBox3 = Ws.Range("E" & i)
        If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Ws.Range("E" & i)
    Next i
    Me.ComboBox3.List = ListSort(Me.ComboBox3.List)

    ' ========== Format des TextBox ==========
    TextBox2 = Format(TextBox2, "# ##0.00€")
    TextBox3 = Format(TextBox3, "# ##0%")
    TextBox4 = Format(TextBox4, "# ##0.00€")
    TextBox6 = Format(TextBox6, "# ##0.00Kg")
    TextBox14 = Format(TextBox14, "# ##0.00€")
    TextBox15 = Format(TextBox15, "# ##0%")
    TextBox16 = Format(TextBox16, "# ##0.00€")

End Sub

Dès que je modifie à chaque fois je sort des colonnes pour fini sur Q
Je vous remercie

Cordialement
Laurent
 
Dernière édition:

Le_Troll_Du_27

XLDnaute Occasionnel
Re : Besoin d'un petit décryptage du VBA

Bonjour le forum, Bonjour le fil

Je suis désolé de mon absence sur le forum et de ne pas pu pouvoir répondre avant.

Je cherche à comprendre pourquoi dans l'userform1 quand je fais modifier un produit il le modifie mais il le déplace de la colonne A à I et ainsi de suite.
Capture Modifier 2.jpgCapture Modifier.JPG

J'avais modifié la ligne de commande comme vous l'aviez expliquer sur le post 2 et j'avais toujours le même soucis.
C'est pourquoi j'avais joins le fichier. Et je le même soucis avec l'userform3 de mémoire ci je me rappelle.

Amicalement
Laurent
 

jpb388

XLDnaute Accro
Re : Besoin d'un petit décryptage du VBA

Bonjour à tous

avec ton fichier et les explications je pense que l'erreur est -2 et -4
essaye celle ci et dis moi si j'ai raison ou tord

voici la macro
VB:
Private Sub CmdB_Modifier_Click()
    
    If MsgBox("Etes-vous certain de vouloir modifier ce produit ?", _
              vbYesNo, "Demande de confirmation") = vbYes Then
        Dim Ligne As Long
        Dim i As Integer

        If Me.ComboBox2.ListIndex = -1 Then Exit Sub
        Ligne = Me.ComboBox2.List(Me.ComboBox2.ListIndex, 1)
        For i = 11 To 15
            If Me.Controls("TextBox" & i).Visible = True Then
                Ws.Cells(Ligne, i - 10) = Me.Controls("TextBox" & i)
            End If
        Next i
        For i = 17 To 21
            If Me.Controls("TextBox" & i).Visible = True Then
                Ws.Cells(Ligne, i - 10) = Me.Controls("TextBox" & i)
            End If
        Next i
        
    End If
End Sub
 

Le_Troll_Du_27

XLDnaute Occasionnel
[Résolu] Besoin d'un petit décryptage du VBA

Bonjour le forum, bonjour le fil
Bonjour jpb388

Je viens de mettre à jour ta macro et il n'y a aucun soucis.
Il me reste à convertir quelques les colonnes D E G I J K en numérique.

Je vous remercie

Amicalement

Laurent
 

Discussions similaires

Réponses
2
Affichages
258

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87