Saisie sous excel avec VBA

Fermé
fred - 7 sept. 2007 à 14:34
Papou93 Messages postés 146 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 5 juin 2012 - 7 sept. 2007 à 17:05
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
A voir également:

2 réponses

Papou93 Messages postés 146 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 5 juin 2012 59
7 sept. 2007 à 17:05
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
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