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 !!!