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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
| Dim fDlg As Office.FileDialog, strFichier As String
Dim base As DAO.Database
Dim resultat As DAO.Recordset
Dim idm As String
' --------------------------
' Selection du fichier Excel
' --------------------------
Set fDlg = Application.FileDialog(msoFileDialogOpen)
' Définition du ou des filtres
fDlg.Filters.Clear
fDlg.Filters.Add "Fichier Excel", "*.xl*"
' Dossier de départ
fDlg.InitialFileName = USERPROFILE
' Type d'affichage
fDlg.InitialView = msoFileDialogViewList
If fDlg.Show Then
strFichier = fDlg.SelectedItems(1)
End If
Set fDlg = Nothing
' Si l'utilisateur a cliqué sur Annuler quitter la procédure
If Len(strFichier) = 0 Then Exit Sub
' --------------------------
' Ouverture du fichier Excel
' --------------------------
DoCmd.SetWarnings False
Dim xlApp As Object
Dim path As String
Set xlApp = CreateObject("Excel.Application")
'Ouverture
Set owkb = xlApp.Workbooks.Open(strFichier)
z = MsgBox("Cliquez sur OK pour ouvrir le fichier Excel, sélectionnez ensuite la plage de cellules à insérer pour les TEMPERATURES et revenez sur cette application pour valider.", vbInformation + vbOKCancel, "Ouverture du fichier Excel")
If z = vbCancel Then
Exit Sub
End If
xlApp.Visible = True
DoCmd.RunSQL "delete * from temp2" 'on vide table temp2 avant de la remplir
'insertion de la 1ere colonne de données
Y = MsgBox("Valider la sélection des cellules à insérer pour la température?", vbQuestion + vbOKCancel, "Insertion des données de températures")
If Y = vbCancel Then
xlApp.ActiveWorkbook.Saved = True
xlApp.Quit
Exit Sub
End If
owkb.Activate
owkb.ActiveSheet.Select
For Each Cell In Selection
sql1 = "INSERT INTO temp2 (a) SELECT " & Cell
DoCmd.RunSQL sql1
Next
MsgBox "Données des températures insérées!" & Chr(10) & "Cliquez sur OK pour sélectionnez maintenant les cellules concernant les données de DILATATION et revenez sur cette application pour valider", vbInformation, "Insertion de données"
xlApp.Visible = True
'insertion de la 2e colonne de données
w = MsgBox("Valider la sélection des cellules à insérer pour la dilatation?", vbQuestion + vbOKCancel, "Insertion des données de dilatation")
If w = vbCancel Then
xlApp.ActiveWorkbook.Saved = True
xlApp.Quit
Exit Sub
End If
'verification si nbre données Temp=nbre données dilatation
r1 = DLookup("comptedea", "R_cptatemp2") 'requete qui compte le nombre de données de la 1ere colonne insérée
t = Selection.Count ' compte le nombre de cellules sélectionnées dans excel pour la 2e colonne
If r1 <> t Then
MsgBox "Le nombre de données insérées pour la température ne correspond pas au nombre de données insérées pour la dilatation!" & Chr(10) & "Veuillez recommencer la saisie!", vbCritical, "erreur de saisie des données"
xlApp.ActiveWorkbook.Saved = True
xlApp.Quit
Exit Sub
End If
owkb.Activate
owkb.ActiveSheet.Select
Set base = CurrentDb()
Set resultat = base.OpenRecordset("temp2")
With resultat
For Each Cell In Selection
.Edit
.Fields("b") = Round(Cell, 3)
.Update
.MoveNext
Next
End With
resultat.Close
Set resultat = Nothing
xlApp.ActiveWorkbook.Saved = True
xlApp.Quit
DoCmd.RunCommand acCmdSave
MsgBox "Insertion des données effectuée avec succés!", vbInformation, "Insertion des données"
DoCmd.Close acForm, "dilato" |
Partager