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 63 64 65 66 67 68 69 70 71 72
| Option Explicit
'Procédure permettant de récupérer toutes les données pour le transfert dans le fichier base
Sub Recup_Donnees()
Dim Demandeur As String, Service As String, Projet As String
Dim Date_Enregistrement As Date
Dim c As Range
With Sheets("Formulaire")
Demandeur = .Range("C4").Value
Service = .Range("C5").Value
Date_Enregistrement = .Range("C7").Value
Projet = .Range("C6").Value
For Each c In .Range("Reference")
If c.Value <> "" Then Call Enregistremen_Base(Date_Enregistrement, Demandeur, Service, Projet, Recup_Analyse(c.Row))
Next c
End With
End Sub
Function Recup_Analyse(ByVal Lig As Long) As String
Dim c As Range
Dim Tablo() As String
Dim Res As String
With Sheets("Formulaire")
ReDim Tablo(1 To 10)
For Each c In .Range("D" & Lig & ": M" & Lig)
If c.Value = "O" Then Tablo(c.Column - 3) = .Cells(4, c.Column) '-3 on commence en colonne D=4
Next c
End With
Res = Join(Tablo, "','")
'ICI ON PEUT FAIRE AUTREMENT POUR N'AVOIR QUE LES RESULTATS NON VIDES
Recup_Analyse = Res
End Function
'Procédure permettant de faire l'enregistrement des différentes données dans le fichhier base
Sub Enregistremen_Base(ByVal DteEnrg As Date, ByVal Dem As String, ByVal Serv As String, ByVal Proj As String, ByVal Analys As String)
Dim Cn As New ADODB.Connection
Dim Rst As ADODB.Recordset
Dim Fichier As String, Feuille As String, strSQL As String
Dim NumEnrg As Long
'Définit le classeur fermé servant de base de données
Fichier = "P:\commun\Techniciens\F.ROLLIN\divers\Proj_DA\Base_Donnees_DA.xls"
'Nom de la feuille dans le classeur fermé
Feuille = "Base"
'--- Connexion ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
'-----------------
'Définit la requête permettant de récupérer le dernier numéro d'enregistrement
strSQL = "SELECT Max([NumEnrg]) FROM [" & Feuille & "$]"
Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(strSQL)
NumEnrg = Rst(0) + 1
'--------------------------------------------------------
'Définit la requête permettant d'écrire toutes les données.
strSQL = "INSERT INTO [" & Feuille & "$] " & "VALUES (" & "'" & NumEnrg & "', " & "'" & DteEnrg & "', " & "'" & Dem & "', " & "'" & Serv & "'," & "'" & Proj & "'," & "'" & Analys & "')"
Cn.Execute strSQL
'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing
End Sub |
Partager