Base de données et formulaire

Bonjour j'ai une erreur dan ma macro et je ne sais pas comment la terminer.

voilà la macro

'procédure de remplissage de la base source

'**************************************

Private Sub btnnouveau_Click()

Sheets("source").Activate

Range("a7").Select

Selection.End(xlDown).Select

Selection.Offset(l, 0).Select

ActiveCell.Offset(0, 1).Value = txttitre

ActiveCell.Offset(0, 2).Value = txtauteur

ActiveCell.Offset(0, 3).Value = txtediteur

ActiveCell.Offset(0, 4).Value = txtgenre

ActiveCell.Offset(0, 5).Value = txttrliure

ActiveCell.Offset(0, 6).Value = txtrangement

ActiveCell.Offset(0, 7).Value = txtdatepret

ActiveCell.Offset(0, 8).Value = txtidentite

ActiveCell.Offset(0, 9).Value = txtadresse

ActiveCell.Offset(0, 10).Value = txtmail

ActiveCell.Offset(0, 11).Value = txtdateretour

ActiveCell.Offset(0, 12).Value = txtetatlivre

ActiveCell.Offset(0, 13).Value = txtnote

End Sub

le clic du bouton m"amène tout en bas de le feuille, décale d'une cellule vers la droite et inscrit le texte puis stop. ??

j'ai besoin d'aide merci

Bonjour,

as-tu un fichier exemple ?

es-tu sûr de ne pas avoir mis un L minuscule au lieu du 1

Selection.Offset(l, 0).Select

oui j'ai mis un L

merci je rectifie

j'ai mis un 1 au lieu de l mais ça ne marche pas non plus.

Merci de ton aide

Peux-tu joindre un fichier exemple simplifié ?

je n'ai pas de fichier exemple, je construis en direct.

je pense qu'il me manque une fonction "Row" mais la quelle ?

Ne te casse pas la tête je vais trouver.

bonsoir et merci

Laurent

Pour remplir une base de données, la syntaxe est la suivante (en passant les données en tableau)

' déclaration
Set tbl = ActiveSheet.ListObjects(1)

' remise à zéro
If Not tbl.DataBodyRange Is Nothing Then tbl.DataBodyRange.Delete

' ajout d'une ligne
tbl.ListRows.Add

' ajout d'une donnée dans la ligne ajoutée
tbl.DataBodyRange.Cells(tbl.ListRows.Count, 2) = "bla bla"
' ou (abc étant le titre de la colonne)
tbl.ListColumns("abc").DataBodyRange.Rows(tbl.ListRows.Count).Value = "donnée"

dans ton cas, j'écrirais alors :

Set tbl = ActiveSheet.ListObjects(1)
tbl.ListRows.Add
i = tbl.ListRows.Count
With tbl.DataBodyRange
    .Cells(i, 1).Value = txttitre
    .Cells(i, 2).Value = txtauteur
    .Cells(i, 3).Value = txtediteur
    .Cells(i, 4).Value = txtgenre
    .Cells(i, 5).Value = txttrliure
    .Cells(i, 6).Value = txtrangement
    .Cells(i, 7).Value = txtdatepret
    .Cells(i, 8).Value = txtidentite
    .Cells(i, 9).Value = txtadresse
    .Cells(i, 10).Value = txtmail
    .Cells(i, 11).Value = txtdateretour
    .Cells(i, 12).Value = txtetatlivre
    .Cells(i, 13).Value = txtnote
End With

Ok Merci Sébastien Je vais mettre ça en place

clt

Laurent

Bonjour Sebastien

je reviens vers toi j'ai du mal à assimiler les commandes vba

j'ai adapté ta macro à mon fichier mais ça me donne cette réponse

erreur d'exécution 1004

Microsoft Excel ne peut pas insérer de nouvelles cellules; car cela déplacerait des cellules non vides en dehors de la feuille de calcul. Ces cellules peuvent vous sembler vides mais elles comportent des valeurs vides, une mise en forme ou une formule. Supprimez assez de lignes ou de colonnes de manière à libérer de l'espace pour le contenu à insérer, puis réessayez.

Je suppose qu'il s'agit de m première ligne de données déjà remplie ??

Oh Maître vénéré peux tu me donner un coup de main à 73 ans j'ai les neurones qui se barrent.

Cordialement

Laurent

'**************************************

'procédure de remplissage de la base source

'**************************************

Private Sub btnnouveau_Click()

Set Source = ActiveSheet.ListObjects(1)

Source.ListRows.Add

i = Source.ListRows.Count

With tbl.DataBodyRange

Cells(i, 1).Value = txttitre

Cells(i, 2).Value = txtauteur

Cells(i, 3).Value = txtediteur

Cells(i, 4).Value = txtgenre

Cells(i, 5).Value = txttrliure

Cells(i, 6).Value = txtrangement

Cells(i, 7).Value = txtdatepret

Cells(i, 8).Value = txtidentite

Cells(i, 9).Value = txtadrese

Cells(i, 10).Value = txtmail

Cells(i, 11).Value = txtdateretour

Cells(i, 12).Value = txtetatlivre

Cells(i, 13).Value = txtnote

End With

End Sub

capture capture

Poste un fichier ce sera plus facile que des images !

Tu as mal recopié, il manque des . devant cells car cela fait parti de With tbl.DataBodyRange

Tes données sont-elles bien structurées ne tableau excel ?

voilà

3bib-cazou2019.xlsm (55.02 Ko)

Bonjour à tous

Inutile de joindre 3 fois le fichier...

J'ai

  • supprimé toutes les lignes sous le tableau et colonnes à droite
  • ajouté la colonne A au tableau : elle n'en faisait pas partie et la saisie était décalée
  • corrigé le code d'ajout
6bib-cazou2019.xlsm (34.72 Ko)

le fichier est corrompu ??

je ne peux pas l'ouvrir

capture d ecran 661

Le UserForm1 n'existe pas !

capture d ecran 662

C'est With Source.DataBodyRange

Après il y a des termes qu'il ne retrouve pas !!

Private Sub btnnouveau_Click()
Set Source = ActiveSheet.ListObjects(1)
Source.ListRows.Add
i = Source.ListRows.Count
With Source.DataBodyRange
    .Cells(i, 1).Value = txttitre
    .Cells(i, 2).Value = txtauteur
    .Cells(i, 3).Value = txtediteur
    .Cells(i, 4).Value = txtgenre
    .Cells(i, 5).Value = txttrliure
    .Cells(i, 6).Value = txtrangement
    .C.lls(i, 7).Value = txtdatepret
    .Cells(i, 8).Value = txtidentite
    .Cells(i, 9).Value = txtadrese
    .Cells(i, 10).Value = txtmail
    .Cells(i, 11).Value = txtdateretour
    .Cells(i, 12).Value = txtetatlivre
    .Cells(i, 13).Value = txtnote
End With
End Sub
5bib-cazou2019.xlsm (30.81 Ko)

Tu as aussi une autre méthode plus simple que les userform, c'est dédier un onglet pour cela.

Plus simple pour les validations de données et pour bien gérer les dates (car dans un userform ce n'est pas coton !!)

Créer un formulaire sans UserForm

https://www.excel-pratique.com/fr/telechargements/utilitaires/excel-formulaire-no438

Faciliter la saisie d'une date

https://www.excel-pratique.com/fr/telechargements/calendriers/saisie-date-excel-no458

yes j'ai vu ça mais le prof débite ses instructions à toute vitesse et pour les débutants c'est affreux

RE

le fichier est corrompu ??

je ne peux pas l'ouvrir

Si je clique sur le fichier sur le forum, il s'ouvre...

Rechercher des sujets similaires à "base donnees formulaire"