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

Résolu/Fermé
Amande42 Messages postés 25 Date d'inscription vendredi 13 novembre 2015 Statut Membre Dernière intervention 7 août 2019 - 19 nov. 2015 à 14:18
Amande42 Messages postés 25 Date d'inscription vendredi 13 novembre 2015 Statut Membre Dernière intervention 7 août 2019 - 11 déc. 2015 à 16:14
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
A voir également:

2 réponses

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
Amande42 Messages postés 25 Date d'inscription vendredi 13 novembre 2015 Statut Membre Dernière intervention 7 août 2019
24 nov. 2015 à 09:18
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
Amande42 Messages postés 25 Date d'inscription vendredi 13 novembre 2015 Statut Membre Dernière intervention 7 août 2019
9 déc. 2015 à 17:44
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
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
Amande42 Messages postés 25 Date d'inscription vendredi 13 novembre 2015 Statut Membre Dernière intervention 7 août 2019
9 déc. 2015 à 19:14
Je teste demain et je te dis.
Merci !!
0
Amande42 Messages postés 25 Date d'inscription vendredi 13 novembre 2015 Statut Membre Dernière intervention 7 août 2019
11 déc. 2015 à 16:14
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