access excel modifications

  • Initiateur de la discussion Initiateur de la discussion alex
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

alex

Guest
bonjour,

je me pose une question :

'comment verifier si les informations que l'on ajoute dans les différents champs n'existe pas déja?
'a savoir : que si par exemple il existe deja dans ma table de données access une ligne
'possédant les meme infomations sur la date_timbre et nom_op
'dans ce cas au lieu de creer une nouvelle ligne modifier simplement les changements


voici le code foctionnant mais en ajoutant meme si un ligne existe déja


For i = 11 To 13 'fin.Row

If IsNumeric(Range('E' & i).Value) And Range('D' & i).Value <> '' Then

'verification que la ligne n'exixte pas encore ici!??

With Rs1

.AddNew

.Fields('Client') = Range('A1').Value

.Fields('date_timbre') = Range('B' & i).Value

.Fields('nom_op') = Range('D' & i).Value

.Fields('nbre_pli_annon') = Range('E' & i).Value

.Fields('Catégorie') = Range('G' & i).Value

.Update

End With


Merci d 'avance pour votre aide
 
Bonjour le Forum, Alex,

Je te conseilel de faire une requête SQL sur le champ date_Timbre ou nom_op de ta table.

Il faut que tu selectionnes l'un des deux champs qui ne peut pas avoir de doublons. Si les deux en ont trouve un autre champs.

Ensuite si ta requête SQL t'envoie une reponse tu modifies l'enregistrement sinon tu inseres un nouveau.

Ne me demande pas comment on fait une requête SQL, sans voir la base de données et l'applications, je ne peux pas être plus précis.

Si tu ne sais pas faire de requête SQL, cherche sur le net tu trouveras pleins d'exemples.

@+

Creepy
 
bonjour Alex , bonjour Creepy

j'espere que cet exemple pourra t'aider


Sub Test()
Dim Conn As ADODB.Connection
Dim rsT As ADODB.Recordset
Dim Fichier As String, rSQL As String
Dim Cible1 As Long
Dim Cible2 As String

'termes à controler dans la base
Cible1 = 13000
Cible2 = 'Marseille'

Fichier = 'C:\\\\\\\\dataBase.mdb'

Set Conn = New ADODB.Connection
Conn.Open 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=' & _
Fichier & ';'

rSQL = 'SELECT * FROM Table1 ' & _
'WHERE PostalCode=' & Cible1 & ' AND CityName='' & Cible2 & '''

Set rsT = New ADODB.Recordset
With rsT
.ActiveConnection = Conn
.Open rSQL, , adOpenKeyset, adLockOptimistic, adCmdTableDirect
End With

If rsT.RecordCount = 0 Then
With rsT
.AddNew
.Fields(0) = 555555
.Fields(1).Value = 555
.Fields(2) = 'xldCity'
.Fields(3) = 9
.Fields(4) = 'Xld'
.Update
End With

Else
With rsT
.Fields(0) = 555555
.Fields(1).Value = 555
.Fields(2) = 'xldCity'
.Fields(3) = 9
.Fields(4) = 'Xld'
.Update
End With
End If

rsT.Close
Conn.Close
End Sub




bonne soiree
MichelXld
 
re BONJOUR

je rencontre encore qq difficulté je ne vois pas trop comment fonctionne la modification en supprimant seulment le addnew
??
et surtout comment faire fonctionnoner la requete SQL (le rs1.OpenRecordset rSQL.. ne fonctionne pas...!)
Merci d 'avance

Cible1 = 19 / 10 / 2005 'Range('B' & i).Value
Cible2 = Range('D' & i).Value




rSQL = 'SELECT * FROM Prévisions_tri ' & _
'WHERE date_timbre=' & Cible1 & ' AND nom_op='' & Cible2 & '''



If Rs1.RecordCount = 0 Then
MsgBox ('add')
With Rs1
.AddNew
.Fields('Client') = Range('A1').Value
.Fields('date_timbre') = Range('B' & i).Value
.Fields('nom_op') = Range('D' & i).Value
.Fields('nbre_pli_annon') = Range('E' & i).Value
.Fields('Catégorie') = Range('G' & i).Value
.Update
End With

Else
MsgBox ('modif')
With Rs1

.Fields('Client') = Range('A1').Value
.Fields('date_timbre') = Range('B' & i).Value
.Fields('nom_op') = Range('D' & i).Value
.Fields('nbre_pli_annon') = Range('E' & i).Value
.Fields('Catégorie') = Range('G' & i).Value
.Update
End With
End If

End If
Next
Rs1.Close
 
Bonjour lex, Michel, Creepy

IL te faut activer 'microsoft activeX data objet 2.x library' dand VBE_outils_référence pour Fonctionner

Pour compléter la réponse de Creepy tu as des exemples d'utilisation de SQL dans ce post
Ce lien n'existe plus

et également dans Wiki de MichelXLD (bandeau à gauche de l'écran)

A+
Michel_M
 
Merci pour ta reponse michel
j'ai essayer de prendre l'exemple du post que tu m'a consseillé
mais j'obtient tjrs une Erreur Automation



Sub controleValeurTable()
Dim Conn As ADODB.Connection
Dim rsT As ADODB.Recordset
Dim Fichier As String, rSQL As String
Dim Valeur As Integer

Fichier = ThisWorkbook.Path & '\\EquiGest.mdb'

'Valeur = InputBox('Saisir le numero à rechercher dans la table')

'termes à controler dans la base

Cible1 = 24 / 3 / 2005 'Range('B' & i).Value
Cible2 = 'mkg' 'Range('D' & i).Value







Set Conn = New ADODB.Connection
Conn.Open 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=' & _
Fichier & ';'



rSQL = 'SELECT * FROM Prévisions_tri ' & _
'WHERE date_timbre=' & Cible1 & ' AND nom_op='' & Cible2 & '''


Set rsT = New ADODB.Recordset

With rsT
.ActiveConnection = Conn
.Open rSQL, , adOpenStatic, adLockOptimistic, adCmdText
End With
MsgBox ('test')


If rsT.EOF Then
MsgBox 'Le numéro ' & Cible1 & Cible2 & ' n'existe pas dans la table . '
Else
MsgBox 'Le numéro ' & Cible1 & Cible2 & ' existe la table . '
End If

rsT.Close
Conn.Close
End Sub


Aprés tes je mappercoi que l'erreur vien de rsT.open rSQL...
pourtant j'ai bien ajouter la reference

Je ne comprend plus

Merci d'avance
 
michel désolé de t'embéter encore un fois mais ca ne fonctionne toujours pas
enfin ca ne différencie pas si les cible sont ou non dans la base

je pense que c'est du a la requete
rSQL = 'SELECT * FROM Prévisions_tri WHERE date_timbre=' & Cible1 & ' AND nom_op='' & Cible2 & '''
mais certainement la cible2
car quand je fais un msgbox de rSQL, la date est bien noté mais pas ma seconde cible

Cible1 = '11/08/2005'
Cible2 = 'xxx'

jespére etre assez clair dans mes pb
merci
 
bonsoir Alex

je viens de refaire des essais et ça fonctionne chez moi
quels sont les types de données des variables Cible1 et Cible2 (Texte , numerique , Date ...) dans la base Access ?

as tu adapté les variables en conséquence

Dim Cible1 As ....
Dim Cible2 As ....

de plus pour les recherches sur les dates , il faut adapter la requete en format anglais (du style mm/dd/yyyy)



bonne journée
MichelXld

Message édité par: michelxld, à: 11/10/2005 22:26
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
754
Réponses
2
Affichages
1 K
Réponses
6
Affichages
737
Réponses
12
Affichages
753
B
  • Question Question
Réponses
3
Affichages
1 K
Réponses
3
Affichages
1 K
Retour