Saisie sous excel avec VBA

fred -  
Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   -
bonjour,
je souhaiterais faire une saisie automatique avec l'aide de VBA
en utilisant un ou plusieurs useform en fonction de la taille de mon fichier excel .

Par exemple avec un userform le prénom devra apparaître en A1 et le nom en A2, l'adresse en A3,la ville en A4
comment faire pour rentrer les données à la ligne suivante,tout en gardant les données déjà rentrées et en effacant les textbox
le début de la saisie pourra se faire avec un bouton installé sur le fichier excel.

comment faire si je souhaite utiliser plusieurs userfor
merci pour votre réponse

Frédéric
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   59
     
    Bonjour fred,

    Voici une façon de faire :

    Dans cet exemple, je suppose un userform (UserForm1) contenant :
    4 TextBox (TextBox1 ... Textbox4) devant recevoir les noms, prénoms, adresses et villes
    1 CommandButton (CommandButton1) destiné à enregistrer les données dans la feuille (Feuil1)

    Private Sub CommandButton1_Click()
    Dim Lg As Long ' Variable représentant la 1ère ligne vide
    NbTb As Integer ' Variable représentant le nombre de textbox du formulaire

    Lg = Sheets(1).Range("A65536").End(xlUp).Row + 1
    NbTb = 0
    ' Calcul du nombre de TextBox
    For Each Ctl In UserForm1.Controls
    If TypeOf Ctl Is MSForms.TextBox Then NbTb = NbTb + 1
    Next
    ' Ecriture des valeurs dans les cellules
    For n = 1 To NbTb
    Cells(Lg, n) = UserForm1.Controls("Textbox" & n).Text
    Next

    End Sub


    L'avantage de cette solution est que, si tu ajoutes des TextBox supplémentaires, tu n'auras pas à modifier le code.
    Pour améliorer la logique et la rapidité du programme, il serait préférable de mettre la boucle de calcul du nombre de TextBox dans l'événement Open du classeur. Ainsi, elle ne sera pas exécutée à chaque enregistrement.
    Bien entendu, il reste possible d'améliorer ce programme de base en ajoutant des contrôles : annulation, contrôle de la validité des saisies, etc...

    Espérant avoir pu t'aider.

    Cordialement.
    2
  2. tabol
     
    Bonjour,

    Tu dois déclarer une variable public dans thisworkbook pour que tous les userform y aient accès et créer une fonction que tu lances à l'ouverture du classeur qui te renvoi le nombre de ligne déjà écrites en testant si la cellule est vide ou non.

    variable=1
    while Feuil1!cells(variable,1)<>""
    variable=variable+1
    end

    A la validation
    cells(variable,1).text=textbox'prenom'.text ainsi de suite pour tous les champs
    après tu vides tes texbox => textbox.text=""
    et tu incrémentes ta variable de 1 pour passer à la ligne suivante.

    La synthaxe n'est peut être pas la bonne ça fait un bout de temps que je n'ai pas fait de VBA mais le principe est le bon
    Bonne programmation
    1