Ajout de ligne pour stocker des données [Résolu]

Messages postés
7
Date d'inscription
vendredi 28 novembre 2014
Dernière intervention
9 décembre 2014
-
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
Afficher la suite 

Votre réponse

4 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
259
0
Merci
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.
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
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
259 > MeliAntho -
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 ...
> ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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.
Sa récupère bien les valeurs de ma feuille identité mais ça ne les stock pas dans ma feuille recap
Commenter la réponse de ucfoutu
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
16
0
Merci
Met la ligne
Selection.EntireRow.Insert

avant d'écrire tes données
Commenter la réponse de cs_MPi
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
259
0
Merci
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 ...

Commenter la réponse de ucfoutu
0
Merci
Merci cela fonctionne.

Bonne continuation
Commenter la réponse de MeliAntho

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.