VBA : Enregistrement de données à suivre dans une base

Résolu/Fermé
xi9800 - 8 janv. 2013 à 16:12
 xi9800 - 8 janv. 2013 à 22:22
Bonjour,

Ayant cherché, mais n'ayant pas trouvé de discussion similaire (ou alors je mis prends mal), je poste mon soucis.

Je suis actuellement entrain de créer un formulaire avec un bouton d'enregistrement qui permet aux données d'être sauvegarder dans une base.
Pour créer ce formulaire, je me suis basé sur le tutorial de ce site : http://www.01net.com/editorial/273366/construisez-une-base-de-donnees-avec-excel/

Le seul soucis rencontré : lorsque j'enregistre mes données, celles-ci ne se colle pas à suivre dans la base. Les données se recolle les unes sur les autres dans la ligne 2.

Voici le code :

Sub saisie()
'Atteindre le formulaire et mémoriser les données
    Sheets("Formulaire").Select
    Range("B1:B6").Select
    Selection.Copy
'Test pour déterminer la ligne où coller les données
    Sheets("Base").Select
    valeursA2 = Range("A2").Value
    If valeurA2 = "" Then
    Range("A2").Select
    Else
    Range("A1").Select
    Selection.End(xlDown).Select
    ligne_active_base = ActiveCell.Row
    Range("A" & ligne_active_base + 1).Select
    End If
'Mémoriser le n° de la ligne où coller les données
    lignes_active_base = ActiveCell.Row
'Collage avec transposition
    Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=True
'Rendre vierge le formulaire
    Sheets("Formulaire").Select
    Range("B1:B6").Select
    Selection.ClearContents
    Range("B1").Select
'Retourner dans le tableau
    Sheets("Base").Select
    Range("A1").Select
End Sub


En vous remerciant d'avance pour vos réponses.

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
8 janv. 2013 à 19:23
Bonjour,

Un peu plus court,

Sub saisie()
  With Sheets("Base")
    'premiere ligne vide colonne A (A1: titre colonne)
    plva = .Range("A" & Rows.Count).End(xlUp).Row + 1
    .Range("A" & plva & ":F" & plva) = Application.Transpose(Sheets("Formulaire").Range("B1:B6"))
  End With
  'Rendre vierge le formulaire
  Sheets("Formulaire").Range("B1:B6").ClearContents
End Sub
1
Merci, ce code est parfait et surtout plus court.
0