Transfert de données saisies dans une BDD via un bouton

Résolu
Amande42 Messages postés 26 Statut Membre -  
Amande42 Messages postés 26 Statut Membre -
Bonjour aux professionnels d'Excel :-)

J'avance dans mon fichier-outil mais sans votre aide, j'en serais encore à ma première feuille.

Voici mon problème du jour :
Sur une feuille 1, j'ai différents types de données : des données générales (nom de la mission, date, entité...) fournies en automatique à partir d'une recherche de l'utilisateur, et des données que doit saisir l'utilisateur et qui représentent en général de nombreuses lignes et colonnes. A noter que les données générales sont valables pour chaque ligne renseignée par l'utilisateur.

Ce que je cherche à faire :
Lorsqu'on clique sur un bouton (ce qui signifie programmation VBA, ce qui est impossible à mon petit niveau en partant de rien), les données saisies se copient directement dans une BDD (déjà renseignée en partie) et devant chaque ligne, les données générales devront apparaître autant de fois qu'il y a de lignes.

Je sais que mes explications sont loin d'être limpides, donc pour vous aider, je vous transmets un fichier modèle.

http://www.cjoint.com/c/EKtnrpaqU5n

D'avance un grand merci pour votre aide !!!
Bonne après-midi à tous

Amande42

2 réponses

  1. Maurice
     
    Bonjour
    si j'ais bien compris
    retour de ton fichier
    a modifier les colonne car je voie pas ou il vont

    http://www.cjoint.com/c/EKtq4fIybae

    A+
    Maurice
    0
    1. Amande42 Messages postés 26 Statut Membre
       
      Bonjour Maurice,
      Merci pour ta réponse et ton fichier.
      Je regarde ça, j'adapte et je reviens vers toi pour te donner le résultat.
      Bonne journée,
      Amande42
      0
    2. Amande42 Messages postés 26 Statut Membre
       
      Bonjour Maurice,

      Désolée pour la réponse qui s'est fait attendre.
      J'ai profité de ce temps pour m'améliorer (grandement) en Excel en potassant tout ce que j'ai pu trouver sur le net comme cours. J'espère ainsi moins vous embêter sur des broutilles.

      J'ai donc adapter ton code à mon fichier et le résultat obtenu est ce que j'attendais.
      MAIS (il en faut tjs un), ma macro est très très longue !
      J'ai essayé plusieurs techniques pour l'accélérer et rien n'y fait. J'ai supprimé toutes mes autres macros.
      Je suis repartie d'un fichier vierge de code et je n'ai tapé que la macro qui me pose problème.
      J'ai essayé de désactiver le ScreenUpdating.
      Sans résultat.
      Pour info, il est indiqué dans la barre de progression "2 processeurs".

      Voici la macro que j'ai tapée.



      Private Sub Transfert()

      Application.ScreenUpdating = False

      'BOUCLE POUR TRANSFERER LES DONNEES DANS BDD COMPLETE
      Dim Deb As Integer
      Deb = 23

      With Feuil1

      Nlig = .Cells(Rows.Count, 2).End(xlUp).Row + 1

      For L = Deb To Cells(Rows.Count, 2).End(xlUp).Row
      'RECOS ET PA
      .Range("F" & Nlig).Value = Range("C" & L).Value
      .Range("G" & Nlig).Value = Range("B" & L).Value
      .Range("H" & Nlig).Value = Range("E" & L).Value
      .Range("I" & Nlig).Value = Range("F" & L).Value
      .Range("J" & Nlig).Value = Range("G" & L).Value
      .Range("K" & Nlig).Value = Range("J" & L).Value
      .Range("L" & Nlig).Value = Range("I" & L).Value

      'DONNEES GENERALES DE LA MISSION
      .Range("A" & Nlig).Value = Range("D8").Value
      .Range("B" & Nlig).Value = Range("G8").Value
      .Range("C" & Nlig).Value = Range("G10").Value
      .Range("D" & Nlig).Value = Range("D10").Value
      .Range("E" & Nlig).Value = Range("D6").Value

      Nlig = Nlig + 1
      Next
      End With

      Application.ScreenUpdating = True

      'EFFACER LES DONNEES SAISIES DANS FEUIL6
      Range("B" & Deb & ":J" & Cells(Rows.Count, 2).End(xlUp).Row).ClearContents
      MsgBox "Terminé."

      End Sub


      Je ne sais plus quoi faire !!!

      D'avance un grand merci pour toute l'aide que tu pourras m'apporter !

      Amande42
      0
  2. Maurice
     
    Bonjour
    je ne ses pas faire plus
    Private Sub Transfert()
    Dim Deb As Integer
    Deb = 23
       With Application
           .ScreenUpdating = False
           .EnableEvents = False
           .Calculation = xlManual
       End With
    'BOUCLE POUR TRANSFERER LES DONNEES DANS BDD COMPLETE
        With Feuil1
            Nlig = .Cells(Rows.Count, 2).End(xlUp).Row + 1
                For L = Deb To Cells(Rows.Count, 2).End(xlUp).Row
                    'RECOS ET PA
                    .Range("F" & Nlig).Value = Range("C" & L).Value
                    .Range("G" & Nlig).Value = Range("B" & L).Value
                    .Range("H" & Nlig).Value = Range("E" & L).Value
                    .Range("I" & Nlig).Value = Range("F" & L).Value
                    .Range("J" & Nlig).Value = Range("G" & L).Value
                    .Range("K" & Nlig).Value = Range("J" & L).Value
                    .Range("L" & Nlig).Value = Range("I" & L).Value
                    'DONNEES GENERALES DE LA MISSION
                    .Range("A" & Nlig).Value = Range("D8").Value
                    .Range("B" & Nlig).Value = Range("G8").Value
                    .Range("C" & Nlig).Value = Range("G10").Value
                    .Range("D" & Nlig).Value = Range("D10").Value
                    .Range("E" & Nlig).Value = Range("D6").Value
                    Nlig = Nlig + 1
                Next
        End With
    'EFFACER LES DONNEES SAISIES DANS FEUIL6
          Range("B" & Deb & ":J" & Cells(Rows.Count, 2).End(xlUp).Row).ClearContents
       With Application
           .ScreenUpdating = True
           .EnableEvents = True
           .Calculation = xlAutomatic
       End With
    MsgBox "Terminé."
    End Sub
    

    A+
    Maurice
    0
    1. Amande42 Messages postés 26 Statut Membre
       
      Je teste demain et je te dis.
      Merci !!
      0
    2. Amande42 Messages postés 26 Statut Membre
       
      Bonjour Maurice,

      Donc verdict : malheureusement, ma macro est toujours aussi longue à l'exécution... :-(
      Mais du coup, je considère quand même que mon sujet est résolu car le résultat est là.
      Encore merci à toi.
      J'ouvrirai une autre question pour la lenteur de mon code.

      Encore merci.
      Bonne soirée.
      0