Ajout de ligne pour stocker des données

Résolu
MeliAntho Messages postés 7 Date d'inscription vendredi 28 novembre 2014 Statut Membre Dernière intervention 9 décembre 2014 - Modifié par pijaku le 10/12/2014 à 09:59
 MeliAntho - 14 déc. 2014 à 22:55
Bonjour,

Dans ma feuille "Récapitulatif" j'ai un tableau ou sont stockées les données saisies par les utilisateurs sur la feuille "Identité".
Un bouton final permet de remettre à zéro les cellules ou l'utilisateur doit saisir , enregistrer le classeur et stocker les données dans la base de la feuille "Récap".
Or , à chaque fois que j'enregistre au lieu d'ajouter une ligne avec les données du nouvel utilisateurs, les données de l'utilisateur précédent s'effacent alors que je voudrais que tout reste.
Voici mon code , merci de m'aiguiller:

Sub Bouton11_Cliquer()
Dim Civilité As String
Dim Nom As String
Dim Prénom As String
Dim DDatenaissance As Date
Dim Niveauétudes As String
Dim RBG As Long
Dim PDC As Integer
Dim mensualités As Integer

Dim C As Object

Civilité = Worksheets("Identité").Range("c3").Value
Nom = Worksheets("Identité").Range("c5").Value
Prénom = Worksheets("Identité").Range("C7").Value
DDatenaissance = Worksheets("Identité").Range("C9").Value
Niveauétudes = Worksheets("Identité").Range("c11").Value
RBG = Worksheets("Identité").Range("E18").Value
PDC = Worksheets("Identité").Range("F49").Value
mensualités = Worksheets("Identité").Range("O66").Value

Set C = Worksheets("Récapitulatif").Range("B3")
'C.Select
    C.Offset(0, 0).Value = Civilité
    C.Offset(0, 1).Value = Nom
    C.Offset(0, 2).Value = Prénom
    C.Offset(0, 3).Value = DDatenaissance
    C.Offset(0, 4).Value = Niveauétudes
    C.Offset(0, 5).Value = RBG
    C.Offset(0, 6).Value = PDC
    C.Offset(0, 7).Value = mensualités
Selection.EntireRow.Insert

MsgBox (" Votre simulation a bien été prise en compte !"), vbInformation, "Merci pour votre participation"
Worksheets("Identité").Range("A57:L74").Interior.ColorIndex = 15
Worksheets("Identité").Range("C3,C5,C7,C9,C11,E9,E18").Value = none
    ActiveWorkbook.Save
    Application.Quit
End Sub

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
9 déc. 2014 à 18:05
Bonjour,
Que signifie pour toi cette ligne :
Selection.EntireRow.Insert 

?
1) Qu'as-tu sélectionné ?
2) Entirerow.insert insère ainsi une ligne au-dessus de la plage précisée, pas au-dessous.
0
Bonjour,

Je veux justement que sa insère à chaque fois une.nouvelle ligne au dessus en gardant les données de l'utilisateur précédent dans la ligne qui va donc ce décaler en dessous. Sauf que mon problème c'est que sa ne garde pas les données de l'utilisateur précédent et moi j'ai besoin d'avoir une base de données des utilisateurs.
Merci pour votre réponse
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209 > MeliAntho
9 déc. 2014 à 19:15
Merci de me dire merci, mais tu n'as pas répondu à mon point 1) !
Et la question posée en 1) est pourtant, déjà, une réponse ...
0
MeliAntho > ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018
9 déc. 2014 à 20:30
La cellule B3 Correspond à la première cellule de mon tableau vide. Les offset décalé à chaque fois d'une colonne à droite car j'ai 8 colonnes.
Que je mette le c.select ou pas sa ne fonctionne pas.
0
Sa récupère bien les valeurs de ma feuille identité mais ça ne les stock pas dans ma feuille recap
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
9 déc. 2014 à 21:41
Met la ligne
Selection.EntireRow.Insert

avant d'écrire tes données
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
9 déc. 2014 à 22:42
C'est tout simplement qu'il n'est pas sur sa feuille Récap lorsque le code est lancé ...Et sa "selection" est ailleurs
De toutes manières : ne jamais travailler à coups de Select, Activate, Selection, etc ... , mais directement avec les objets Excel ...
Préciser C, par ailleurs. C'est un Range ===>>
Ceci ne peut que fonctionner :
Dim C As Range
with Worksheets("Identité")
Civilité = .Range("c3").Value
Nom = .Range("c5").Value
Prénom = .Range("C7").Value
DDatenaissance = .Range("C9").Value
Niveauétudes = .Range("c11").Value
RBG = .Range("E18").Value
PDC = .Range("F49").Value
mensualités = .Range("O66").Value
end with
Set C = Worksheets("Récapitulatif").Range("B3")
with C
.Offset(0, 0).Value = Civilité
.Offset(0, 1).Value = Nom
.Offset(0, 2).Value = Prénom
.Offset(0, 3).Value = DDatenaissance
.Offset(0, 4).Value = Niveauétudes
.Offset(0, 5).Value = RBG
.Offset(0, 6).Value = PDC
.Offset(0, 7).Value = mensualités
.EntireRow.Insert
end with

D'où que parte le code
A condition (bien évidemment) :
- qu'existent bien sous ces noms exacts les deux feuilles en cause
- que les valeurs à recopier soient bien dans les cellules précisées
- que la feuille de destination ne soit pas protégée
Et (je le redis) que c'est bien au-dessus de la 3ème ligne que l'on veut insérer une ligne ...

0
Merci cela fonctionne.

Bonne continuation
0
Rejoignez-nous