Combobox et relation avec une base de données

Bonjour,

je bloque sur un probleme de VBA et d'actualisation de combobox.

capture

J'ai tout un tableau qui est connecté a une base de donnée. Aucun changement n'est possible dans celui-ci pour éviter les problèmes de lecture seule car nous sommes une dizaine a s'en servir.

J'ai donc créer des combobox qui permettent de modifier la base de donnée et d'actualiser a la suite.

Dans ce cas précis, je change la ligne 0000281-0000 pour modifier l'état de "A faire" a "en validation".

L'état est bien modifié, il génère un email automatiquement mais boucle sur une deuxième ligne. Comme si l'actualisation "Refresh all" faisait changer l'état de ma combobox et modifiait une deuxième ligne.

Si vous avez une idée, je suis preneur car vraiment je n'ai aucune idée d'ou ce problème arrive.. Merci d'avance, j'espere que ma demande fut claire !

Private Sub ComboBox1_Change()
ligne = ActiveCell.Row
etat1 = Cells(ligne, 16)
etat = ComboBox1.value
plan = Cells(ligne, 1)
CA = Cells(ligne, 11)
client = Cells(ligne, 10)
designation = Cells(ligne, 3)
chantier = Cells(ligne, 12)

'Mise a jour etat
If etat1 <> etat Then
    'Ajout de la ligne a la base de données
    Dim CnBDD As ADODB.Connection
    Dim wChaineConnection As String
    Set CnBDD = New ADODB.Connection
    wChaineConnection = "Provider=SQLOLEDB.1;Password=Post37Forming;Persist Security Info=True;User ID=sa;Initial Catalog=Tab_DEV;Data Source=srv-sage"
    CnBDD.Open wChaineConnection
    CnBDD.Execute "UPDATE [Tab_DEV].[dbo].[DEV]SET etat = '" & etat & "' WHERE [Plan] =  '" & plan & "';"
    CnBDD.Close
    Call Mise_a_jour
End If

If etat = "EN VALIDATION" And etat1 = "A FAIRE" Then
    'Création d'un mail si en cours de validation
    Dim mail As String, lignemail As String, plage As Range, trouve As Range, PJ As String

    'Recherche de l'adresse mail du destinataire
    PJ = "P:\05-Solidworks\CAO\" & plan & "\" & plan & ".pdf"
    Set trouve = Worksheets("Ghost").Range("N4:N15").Find(what:=CA, lookat:=xlWhole, MatchCase:=False)
    If trouve Is Nothing Then
    Else
        lignemail = trouve.Row
        mail = Worksheets("Ghost").Cells(lignemail, 15)
    End If
    Set email = CreateObject("Outlook.Application")
    With email.CreateItem(olMailItem)
           .To = mail
           .Subject = client & ": Validation du plan " & plan & ": " & designation & " // " & chantier
           If Len(Dir(PJ)) > 0 Then
            .Attachments.Add PJ
           End If
           .Body = "Bonjour " & CA & "," & vbCrLf & "Merci de nous valider ce plan de " & designation & " du chantier de " & chantier & " pour le lancement en production "
           .Display
    End With
End If

End Sub

Et ci-dessous le code quand je change de selection :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

ligne = ActiveCell.Row
plan = Cells(ligne, 1)

If Not Len(plan) <> 12 Then

    longueur = Cells(ligne, 18)
    profondeur = Cells(ligne, 19)
    hauteur = Cells(ligne, 20)
    designation = Cells(ligne, 3)
    finition = Cells(ligne, 4)
    dateplan = Cells(ligne, 7)
    datelivraison = Cells(ligne, 8)
    famille = Cells(ligne, 14)

    'remplissage des informations de l'assemblage
    ComboBox1.value = Cells(ligne, 16)
    ComboBox2.value = Cells(ligne, 15)
    TextBox2.value = plan & " : " & designation
    TextBox6.value = designation
    TextBox7.value = famille
    TextBox8.value = dateplan
    TextBox9.value = datelivraison

    'ajout de la finition
    If finition <> "" Then
        TextBox1.BackColor = vbWhite
        TextBox1.value = Cells(ligne, 4)
    Else
        TextBox1.value = ""
        TextBox1.BackColor = vbRed
    End If
    'Ajout de la longueur
    If longueur <> "" Then
        TextBox4.BackColor = vbWhite
        TextBox4.value = longueur
    Else
        TextBox4.value = ""
        TextBox4.BackColor = vbRed
    End If
    'Ajout de la profondeur
    If profondeur <> "" Then
        TextBox3.BackColor = vbWhite
        TextBox3.value = profondeur
    Else
        TextBox3.value = ""
        TextBox3.BackColor = vbRed
    End If
    'Ajout de la hauteur
    If hauteur <> "" Then
        TextBox5.BackColor = vbWhite
        TextBox5.value = hauteur
    Else
        TextBox5.value = ""
        TextBox5.BackColor = vbRed
    End If
Else
    ComboBox1.value = ""
    ComboBox2.value = ""
    TextBox2.value = ""
    TextBox6.value = ""
    TextBox7.value = ""
    TextBox8.value = ""
    TextBox1.value = ""
    TextBox4.value = ""
    TextBox3.value = ""
    TextBox5.value = ""
    TextBox5.BackColor = vbWhite
    TextBox3.BackColor = vbWhite
    TextBox4.BackColor = vbWhite
    TextBox1.BackColor = vbWhite

End If
End Sub

Bonne journée.

Rechercher des sujets similaires à "combobox relation base donnees"