Recordset.movenext probléme de ligne (excel vers Access)
Bonjour à tous,
voila j'ai un petit probléme de macro où je ne trouve pas la solution a mon probléme. Je fais quelques tests pour une futur macro pour vérifier si un enregistrement est deja présent dans la base de données Access. si je modifie les enregistrements, le movenext fonctionne correctement ( il y a une mgsbox qui demande une confirmation de update), par contre si je met "non" dans la msgbox, le movenext passe une ligne (de plus ) de l'enregistrement à chaque fois, en gros si je met non à "abc01", le movenext passe directement a "abc03" et ignore le "abc02" , c'est qui me pose probléme. Je ne suis pas très fort avec tout cela, si quelqu'un serait m'aider, ce serait super!!!! :) merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
Sub doublons()
Dim ret As Integer
Dim MonFichierAccess As Database
Dim MaTableDansAccess As DAO.Recordset
Set MonFichierAccess = OpenDatabase("T:\essaie\Nouveau dossier (2)\dossier test macro\mdb\Serial number.mdb")
Set MaTableDansAccess = MonFichierAccess.openRecordset("N° séries", dbOpenTable)
'-----------------------------------------------------------------------------------------------------------------------------------------
With MaTableDansAccess
If .RecordCount > 0 Then
.MoveFirst ' positionne le pointeur en premiere position ( en principe!)
While Not MaTableDansAccess.EOF 'on boucle jusqu'a la fin de la table
ras = MaTableDansAccess.Fields("Numéro de série") 'on attrape les identifiants de access
res = MaTableDansAccess.Fields("N° de plan WB") ' on attrape les N°de pompe
If res = "WB5000" Then 'si le N° de pompe est déja dans la DB, alors
ret = MsgBox("Voulez-vous mettre à jour le N° de série: " & ras & " ?", vbYesNo) 'on demande si on veut faire une mise à jour de la pompe
If ret = vbNo Then 'Si c'est non alors on ignore la ligne et on passe à la pompe suivante
.MoveNext '??????
Else 'sinon
MaTableDansAccess.Edit ' on ouvre la methode d'edition
MaTableDansAccess![N° de plan WB] = "WB1101" ' on remplace la donnée dans la table Access de la ligne
MaTableDansAccess.Update ' on execute l'update, elle sera à insérer dans la base de donnée ' si oui, tout est ok pour cette partie
End If
End If
On Error Resume Next
.MoveNext
Wend
Else
MsgBox "Pas d'enregistrement trouvé"
End If
End With
End Sub |