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 :

Insérer des lignes dans une nouvelle table en fonction d'une tranche de numéro [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 96
    Points : 47
    Points
    47
    Par défaut Insérer des lignes dans une nouvelle table en fonction d'une tranche de numéro
    Bonjour chers membres,

    J'ai un besoin assez particulier concernant une table que je qualifierai d'origine.
    Chaque ligne de donnée dispose d'une tranche de numéro avec une valeur mini et une valeur maxi. Exemple, une valeur mini 01 et maxi 05 sous entend qu'on attend également les valeurs 02, 03 et 04.
    Or, j'aimerai trouver un programme permettant d'insérer de nouvelles lignes dans une nouvelle table recopiant à l'identique les valeur de la table d'origine en tenant compte des tranches numéro: en reprenant mon précédent exemple, il faudrait insérer 3 nouvelles lignes pour les valeurs 02, 03 et 04.
    J'ai conscience que cette explication texte n'est pas très ... comment dire ... clair .. j'ai donc attaché un exemple qui, je l'espère, sera plus "parlant".

    Merci pour votre aide car je ne vois pas par où commencer.

    David
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Je propose cette routine :

    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
    Option Compare Database
    Option Explicit
     
     
    Public Sub BoucheTrous()
     Dim rst As Recordset
     Dim i As Integer
     Dim sSql As String
     DoCmd.SetWarnings False
     'Purger aAjouter et Resultat
     DoCmd.RunSQL "DELETE colonne1 FROM Resultat;"
     
     Set rst = CurrentDb.OpenRecordset("laTable")
     Do Until rst.EOF
       For i = rst("From") + 1 To rst("To")
         sSql = "INSERT INTO Resultat ( colonne1, colonne2, colonne3, [From], [To] ) " _
                   & "SELECT """ & rst("colonne1") & """ AS Expr1, """ _
                                & rst("colonne2") & """ AS Expr2, """ _
                                 & rst("colonne3") & """ AS Expr3, """ _
                                  & Format(i, "00") & """ AS Expr4, """ _
                                   & rst("To") & """ AS Expr5;"
     
         DoCmd.RunSQL sSql
       Next i
       rst.MoveNext
     Loop
       'Ajouter l'original
     
        sSql = "INSERT INTO Resultat ( colonne1, colonne2, colonne3, [From], [To] ) " _
                 & "SELECT [LaTable].[colonne1], [LaTable].[colonne2], [LaTable].[colonne3], " _
                                                & "[LaTable].[From], [LaTable].[To] " _
                 & "FROM LaTable;"
     
       DoCmd.RunSQL sSql
     DoCmd.SetWarnings True
    End Sub




    La db est ici : http://claudeleloup.developpez.com/&...27Dagada75.mdb
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 96
    Points : 47
    Points
    47
    Par défaut
    Merci pour ta contribution ClaudeLELOUP !!

    Cela répond à mon besoin. Néanmoins, ma table d'origine n'est pas si "clean" que ça ... je viens de me rendre compte des problèmes suivants lors de l’exécution de ta routine:
    1) Problème de format. Je me suis rendu compte que les champs 'from' et 'to' de ma table d'origine étaient déclarés comme TEXTE et non en numérique. J'ai donc changé le format de ces champs
    2) Les champs 'from' et 'to' contiennent des données alpha numériques ... lol ... bon, la conversion en champ NUMERIQUE a de facto supprimé les valeurs contenant du Texte (ce n'est pas un soucis, je corrigerai à la mano)
    3) Les valeurs numériques restantes ont le problème suivant: le champ 'from' (ou 'to') peut aussi bien contenir une valeur '01' comme '0001' ou '1000' .... La conversion en format numérique fait qu'automatiquement le '01' d'origine devient un '1', tout comme un '0001' devient '1' ... par contre le '1000' reste '1000'. La bonne nouvelle est que ton programme réagit bien en créant les numéros '1001', '1002' .... Je dois juste trouver une astuce pour que ma valeur '1' redevienne celle d'origine à savoir '01'?

    En tout cas tu as résolu mon soucis principal ! Encore merci.
    Dagada75

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

Discussions similaires

  1. Insérer des lignes dans une table
    Par kouki2011 dans le forum SQL
    Réponses: 2
    Dernier message: 28/04/2011, 18h22
  2. Insérer des lignes dans une matrice
    Par you_go dans le forum Fortran
    Réponses: 2
    Dernier message: 21/08/2009, 12h10
  3. Insérer des lignes dans une table efficacement
    Par newbie82 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/07/2007, 17h01
  4. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  5. Insérer des lignes dans une StringGrid
    Par da_latifa dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/09/2005, 12h45

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