Manipuler les données Access depuis Excel
Bonjour.
J'ai le plaisir de vous présenter ce tutoriel :
Dans cet article vous allez apprendre à manipuler avec le VBA Excel les données des bases Access avec la technologie ADODB. Des exemples vous permettront de comprendre le fonctionnement de cette technologie ainsi que les fonctions présentées, qui couvrent une large gamme de besoins
Vous pouvez apporter vos avis dans cette discussion.
Bonne lecture.;)
Enr_Info : Rechercher une valeur si elle existe
Bonjour,
Tout d'abord un grand merci pour ce tuto !!!! Une aide bien précieuse pour moi qui n'est pas un novice, mais non plus un expert de VBA.
Je souhaite faire une vérification dans un champ si une référence existe :
Dans le champ OF, j'ai 400 lignes avec des références uniques.
J'ai placé dans Option Explicit :
Code:
1 2
| Public OF_NUMBER As Long
Public ID_USI60 As Long |
Puis
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
| Sub VERIF_OF_USI60()
'On réinitialise Result_Enr_Info
Result_Enr_Info = 0
' Ouvre une connexion:
If ADO.Cnn_Initialise(Cnn1, "I:\070_IND\03_Fabrication\09_Muret\500 - ARCHIVES\BDD_LIEBHERR1_V1.5.accdb") = True Then
' Initialisation du traitement ADO avec transaction:
ADO.Cnn_Debut AvecTransaction
If Not ADO.Enr_Info(Cnn1, "REF_USI60_V1", "OF='" & NumOF & "'", valeur, "ID") = 0 Then
ID_USI60 = ADO.Enr_Info(Cnn1, "REF_USI60_V1", "OF='" & NumOF & "'", valeur, "ID")
Else
MsgBox "Aucune donnée trouvée."
End If
'J'AI TESTE AUSSI CECI...
'ID_USI60 = ADO.Enr_Info(Cnn1, "REF_USI60_V1", "OF='" & NumOF & "'", valeur, "ID")
'If ID_USI60 = 0 Then
'MsgBox "La valeur du champ est : " & ID_USI60
'MsgBox ("Dans Verif_USI60, la valeur de ID_USI60 : " & ID_USI60)
'Else
' MsgBox "Aucune donnée trouvée."
' MsgBox ("Dans Verif_USI60, la valeur de ID_USI60 : " & ID_USI60)
'End If
'On ferme la transaction
'ADO.Cnn_Fin SansMessage
ADO.Cnn_Fin AvecMessage
End If
End Sub |
Malgré des test dans tous les sens... J'ai toujours cette erreur si, et uniquement si, l'OF n'existe pas dans mon champ OF :
Pièce jointe 665131
En fait, je n'arrive pas à trouver une solution pour que Enr_Info, si il ne trouve pas de valeur, cela ne déclenche pas d'erreur.
Sinon crée une requete sous ACCESS, puis en VBA y faire appel pour voir si l'OF existe et si oui je récupére son ID.... Mais là aussi, ça dépasse mes compétences...
Merci à tous pour vos retours.
2 pièce(s) jointe(s)
Utilisation de Enr_Info avec 2 conditions
Bonjour,
Voici ma requete :
Pièce jointe 665656
J'ai crée une boucle pour rechercher une valeur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| For Boucle_Tache = 1 To NB_LIGNE_REQUETE
MsgBox ("Verif ligne : " & Boucle_Tache)
If Enr_Info(Cnn:=Cnn1, StrTableSource:="Requete_TACHES", _
SQLWhere:=("ID_TACHES=" & Boucle_Tache), _
TypeInfoEnr:=Valeur, StrNomChamp:="REF_TACHE") = 751 Then
choix = MsgBox("Une expédition a déja été effectué pour cet OF !" & Chr(10) & Chr(10) & "Voulez-vous ajouter une nouvelle expédition ?", 36, "Confirmation")
'On ne veut pas rajouter d'expédition, donc je quitte
If choix = vbNo Then
GoTo FIN_PROCEDURE
End If
If choix = vbYes Then
MsgBox "Vous avez cliqué sur Oui !", 64
End If
End If
Next Boucle_Tache |
Par contre comment faire pour lui dire de rechercher une tache 751 dans chacune des lignes dont ID_OF serait 2 (pour info mon 2 est dans une variable qui s'appelle ID_OF)
En fait dans SQLWhere:=("ID_TACHES=" & Boucle_Tache), comment rajouter "ID_OF=" & ID_OF
J'ai essaye avec And et ça marche pas
Code:
SQLWhere:=("ID_TACHES=" & Boucle_Tache And "ID_OF=" & ID_OF)
J'ai aussi tente avec ceci mais toujours en erreur :
Pièce jointe 665657
Code:
1 2 3
| If Enr_Info(Cnn:=Cnn1, StrTableSource:="Requete_TACHES", _
SQLWhere:=("ID_TACHES=" & Boucle_Tache) & ("ID_OF=" & ID_OF), _
TypeInfoEnr:=Valeur, StrNomChamp:="REF_TACHE") = 751 Then |
Mettre 2 conditions dans SQLWhere:= je cherche depuis 2 jours en vain.
Un petit tuto pour divers scénarios avec un ou plusieurs conditions sur ce travail déja remarquable serait cool :)
Merci pour votre aide !!!