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

Excel Discussion :

Insérer chaque ligne d'un tableau dans une base de données


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur travaux
    Inscrit en
    Juin 2021
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur travaux

    Informations forums :
    Inscription : Juin 2021
    Messages : 22
    Par défaut Insérer chaque ligne d'un tableau dans une base de données
    Bonjour,

    J'ai deux fichiers Excel: un qui contient un tableau à remplir par l'utilisateur et un avec sa base de données.

    Je souhaiterai que l'ensemble des lignes de mon tableau s'insère dans ma base de données lorsque on appuie sur un bouton.
    Exemple avec la première ligne:
    Mon tableau contient plusieurs lignes avec plusieurs matériaux et quantités (qui vont changer selon le projet) à remplir par l'utilisateur, exemple:
    Nom : dvi.PNG
Affichages : 269
Taille : 7,6 Ko

    Et je souhaiterai que ma base de données contiennent toutes les lignes de ce tableau avec toutes les quantités des projets insérés, ma base donnée:
    Nom : efrt.PNG
Affichages : 252
Taille : 7,6 Ko

    J'ai testé un code VBA mais cela va être compliqué à réaliser si je dois écrire cela pour les 250 lignes (car 250 initulés d'ouvrage différents) de mon tableau... Il faudrait sans doute faire une boucle, mais je m'y connais pas du tout en codage VBA...

    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
    Sub Enregistrement_Quantité_Etat_Navette()
    '
    ' Etat_Navette Macro
    '
    Dim Chemin As String, ChampDest As Integer, ChampDest1 As Integer
    Dim Nomprojet, Lieu, Région, Début_trx, Fin_trx As String
    Dim Ouvrage, Unité, Q_existant, Q_projet, Potentiel, Q_possible, Q_restant As String
    Dim Chrono_FOD As Double
     
    Nomprojet = Sheets("Quantités").Range("D1").Value
    'Chrono_FOD = Range("K3").Value
    Lieu = Sheets("Quantités").Range("D2").Value
    Début_trx = Sheets("Quantités").Range("D3").Value
    Fin_trx = Sheets("Quantités").Range("D4").Value
     
    Ouvrage = Sheets("Quantités").Range("Initiulé1").ListObject.ListRows
     
     
     
     
    Chemin = "C:\Users\Documents\Economie\Outil EC\Lien dossier\Etat navette.xlsm"
     
        'Ouvre l'état navette si ce n'est pas le cas
        On Error Resume Next
        Workbooks("Etat navette.xlsm").Sheets("BDD_métré").Activate
        If Err Then Err.Clear: Workbooks.Open Filename:=Chemin
     
        'Accès à la dernière ligne libre de l'état navette
        ChampDest = ActiveWorkbook.Sheets("BDD_métré").Range("B" & Rows.Count).End(xlUp).Row + 1
     
     
        Range("A" & ChampDest).Value = Début_trx
        Range("B" & ChampDest).Value = Fin_trx
        Range("C" & ChampDest).Value = Lieu
        Range("D" & ChampDest).Value = Nomprojet
        Range("E" & ChampDest).ListObject.ListRows = Ouvrage
     
     
    End Sub
    Merci pour votre précieuse aide, j'en ai vraiment besoin!
    Bonne journée à tous!

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 415
    Par défaut
    Bonjour,

    Word = traitement de textes, Excel = feuille de calculs, Access = base de données.
    J'ai l'impression que vous êtes mal parti à vouloir utiliser Excel comme base de données. Access est fait pour cela, Excel pas vraiment.

    Dans votre code, vous copiez 5 éléments disposés en colonne (D1 à D5) pour les placer ensuite sur une ligne, mais sur vos images cela n'apparait pas (on ne voit pas les n° de lignes et de colonnes). Pour moi, pas possible de comprendre ce que vous cherchez à faire.

    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur travaux
    Inscrit en
    Juin 2021
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur travaux

    Informations forums :
    Inscription : Juin 2021
    Messages : 22
    Par défaut
    Bonjour,
    Merci pour votre réponse.

    Je souhaite copier/coller les éléments du tableau dans une autre feuille et que cela d’incrémente à chaque fois qu'on appuie sur un bouton dans la feuille


    J'ai essayé ce code mais il ne marche pas, une personne plus expérimentée aurait-elle une solution?

    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
    Sub Macopie()
        Dim shS As Worksheet 'Source
        Dim shD As Worksheet 'destination
        Dim rCh As Range ' Nom a chercher
        Dim iDest As Integer 'Ligne de destination dans feuille
        Dim Chemin As String
     
        Chemin = "C:\Users\Documents\Economie\Outil EC\Lien dossier\Etat navette.xlsm"
        Workbooks("Etat navette.xlsm").Sheets("Recherche_quantité").Activate
            'Accès à la dernière ligne libre de l'état navette
        ChampDest = ActiveWorkbook.Sheets("Recherche_quantité").Range("B" & Rows.Count).End(xlUp).Row + 1
     
     
     
        Set shS = ThisWorkbook.Worksheets("Quantité") ' Feuille source
        Set shD = ActiveWorkbook.Sheets("Recherche_quantité") ' Feuille destination
        Set rCh = shS.Range("A8") ' Cellule contenant le nom à chercher
        On Error Resume Next 'Pour éviter les messages d'erreur sur recherche infructueuse
        iDest = Application.WorksheetFunction.Match(rCh, shD.Range("A:A"), 0)
        On Error GoTo 0
        If iDest = 0 Then 'Cas ou pas trouvé on rajoute une ligne
            iDest = shD.Range("A65535").End(xlUp).Row + 1
        End If
        shS.Range("A3:D3").Copy shD.Cells(iDest, "A")
    End Sub

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/11/2017, 16h22
  2. Sauvegarde de tableau dans une base de données
    Par lilp1 dans le forum MySQL
    Réponses: 3
    Dernier message: 30/11/2010, 10h18
  3. Réponses: 0
    Dernier message: 23/07/2009, 09h37
  4. Stocker un tableau dans une base de données
    Par rambc dans le forum Général Python
    Réponses: 7
    Dernier message: 23/12/2008, 21h16
  5. [MCD]Tableau dans une base de données
    Par gollunk dans le forum Schéma
    Réponses: 9
    Dernier message: 29/10/2008, 10h20

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