Incrémenter une base de données à partir d'un UserForm

troopers87

XLDnaute Occasionnel
Bonjour à tous,

je souhaite incrémenter une base de données à partir d'un UserForm. Pas de souci en ce qui concerne le passage d'une TextBox à une cellule d'un classeur.

Mon problème, c'est que je ne sais pas comment faire pour que les données s'ajoutent les unes à la suite des autres et ne remplacent pas continuellement la saisie précédente.

Juste une précision : pour faciliter l'ergononomie du fichier, je compte masquer la feuille qui recueille les données et ne montrer qu'une seule feuille (nommée Résultat, par exemple).

Je joins un petit fichier pour illustrer tout ça, merci d'avance pour votre aide !
 

Pièces jointes

  • Exemple.xlsx
    6.2 KB · Affichages: 77
  • Exemple.xlsx
    6.2 KB · Affichages: 80
  • Exemple.xlsx
    6.2 KB · Affichages: 84

Si...

XLDnaute Barbatruc
Re : Incrémenter une base de données à partir d'un UserForm

salut

à tester
Code:
Private Sub CommandButton1_Click()
  Feuil1.Range("B60000").End(xlUp)(2) = Box_nom: Box_nom = "" 'pour autre essai...
  Feuil1.Range("C60000").End(xlUp)(2) = Box_prenom: Box_prenom = ""
  'croix pour fermer !
End Sub
 

troopers87

XLDnaute Occasionnel
Re : Incrémenter une base de données à partir d'un UserForm

Bonjour à vous deux et merci pour votre aide,

vos deux solutions fonctionnent à merveille ! J'hésite entre celle de Jean-Marcel que je juge plus classique et celle de Si... que je trouve... audacieuse ^^

Merci encore et à bientôt !
 

Si...

XLDnaute Barbatruc
Re : Incrémenter une base de données à partir d'un UserForm

re

Si tu veux un 0 il faut remplacer ma macro par
Code:
Private Sub CommandButton1_Click()
  Feuil1.Range("B60000").End(xlUp)(2) = IIf(Box_nom = "", 0, Box_nom)
  Feuil1.Range("C60000").End(xlUp)(2) = IIf(Box_prenom = "", 0, Box_prenom)
  Unload Me
End Sub

Dans la première version, on vide les textes ( Box_nom=""...) pour traiter un autre cas immédiatement. Quand on en a assez, on ferme l'UsF !
 

troopers87

XLDnaute Occasionnel
Re : Incrémenter une base de données à partir d'un UserForm

Bonjour,

je reviens vers vous pour retravailler le code que vous m'avez conseillé.

Code:
Private Sub CommandButton1_Click()
  Feuil1.Range("B60000").End(xlUp)(2) = Box_nom: Box_nom = ""
  Feuil1.Range("C60000").End(xlUp)(2) = Box_prenom: Box_prenom = ""
End Sub

En fait, je tente de remplacer B60000 par un nom de plage afin de sécuriser mon fichier : supposons qu'à l'avenir, la colonne A soit supprimée : tout mon code se retrouve par terre !

Malheureusement, si je nomme la place des noms par T_Nom, par exemple, l'incrémentation ne se fait plus et les nouvelles données remplacent les précédentes...
 

troopers87

XLDnaute Occasionnel
Re : Incrémenter une base de données à partir d'un UserForm

Bonjour,

excuse-moi, je n'arrive pas à me faire comprendre sur l'autre fil car les XLDnautes qui tentent de m'aider modifient trop profondément le code auquel nous avons abouti dans ce fil. C'est pour cette raison que j'ai voulu relancer ce topic. Rassure-toi, je comptais prévenir les autres pour éviter justement le double post.
 

troopers87

XLDnaute Occasionnel
Re : Incrémenter une base de données à partir d'un UserForm

Je pense avoir trouvé, mais c'est vraiment du bricolage, si quelqu'un a une idée pour l'améliorer, n'hésitez pas ;)

Code:
Sheets("BD").Range("Nom").End(xlDown).Offfset(1, 0) = TB_Nom

Avec "Nom" la cellule qui se situe au-dessus de l'en-tête de colonne.

Cela équivaut à :
"Va à la cellule nommée Nom"
"Va à la cellule pleine la plus basse de la plage T_Nom"
"Descend encore d'une case (la vide, du coup)"
"Insère ici les données de la TextBox TB_Nom"

Et ça fonctionne. Par contre, il faut que l'entête soit incluse dans la plage nommée, sinon la première ligne risque de ne pas fonctionner. De plus, la première ligne sous l'en-tête de colonne doit être pleine (il faut au total 2 cellules pleines dont l'en-tête en haut de la plage nommée : et oui, c'est du bricolage !).
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
377

Statistiques des forums

Discussions
312 367
Messages
2 087 649
Membres
103 628
dernier inscrit
rou37x