Ajouter des données en dernière ligne
Bonjour à tous,
Je cherche à réaliser une base de données simple de contacts. Comme beaucoup vous me direz
J'ai réalisé un premier formulaire de saisie me permettant de créer les lignes contact dans un tableau. J'y ai placé plusieurs boutons de commande :
Ajouter le contact / Afficher la base de données / Rechercher / Réinitialiser la fiche
Lorsque je saisis puis souhaite ajouter le 1er contact, il s'inscrit bien dans la ligne 11 comme voulu. Seulement lorsque je souhaite en enregistrer un second, celui-ci vient prendre la place du premier au lieu de venir se positionner sur la ligne du dessous (12) et ainsi de suite.
J'ai cru pourtant bien donner les instructions comme suit:
Private Sub btnAjouterContact_Click()
Sheets("pige").Activate 'Demande d'activation de la feuille "Pige"
Range("c1").Select 'Position sur la cellule C1
Selection.End(xlDown).Select 'Position sur la dernière cellule non vide de la colonne (ici la colonne "c")
ActiveCell.Offset(1, 0).Select 'Décalage d'une ligne vers le bas
ActiveCell = cboÉtatduContact.Value
ActiveCell.Offset(o, 1).Value = txtPrénom
ActiveCell.Offset(o, 2).Value = txtNom
ActiveCell.Offset(o, 3).Value = txtTéléphone1
ActiveCell.Offset(o, 4).Value = TxtTéléphone2
ActiveCell.Offset(o, 5).Value = txtMail
ActiveCell.Offset(o, 6).Value = txtMail2
ActiveCell.Offset(o, 7).Value = txtNuméroRueProprio
ActiveCell.Offset(o, 8).Value = txtRueProprio
ActiveCell.Offset(o, 9).Value = txtComplément
ActiveCell.Offset(o, 10).Value = txtCP
ActiveCell.Offset(o, 11).Value = txtVilleProprio
ActiveCell.Offset(o, 12).Value = txtCirconstanceContact
ActiveCell.Offset(o, 13).Value = cboOrigine
ActiveCell.Offset(o, 14).Value = txtNuméroRue
ActiveCell.Offset(o, 15).Value = txtRueImmeuble
ActiveCell.Offset(o, 16).Value = cboSecteurs
ActiveCell.Offset(o, 17).Value = cboVilleImmeuble
ActiveCell.Offset(o, 18).Value = cboCatégorie
ActiveCell.Offset(o, 19).Value = cboTypologie
ActiveCell.Offset(o, 20).Value = cboNbdeLots
ActiveCell.Offset(o, 21).Value = cboNbPk
ActiveCell.Offset(o, 22).Value = cboTypedePk
ActiveCell.Offset(o, 23).Value = TxtSurface
ActiveCell.Offset(o, 24).Value = cboEtatGénéralduBien
ActiveCell.Offset(o, 25).Value = txtPrixEstimé
ActiveCell.Offset(o, 26).Value = cboStatutduBien
ActiveCell.Offset(o, 27).Value = txtPrixVendu
ActiveCell.Offset(o, 28).Value = txtDateStep1
ActiveCell.Offset(o, 29).Value = txtDétailsRDVStep1
ActiveCell.Offset(o, 30).Value = cboRésultatStep1
ActiveCell.Offset(o, 31).Value = txtDateStep2
ActiveCell.Offset(o, 32).Value = txtDétailsRDVStep2
ActiveCell.Offset(o, 33).Value = cboRésultatStep2
ActiveCell.Offset(o, 34).Value = txtDateStep3
ActiveCell.Offset(o, 35).Value = txtDétailsRDVStep3
ActiveCell.Offset(o, 36).Value = cboRésultatStep3
ActiveCell.Offset(o, 37).Value = txtDateStep4
ActiveCell.Offset(o, 38).Value = txtDétailsRDVStep4
ActiveCell.Offset(o, 39).Value = cboRésultatStep4
ActiveCell.Offset(o, 40).Value = txtDateStep5
ActiveCell.Offset(o, 41).Value = txtDétailsRDVStep5
ActiveCell.Offset(o, 42).Value = cboRésultatStep5
ActiveCell.Offset(o, 43).Value = txtDateStep6
ActiveCell.Offset(o, 44).Value = txtDétailsRDVStep6
ActiveCell.Offset(o, 45).Value = cboRésultatStep6
ActiveCell.Offset(o, 46).Value = txtDateStep7
ActiveCell.Offset(o, 47).Value = txtDétailsRDVStep7
ActiveCell.Offset(o, 48).Value = cboRésultatStep7
End Sub
Pourriez-vous m'éclairer sur mon oubli ou carrément j'ai peut-être fait fausse route. Je vous met le fichier en pièce jointe pour aider.
Merci pour votre soutien et votre aide.
Je suis dessus depuis quelques temps maintenant (jours) en ayant essayé différentes choses et j'avoue que j'en perds mon latin..
Merci pour votre retour et votre solidarité avec un petit scarabée du vba.
A très vite!
Bonjour,
tu dois commencer par trouver la dernière cellule occupée en "C"
Private Sub btnAjouterContact_Click()
Dim Lastr&
Sheets("pige").Activate 'Demande d'activation de la feuille "Pige"
Lastr = Sheets("pige").Cells.Find("*", [C1], SearchDirection:=xlPrevious).Row +1
'Range("c1").Select 'Position sur la cellule C1
'Selection.End(xlDown).Select 'Position sur la dernière cellule non vide de la colonne (ici la colonne "c")
'ActiveCell.Offset(1, 0).Select 'Décalage d'une ligne vers le bas
'ActiveCell = cboÉtatduContact.Value
Cells(Lastr , 3) = cboÉtatduContact.Value
Cells(Lastr, 4).Value = txtPrénom
Cells(Lastr, 5).Value = txtNom
Cells(Lastr, 6).Value = txtTéléphone1
etc etc...
P.
Bonjour Patrick1957,
Merci pour ton aide précieuse, cela fonctionne effectivement.
As-tu une idée d'où je peux débloquer cette option?
Merci Bcp en tout cas pour ta première réponse.
Tu as protégé ta feuille , je ne sais pas tester
P.
Voilà le fichier dévérouillé, désolé.
re,
Après avoir encodé durectement 4-5 lignes sur l'une ou l'autre colonne, j'ai enlevé (et puis remis) le "tableau" par une conversion en plage, j'ai fais "CTRL" + "*" pour voir quelle est l'étendue de la plage et "CTRL" + "." pour aller aux 4 coins et là j'ai vu qu'il y 2 colonnes inutiles.
Je les ai effacées (il y avait peut être des caractères invisibles).
J'ai alors remis un tableau par Insertion/Tableau et j'ai remis le filtre
P.
re,
Après avoir encodé durectement 4-5 lignes sur l'une ou l'autre colonne, j'ai enlevé (et puis remis) le "tableau" (étape facultaive) par une conversion en plage, j'ai fais "CTRL" + "*" pour voir quelle est l'étendue de la plage et "CTRL" + "." pour aller aux 4 coins et là j'ai vu qu'il y 2 colonnes inutiles.
Je les ai effacées (il y avait peut être des caractères invisibles).
J'ai alors remis un tableau par Insertion/Tableau et j'ai remis le filtre
et ça fonctionne ! P.
Nickel!!!!
Merci Patrick 1957!! C'est super d'avoir du soutien comme celui-ci et une belle réactivité. (je le suis un peu moins car encore en tâtonnement sur excel).
Merci encore pour ce coup de pouce je me remet en quête pour finir ce petit module. Si besoin puis-je frapper à ta porte?
Bien à toi!