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

VBA Access Discussion :

Difficulté pour la sélection du dernier enregistrement


Sujet :

VBA Access

  1. #1
    En attente de confirmation mail
    Inscrit en
    Juin 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 63
    Points : 38
    Points
    38
    Par défaut Difficulté pour la sélection du dernier enregistrement
    Bonjour à tous,


    Je suis en train de finir un projet et j'ai un problème.
    En fait, chaque semaine, on importe des données access d'un fichier excel.
    J'ai utilisé un code d'importation de ce forum et tout fonctionne à merveille.

    Par contre ma table qui est renseigné via l'importation contient les données relatives aux employés, la dernière colonne de cette table nous informe sur ID de la responsable.
    Un employé peut changer plusieurs fois de responsable etant donné que dans la table responsable ID est sous forme de numéro automatique, je voudrais qu'a l'importation on récupere le dernier numéro ID crée (donc le plus grand).
    Le problème c'est que je ne sais pas ou mettre cette requete dans le code importation.

    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
     
    Private Sub Commande8_Click()
     
    Dim Semaine As String
    Dim Mois As String
     
    questionner:
    Semaine = InputBox("Entrer la semaine à importer")
    If Len(Semaine) <> 2 Then
    GoTo questionner
    End If
    Quest:
    Mois = InputBox("Entrer la mois à importer")
    'Ici l'importation se déclenche en cliquant sur le bouton "Commande1"
    'mais on peut aussi mettre ce code à l'ouverture d'un formulaire
    Dim oApp As Excel.Application
    Dim oWkb As Excel.Workbook
    Dim oWSht As Excel.Worksheet
    Fichier = "BOvptS" & Semaine & " " & Mois & ".xls"
    If Dir("H:\animation version finale1\" & Fichier) <> vbNullString Then
    GoTo Go
    Else
    MsgBox "Fichier Inconnu... Arret de la procedure"
    Exit Sub
    End If
    Exit Sub
     
    Go:
    Set oApp = CreateObject("excel.application")
    Set oWkb = oApp.Workbooks.Open("H:\animation version finale1\" & Fichier)  'mettez ici le chemin vers votre fichier Excel
    Set oWSht = oWkb.Worksheets("Feuil1") 'mettez ici le nom de la feuille qui contient les données à importer
     
    'première ligne ou commence l'import
    i = 4
     
     
     
    'pour éviter les messages lors de l'ajout des enregistrements
    DoCmd.SetWarnings False
     
    'tant qu'on n'est pas arrivés à la ligne 600 du tableur
    While i < 1250
    'on peut aussi arrêter l'importation lorsque le programme rencontre une case
    'vide en remplaçant la ligne du While par :
     
    'While oWSht.Range("I" & i).value <> "" '(où I représente la colonne et i la ligne)
     
    'condition de remplissage de la table => eviter les doublons
    'si l'enregistrement existe déjà dans la table destination,
    'on passe à la ligne suivante sans l'importer
    'If DCount("*", "[ope]", "[nom_du_champ_destination_qui_ne_doit_pas_avoir_de_doublons] LIKE '" & oWSht.Cells(i, 9) & "'") = 0 Then
    'le numéro 9 correspond au numéro de la colonne source, tel que : A=1, B=2, C=3 ...
     
    'requète SQL (avec en paramètre la ligne i et le numéro de la colonne comme précisé au-dessus)
    If IsNumeric(oWSht.cells(i, 1).value) = True And oWSht.cells(i, 1).value <> "" Then
    cSQL = "insert into [ope] ( [oper], [Sigle], [Nom Opératrice(recap)], [Sectorisation],[Ville],[t40a],[t40s],[t99],[C4E refusees],[focos],[non4e],[ass 4e],[GAET],[nb ge pot],[nb dde gcv],[nb pot gcv],[colissimo],[pot colissimo],[ca dde],[ca sub],[ca val],[v compl],[clt],[AS PLAT],[AS GOLD],[Periode], [MOIS])" & _
    " values (" & Chr(34) & oWSht.cells(i, 1) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 2) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 3) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 4) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 5) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 7) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 8) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 9) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 10) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 11) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 12) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 13) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 14) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 15) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 16) & Chr(34) & "," & _
    "" & Chr(34) & oWSht.cells(i, 17) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 18) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 19) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 20) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 21) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 22) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 23) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 28) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 51) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 52) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 53) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 54) & Chr(34) & ");"
    End If
     
     
     
     
    'ici, on ne prend que les colonnes M (=13) et K (=11).
     
    'exécute la requète
    DoCmd.RunSQL cSQL
     
    'End If
     
    'on incrémente la variable i pour passer à la ligne suivante
    i = i + 1
     
    Wend
     
    'on réactive les messages d'erreurs
    DoCmd.SetWarnings True
    oWkb.Close
     
    End Sub

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    Salut,

    juste avant l'insertion, tu fais une requête MAX sur l'employé concerné et tu ajoute le champs dans ta requête d'insertion

Discussions similaires

  1. [AC-2003] Sélection 2 dernier enregistrement
    Par castours dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/07/2013, 11h49
  2. Sélection des derniers enregistrements de chaque jour
    Par sebastyen dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/05/2009, 12h36
  3. [MySQL] Requête pour récupérer les 5 derniers enregistrement dans l'ordre croissant
    Par Jonathan.b dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/01/2008, 09h50
  4. Réponses: 2
    Dernier message: 01/02/2007, 18h20
  5. Sélection du dernier enregistrement
    Par KibitO dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 14/06/2006, 16h39

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