Enregistrement formulaire

Bonjour,

J'ai crée un formualire assez classique pour alimenter une base de donnée. Lorsque j'éxécute le formulaire depuis l'éditeur (triangle vert), tout fonctionne parfaitement. A chaque nouvel enregistrement, mes informations sont bien enregistrées les une à la suite des autres avec .End(xlUp).Row + 1 .

Pourtant, lorsque je lance ce même formulaire depuis un bouton de commande, les informations que j'enregistre avec le formulaire sont systématiquement écrasées (et non enregistrées les unes à la suite des autres) Je n'ai aucun message d'erreur.

J'ai du mal à comprendre le problème car j'ai l'impression que le code est bon dans la mesure où ce dernier fonctionne dans un cas mais pas dans l'autre.

Vous trouverez joint mon fichier exemple avec le formulaire simplifié.

Merci beaucoup pour votre aide.

Maxime

7test.xlsm (32.78 Ko)

Bonjour,

Est-ce que vous lancez le formulaire depuis la feuille de base de données quand ça marche?

Car de ce que j'ai vu:

LR = Range("B" & Rows.Count).End(xlUp).Row + 1
Sheets("Base de données ayants-droits").Range("B" & LR).Value = nom_box.Value

Ici vous précisez la feuille dans laquelle écrire la donnée du contrôle "nom_box", mais vous ne précisez pas la feuille dans la quelle aller chercher le numéro de la dernière ligne, quand vous appelez le formulaire depuis le bouton, vous êtes dans une feuille vide, la dernière ligne sera donc la 2, ce qui va faire que vos données vont s'écraser.

Il faut donc soit écrire:

LR = Sheets("Base de données ayants-droits").Range("B" & Rows.Count).End(xlUp).Row + 1
Sheets("Base de données ayants-droits").Range("B" & LR).Value = nom_box.Value

soit:

With LR = Sheets("Base de données ayants-droits")
    LR = .Range("B" & Rows.Count).End(xlUp).Row + 1
    .Range("B" & LR).Value = nom_box.Value
End With

En clair, préciser la feuille car ce n'est pas toujours la feuille active (feuille qui est choisie par défaut quand on ne précise pas).

Bonjour à toutes et tous,
Pour le principe.
Cdlt.

1test.xlsm (28.10 Ko)
Private Sub cmdSave_Click()
Dim ws As Worksheet, rw As Long
    Set ws = Worksheets("Données ayants-droits")
    With ws
        rw = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
        .Cells(rw, 2).Value = txtName.Value
    End With
    Unload Me
End Sub

Merci beaucoup pour votre aide. Cela marche et j'ai sutout bien compris le problème.

Bonne journée,

Maxime

Rechercher des sujets similaires à "enregistrement formulaire"