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
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
A voir également:
- Saisie sous excel avec VBA
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Mise en forme conditionnelle excel - Guide
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
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.
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.
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
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