ManuAntibes
Messages postés
491
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
18 novembre 2021
5
1 août 2006 à 13:23
Salut
J'ai suivi ton conseil et j'ai continué a fouiller sur le net
JE suis tombé sur un tuto que j'ai remi à ma sauce.
Voici le code de ma feuille excel avec un bouton dessus
Public cnx As ADODB.Connection
Sub ConnectDB(ByRef cnx As ADODB.Connection, ByVal strPath As String)
'Définition du pilote de connexion
cnx.Provider = "Microsoft.Jet.Oledb.4.0"
'Définition de la chaîne de connexion
cnx.ConnectionString = strPath
cnx.Open
End Sub
Private Sub CommandButton1_Click() 'Ajouter un enregistrement à la table Table6_Semaine base Access
Dim strPath As String
Application.Goto Reference:="StrPath"
strPath = ActiveCell
' Nous testons si le fichier est accessible
If Len(Dir(strPath)) > 0 Then
' Déclaration de la variable de connexion
Set cnx = New ADODB.Connection
' Connexion à la base
ConnectDB cnx, strPath
Else
MsgBox "La base n'a pas pu être trouvée" & vbCrLf & _
strPath & vbCrLf & _
"n'est pas un chemin valide.", vbCritical + vbOKOnly
End If
Dim Id_Value As Integer
Dim Num_Value, Chiffre_Value, Rayon_Value, Magasin_Value As String
Num_Value = 11 'Range("A2").Value
Chiffre_Value = 266 'Range("A2").Value
Rayon_Value = 31 'Range("A2").Value
Magasin_Value = 6 'Range("A2").Value
Dim strSQL As String
Dim SelSQL As String
Dim rst As New ADODB.Recordset
'# Recherche le numero du dernier enregistrement pour ajouter 1 au dernier ID_Value
SelSQL = "SELECT Id_Sem FROM Table6_Semaine order by ID_Sem DESC " 'Tri par ordre décroissant
rst.Open SelSQL, cnx
Id_Value = rst.Fields.Item(0).Value + 1
rst.Close
'# Recherche s'il existe plusieurs enregistrement de la même date, Rayon et Magasin
SelSQL = "SELECT Id_Sem, Num_Sem, Rayon_Sem, Magasin_Sem FROM Table6_Semaine WHERE Num_Sem=" & Num_Value & " AND Rayon_Sem= " & Rayon_Value & " AND Magasin_Sem = " & Magasin_Value & " " 'Recherche les N° de rayon, N° de Magasin, N° de semaine
rst.Open SelSQL, cnx
If rst.BOF = False Then
rst.Close
aconfirmer = MsgBox("L'enregistrement est déja present dans la base de donnée." + Chr(10) + "Souhaitez vous l'écraser ?", vbYesNo) '"Enregistrement en double")
'# Recupere l'action de l'utilisateur sur la boite de dialogue OUI NON
If aconfirmer = vbYes Then
strSQL = "update Table6_Semaine( Num_Sem, Chiffre_Sem, Rayon_Sem, Magasin_Sem)values('" & Num_Value & "', '" & Chiffre_Value & "', '" & Rayon_Value & "', '" & Magasin_Value & "')"
rst.Open strSQL, cnx
End If
Else
'# s'il n'existe pas plusieurs enregistrement de la même date, Rayon et Magasin alors enregistre une new ligne
rst.Close
strSQL = "insert into Table6_Semaine(Id_Sem, Num_Sem, Chiffre_Sem, Rayon_Sem, Magasin_Sem)values('" & Id_Value & "', '" & Num_Value & "', '" & Chiffre_Value & "', '" & Rayon_Value & "', '" & Magasin_Value & "')"
rst.Open strSQL, cnx
End If
Set rst = Nothing
cnx.Close
End Sub
J'ai plusieurs problèmes dans mon code
1) Pour recupere la valeur de l'id_Valeur , je ne pense pas que ma solution soit la meilleur.
Si vous en avez de meilleur proposition je suis preneur
2) Pour l'UPDATE ca marche pas comment dois l'ecrire.
Cordialement
MANUANTIBES [:p]