Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Erreur code vba

gothc

XLDnaute Occasionnel
bonjour le forum j'ai une erreur dans le code vba j'ai besoin d'aide
j'aimerais aussi modifier sur userform le combobox1 ( numéro code barre) par une saisie manuelle car je vais le faire avec une douchette
pour l'ajout avec le bouton ( incrémenter automatiquement le numéro suivant dans A)
Merci de votre aide

'Pour la liste déroulante Code client
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer

If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "B")
For I = 1 To 7
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
End Sub
 

Pièces jointes

  • Classeur1.xlsm
    30.6 KB · Affichages: 17

jmfmarques

XLDnaute Accro
Bonjour
Où, comment et avec quelle portée as-tu déclaré puis initialisé l'objet ws dont je vois que tu l'utilises dans l'évènement Change de ta combobox ?
SI non déclaré en public : --->>> totalement inconnu en évènement Change !
 

laurent950

XLDnaute Accro
Bonjour,
Beaucoup d'erreur dans votre code, j'ai corrigé
VB:
'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
    Me.ComboBox2.ColumnCount = 1 'Pour la liste déroulante Civilité
    Me.ComboBox2.List = Array("", "M.", "Mme", "Mlle")
    Me.ComboBox2.Listidex = 0
Dim Ws As Worksheet
    Set Ws = Sheets("fEUIL1") 'Correspond au nom de votre onglet dans le fichier Excel
    With Me.ComboBox1
        For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
           .AddItem Ws.Range("A" & J)
        Next J
    End With
    For I = 1 To 7
        Me.Controls("TextBox" & I).Visible = True
    Next I

End Sub
'Pour la liste déroulante Code client
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
'Manque ci-dessous 2 lignes Corrigé
Dim Ws As Worksheet
    Set Ws = Sheets("fEUIL1") 'Correspond au nom de votre onglet dans le fichier Excel
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
        Ligne = Me.ComboBox1.ListIndex + 2
        Me.ComboBox2 = Ws.Cells(Ligne, "B")
  For I = 1 To 7
    Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2).Value
  Next I
End Sub
'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim L As Integer
'Manque ci-dessous 2 lignes Corrigé
Dim Ws As Worksheet
    Set Ws = Sheets("fEUIL1") 'Correspond au nom de votre onglet dans le fichier Excel
If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
     ' Pas de feuille Clients dans ce fichier excel
     L = Sheets("Clients").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
     Ws.Range("A" & L).Value = Me.ComboBox1.Value
     Ws.Range("B" & L).Value = Me.ComboBox2.Value
     Ws.Range("C" & L).Value = Me.TextBox1.Value
     Ws.Range("D" & L).Value = Me.TextBox2.Value
     Ws.Range("E" & L).Value = Me.TextBox3.Value
     Ws.Range("F" & L).Value = Me.TextBox4.Value
     Ws.Range("G" & L).Value = Me.TextBox5.Value
     Ws.Range("H" & L).Value = Me.TextBox6.Value
     Ws.Range("I" & L).Value = Me.TextBox7.Value
End If
End Sub
'Pour le bouton Modifier
Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim I As Integer
'Manque ci-dessous 2 lignes Corrigé
Dim Ws As Worksheet
    Set Ws = Sheets("fEUIL1") 'Correspond au nom de votre onglet dans le fichier Excel
   If MsgBox("Confirmez-vous la modification de ce contact ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
     If Me.ComboBox1.ListIndex = -1 Then Exit Sub
         Ligne = Me.ComboBox1.ListIndex + 2
         Ws.Cells(Ligne, "B") = Me.ComboBox2.Value
            For I = 1 To 7
                If Me.Controls("TextBox" & I).Visible = True Then
                   Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I).Value
                End If
            Next I
   End If
End Sub
'Pour le bouton Quitter
Private Sub CommandButton3_Click()
   Unload Me
End Sub

Ps : Faite un essaie est Reposer avec des questions, pour correction

Exemple :
enregistrement à la première ligne de tableau non vide
Qu'elle Feuille devant Range ? ??????.Range("A" & L).Value = ComboBox1 est la Combobox Me.ComboBox.Value

Laurent
 

gothc

XLDnaute Occasionnel
Merci j'ai une erreur sur
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
Me.ComboBox2.ColumnCount = 1 'Pour la liste déroulante Civilité
Me.ComboBox2.List = Array("", "M.", "Mme", "Mlle")
Me.ComboBox2.Listidex = 0
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, gothc, jmfmarques, laurent950

Quitte à mettre des liens, autant mettre des liens qui pointent vers des productions réalisés par des XLDiens

Quoique... Silkyroad AKA MichelXLD fut aussi jadis un XLDien
 

Discussions similaires

Réponses
0
Affichages
175
Réponses
5
Affichages
448
Réponses
2
Affichages
294
Réponses
1
Affichages
194
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…