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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
| Option Compare Database
Option Explicit
Public Function ImportDBF()
'importe les créances GFC au format DBF et ajoute dans la table T022_creances toutes les informations correspondantes
'Déclaration variable
Dim dialogFichier As Object
Dim nomFichier As String
Dim reqDelete, reqInsert As String
DoCmd.SetWarnings False
'Création de la boite
'1 = ouvrir , = enregistrer sous , 3 = récuperation d'un fichier
Set dialogFichier = Application.FileDialog(3)
'Ne pas autoriser la selection de plus d'un fichier
dialogFichier.AllowMultiSelect = False
'Filtrer le typede fichier autorisé
dialogFichier.Filters.Clear
dialogFichier.Filters.Add "Fichier *.DBF obtenu en cliquant sur la disquette au-dessus de la liste des créances", "*.DBF", 1
'Chemin lors de l'ouverture de la boite (là où se trouve le fichier EssatédéSCO)
dialogFichier.InitialFileName = CurrentProject.Path
'Afficher la boite
dialogFichier.Show
'Si l'utilisateur ne selectionne pas de fichier
If dialogFichier.SelectedItems.Count = 0 Then
'Affiche un message
MsgBox "Vous n'avez pas selectionné de fichier"
Else
'Supprime les espaces avant et apres le nom du fichier
nomFichier = Trim(dialogFichier.SelectedItems(1))
'Recuperer le nom du fichier sans le chemin
Dim chemin As String
Dim justFile As String
justFile = Right(nomFichier, Len(nomFichier) - InStrRev(nomFichier, "\"))
chemin = Left(nomFichier, Len(nomFichier) - Len(justFile))
On Error GoTo HuitCaracteres
DoCmd.TransferDatabase acImport, "dbase III", chemin, acTable, justFile, "T09b_GFC"
'Verser cette importation dans la table T022_creances
Dim AjoutCreances As String
AjoutCreances = " INSERT INTO T022_creances (ETSNUM, Numero_creance, Origine, Compte_classe_4,"
AjoutCreances = AjoutCreances + " Reference_facture, debiteur1, Montant_initial, Montant_net,"
AjoutCreances = AjoutCreances + " Date_emission_creance)"
AjoutCreances = AjoutCreances + " SELECT T09b_GFC.[ETABLIS], T09b_GFC.[NUMERO],"
AjoutCreances = AjoutCreances + " T09b_GFC.Origine, T09b_GFC.[COMPTE],"
AjoutCreances = AjoutCreances + " T09b_GFC.REFERENCE, T09b_GFC.[RESP],"
AjoutCreances = AjoutCreances + " T09b_GFC.[MONTANTE], T09b_GFC.[MONTANTG],"
AjoutCreances = AjoutCreances + " T09b_GFC.DATETRIM"
AjoutCreances = AjoutCreances + " FROM T09b_GFC LEFT JOIN T022_creances"
AjoutCreances = AjoutCreances + " ON T09b_GFC.NUMERO = T022_creances.Numero_creance"
AjoutCreances = AjoutCreances + " WHERE (((T022_creances.Numero_creance) Is Null))"
DoCmd.RunSQL AjoutCreances
Dim AjoutDebDDFIP As String
AjoutDebDDFIP = " INSERT INTO T033_DDFiP_Reponse_Debiteur1 (debiteur1)"
AjoutDebDDFIP = AjoutDebDDFIP + " SELECT T09b_GFC.[RESP]"
AjoutDebDDFIP = AjoutDebDDFIP + " FROM T09b_GFC LEFT JOIN T033_DDFiP_Reponse_Debiteur1"
AjoutDebDDFIP = AjoutDebDDFIP + " ON T09b_GFC.RESP = T033_DDFiP_Reponse_Debiteur1.Debiteur1"
AjoutDebDDFIP = AjoutDebDDFIP + " WHERE (((T09b_GFC.RESP) = (T033_DDFiP_Reponse_Debiteur1.Debiteur1)))"
AjoutDebDDFIP = AjoutDebDDFIP + " AND NOT EXISTS (SELECT T09b_GFC.[RESP]"
AjoutDebDDFIP = AjoutDebDDFIP + " FROM T033_DDFiP_Reponse_Debiteur1"
AjoutDebDDFIP = AjoutDebDDFIP + " WHERE T033_DDFiP_Reponse_Debiteur1 = T09b_GFC.[RESP]"
DoCmd.RunSQL AjoutDebDDFIP
Dim MajCreances As String
MajCreances = " UPDATE T022_creances INNER JOIN T09b_GFC"
MajCreances = MajCreances + " ON T022_creances.Numero_creance = T09b_GFC.NUMERO"
MajCreances = MajCreances + " SET T022_creances.ETSNUM = T09b_GFC.ETABLIS,"
MajCreances = MajCreances + " T022_creances.Origine = T09b_GFC.Origine,"
MajCreances = MajCreances + " T022_creances.Compte_classe_4 = T09b_GFC.COMPTE,"
MajCreances = MajCreances + " T022_creances.Reference_facture = T09b_GFC.REFERENCE,"
MajCreances = MajCreances + " T022_creances.debiteur1 = T09b_GFC.RESP,"
MajCreances = MajCreances + " T022_creances.Montant_initial = T09b_GFC.MONTANTE,"
MajCreances = MajCreances + " T022_creances.Montant_net = T09b_GFC.MONTANTG,"
MajCreances = MajCreances + " T022_creances.Date_emission_creance = T09b_GFC.DATETRIM"
DoCmd.RunSQL MajCreances
DoCmd.DeleteObject acTable, "T09b_GFC"
'Demander si l'on veut garder les créances récentes
If MsgBox("Voulez-vous supprimer les créances récentes ? (4112 et 4122)", vbYesNo + vbQuestion) = vbYes Then
'Supprimer les créances du 4112
Dim sup4112 As String
sup4112 = " DELETE FROM T022_creances WHERE left(Compte_classe_4, 4) = '4112' "
DoCmd.RunSQL sup4112
'Supprimer les créances du 4122
Dim sup4122 As String
sup4122 = " DELETE FROM T022_creances WHERE left(Compte_classe_4, 4) = '4122' "
DoCmd.RunSQL sup4122
Else
Call OuvrirFormulaire("F032_Consulter_creances_FP")
End If
End If
Exit Function
HuitCaracteres:
'Si on est dans Access 2013 pas la peine de palabrer on envoie les gens vers l'import Excel
If Application.Version = "15.0" Then Call ImportXLS
'Sinon ou bien l'erreur vient du nom de fichier à mettre en 8.3, ou bien c'est un Access 2016 pas à jour
If Application.Version = "16.0" Then
If MsgBox("1) Problème de fichier ouvert : fermez le fichier creances" & vbCrLf & vbCrLf & "2) Problème de nom du fichier importé : annulez et donnez un nom plus court à votre fichier DBF (maximum 8 caractères alphanumériques)" & vbCrLf & vbCrLf & "3) Problème de mise à jour de votre Access 2016, faites tourner Windows Update. Si vous êtes pressé.e, en faisant OK vous pourriez importer un fichier modifié au format Excel", vbOKCancel, "Erreur lors de l'importation - trois situations sont possibles") = vbOK Then Call ImportXLS
Else
MsgBox ("Problème de nom du fichier importé : annulez et donnez un nom plus court à votre fichier DBF (maximum 8 caractères alphanumériques)")
End If
End Function |
Partager