IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Extraction d'un fichier excel [AC-2010]


Sujet :

Access

  1. #1
    Membre habitué
    Homme Profil pro
    Etudiant - Développeur
    Inscrit en
    Mai 2014
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant - Développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 119
    Points : 159
    Points
    159
    Par défaut Extraction d'un fichier excel
    Je souhaite faire une importation de fichier exel dans ma BDA.
    J'ai fait le script suivant sachant que les personnes que je rentre dans la BDD ne sont pas complet et que je vais ensuite compléter moi même.
    je souhaite savoir comment ajouter une condition pour les ajouter dans ma BDD?
    (si NomExtraction = NomBDA & PrenomExtraction= PrenomBDA alors Msg "Le participant "&NomExtraction&" "& PrenomExtraction&" existe déjà" sinon faire une requete INSERT INTO)
    et aussi savoir si le scipt que je montre ci-dessous est correct?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    '***************************************************
    Private Sub Importer_dans_Table_Participant()
    '***************************************************
    ' source   onglet:  InputWkb1.Worksheets(4)  , la récupération des données commence ici à la ligne : row 1 (ligne des entetes )
    ' Import dans table   T_ref_Domaine       
    '---------------------------------------------------
     
        Dim InputSht1 As Worksheet
        Dim Arr1() As Variant
        Dim i As Long, j As Long
        Dim LastRow As Long, LastCol As Long, strSql As String
        Dim myDb As DAO.Database
        Dim rs1 As DAO.Recordset
        Dim StatusMsg As String, varReturn As Variant, lCount As Long, strTable As String
        Dim strRegroupDefaultValue As String
     
     
        Dim TimerDeBut As Double
        TimerDeBut = Timer
     
        strTable = "Participant"
        StatusMsg = "Patientez, importation dans " & strTable & " en cours d'exécution..."
     
        'Call GetDbFullpath(strTable)  ' retourne la valeur de myDbData
        Set myDb = CurrentDb
     
        'strSql = "DELETE * FROM " & strTable 
        ' myDb.Execute strSql, dbSeeChanges
        'strSql = "ALTER TABLE " & strTable & " ALTER COLUMN  Ref_id  COUNTER (1,1)"
        ' myDb.Execute strSql, dbSeeChanges
        'strSql = "INSERT INTO Participant ()"&"Values()"
        ' myDb.Execute strSql, dbSeeChanges
     
        Set rs1 = myDb.OpenRecordset("SELECT * FROM " & strTable, dbOpenDynaset, dbSeeChanges)
     
        Set InputSht1 = InputWkb1.Worksheets(6)
     
        With InputSht1
     
            LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row-5
     
            LastCol = .UsedRange.Columns(.UsedRange.Columns.Count).Column
     
            Arr1 = .Range(.Cells(B6, G6), .Cells(LastRow, LastCol))
     
        End With
     
        i = 1
        For j = 1 To LastCol
            Debug.Print  "entête_colonne " & j  & " : " &  UCase(Arr1(1, j))
        Next j
     
        ' Colonnes de la feuille "Colonnes Import"
        ' ----------------------------------------
        '  Info nb ligXL : 45
        '    Info nb colXL : 6
        '    entête_colonne 1: 
        '    entête_colonne 2: CIVILITE
        '    entête_colonne 3: PRENOM
        '    entête_colonne 4: NOM
        '    entête_colonne 5: PAYS
        '    entête_colonne 6: TITRE
        '    entête_colonne 7: RAISON SOCIAL
     
        ' Table Participant
        ' -------------------
        ' SELECT IDParticipant, IDSociete, DateCreation, Civilite, Nom, Prenom, DateNaissance, Nationalite, Titre, Branche, GroupeListe, BadgeAmphi, ComplementAdresse, Rang, QualifRang, NbSubordonne, DateArriveeEntreprise, DateArriveeJob, TypeEtude, IDExperiencePrincipale, IDExperienceSecondaire, ExperiencePrincipale, ExperienceSecondaire, Marketing, Ventes, ProductionTechnique, RD, Informatique, ControleGestion, Finance, RH, Planning, Qualite, Autres, Langue1, QualifLangue1, Langue2, QualifLangue2, Langue3, QualifLangue3, TelephonePro, FaxPro, TelephoneMobile, EMail, password, AdressePersonnelle, TelephonePerso, TelephonePerso, VillePerso, PaysPerso, Section, Fonction, Commentaire, RaisonSociale, AdresseSociete, CodePostalSociete, VilleSociete, PaysSociete
     
        Debug.Print "i max : " & UBound(Arr1, 1)
        Debug.Print "j max : " & UBound(Arr1, 2)
     
        varReturn = SysCmd(acSysCmdInitMeter, StatusMsg, UBound(Arr1, 1))
     
        For i = 2 To UBound(Arr1, 1)
     
            DoEvents
            varReturn = SysCmd(acSysCmdUpdateMeter, i)  'Progression
     
            If IsNothing(Arr1(i, 1)) Then
                ' 2012-05-25
                'debug.print  "la ligne " & i & " est vide, donc non importée"
            Else
     
                rs1.AddNew
                For j = 1 To UBound(Arr1, 2)
                    'Debug.Print "[" & Nz(arr1(i, j), 0) & "]"
                    Select Case j
     
                    Case 2: rs1.Fields("Civilite") = Left(Trim(Nz(Arr1(i, j))), rs1.Fields("Civilite").Size)
                    Case 3: rs1.Fields("Prenom") = Left(Trim(Nz(Arr1(i, j))), rs1.Fields("Prenom").Size)
                    Case 4: rs1.Fields("Nom") = Left(Trim(Nz(Arr1(i, j))), rs1.Fields("Nom").Size)
                    Case 6: rs1.Fields("Titre") = Left(Trim(Nz(Arr1(i, j))), rs1.Fields("Titre").Size)
                    Case 7: rs1.Fields("RaisonSociale")= Left(Trim(Nz(Arr1(i, j))), rs1.Fields("RaisonSociale").Size)
     
                    End Select
                Next j
     
                rs1.Update
            End If
     
        Next i
     
       debug.print    DCount("*", strTable) & " records importés dans " & strTable
     
    Exit_0:
        varReturn = SysCmd(acSysCmdRemoveMeter)
        varReturn = SysCmd(acSysCmdClearStatus)
        Set rs1 = Nothing
        Set myDb = Nothing
        Set InputSht1 = Nothing
     
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu as 2 solution tu fais une requête de sélectio avec une close where si rs.eof=true tu fais ton insert.

    2 tu sélectonne toute ta table sans where e tu aplique un filtre sur ton rs sio aprè fiolrte ton rs.eof = true tu fais rs.adnew rs.camp1="toto" et rs.update

  3. #3
    Invité
    Invité(e)
    Par défaut Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    rs1.Filter = "[Prenom]='" &  Left(Trim(Nz(Arr1(i, j))), rs1.Fields("Prenom").Size) & "' and [Nom]='" &  Left(Trim(Nz(Arr1(i, j))), rs1.Fields("Nom").Size) & "'"
    Set RS2 = rs.OpenRecordset
    If RS2.EOF = True Then
                rs1.AddNew
                For j = 1 To UBound(Arr1, 2)
                    'Debug.Print "[" & Nz(arr1(i, j), 0) & "]"
                    Select Case j
     
                    Case 2: rs1.Fields("Civilite") = Left(Trim(Nz(Arr1(i, j))), rs1.Fields("Civilite").Size)
                    Case 3: rs1.Fields("Prenom") = Left(Trim(Nz(Arr1(i, j))), rs1.Fields("Prenom").Size)
                    Case 4: rs1.Fields("Nom") = Left(Trim(Nz(Arr1(i, j))), rs1.Fields("Nom").Size)
                    Case 6: rs1.Fields("Titre") = Left(Trim(Nz(Arr1(i, j))), rs1.Fields("Titre").Size)
                    Case 7: rs1.Fields("RaisonSociale") = Left(Trim(Nz(Arr1(i, j))), rs1.Fields("RaisonSociale").Size)
     
                    End Select
                Next j
     
                rs1.Update
            End If

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraction d'un fichier Excel Entre deux dates (Date debut et Date fin)
    Par M.sarah1988 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 22/09/2014, 16h02
  2. extraction d'un fichier excel dans une BDD SQL server
    Par saraenim dans le forum Développement
    Réponses: 4
    Dernier message: 03/10/2008, 13h58
  3. Extraction fichier Excel - Probleme avec les VbCrLf
    Par oromeyer dans le forum Modules
    Réponses: 3
    Dernier message: 16/02/2006, 19h06
  4. Script extraction de fichier excel pr conversion en mySql ?
    Par Arvulis dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 09/01/2006, 18h34
  5. Extraction de données sur des fichiers excel
    Par iupgeii dans le forum MFC
    Réponses: 3
    Dernier message: 23/01/2004, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo