XL 2010 alimenter Bdd avec userform

celine123

XLDnaute Junior
Bonjour,
J'ai un classeur avec un userform pour alimenter une BDD.
le sujet avait été suivit par Paf mais n'ayant plus de retour de sa part je pense qu'il doit être pas mal occupé(un grand merci pour le temps qu'il a consacré sur mon sujet)
c'est pour cela que j'en appelle a votre aide
j'ai un petite particularité c'est de pouvoir alimenter en deux fois mon formulaire
en gros j'aimerai pouvoir après avoir fait une première saisie (la partie hors frame) de pouvoir par rapport a la date et heure saisie en première partie pouvoir compléter pour la ligne correspondante la suite (frame) tout en pouvant ajouter un nouveau terme dans la colonne correspondante (si il n'existe pas) par la saisie dans les combobox
dans la trame du tableau la premiére partie se symbolise par la couleur orange et la deuxiéme par la couleur verte
petit point particulier si j'ai oui dans la combobox 25 la combobox 26 et visible sinon pas visible
Paf a déjà répondu pour ça:

Dans Private Sub UserForm_Initialize(), ajouter:
Code (Text):
ComboBox26.Visible = False
et dans Private Sub ComboBox25_Change()
Code (Text):
If UCase(ComboBox25) = "OUI" Then ComboBox26.Visible = True



il peut avoir des dates identiques
pour une date il peut avoir plusieurs heures
mais il ne peut pas avoir d'heures identiques
la combinaison date + heure ne peut être identique

voici le lien de la discussion déjà commencer qui concerne ce sujet et un sujet dans le même esprit
https://www.excel-downloads.com/threads/alimenter-bdd-avec-userform.20014041/
 

Pièces jointes

  • Copie de formulaire 2.xlsm
    21 KB · Affichages: 76

cathodique

XLDnaute Barbatruc
Bonjour,
remplace le début du code du bouton


Private Sub CmdAjout_Click()
Dim CTRL As Control 'Variable pour la collection des controls
Dim L As Integer, y As Integer 'Variable pour connaitre le numéro de derniere ligne vide
Dim LeChoix As String
L = ThisWorkbook.Worksheets("BDD").Range("A65536").End(xlUp).Row + 1 ' On identifie la dernière ligne vide en partant du bas
 

Dranreb

XLDnaute Barbatruc
Je ne vois nulle part dans le classeur joint de cellule contenant la date et l'heure.
Et je ne suis pas fondé non plus à penser que vous les voulez finalement seulement dans la ComboBox puisqu'il y en a toujours encore 2.
Mais s'il y en avait 1 seule nommée CBxDateHeure, son alimentation pourrait se faire comme ça :
VB:
Private Sub UserForm_Initialize()
Dim TE(), TS(), L As Long
TE = Feuil2.UsedRange.Resize(, 2).Value
ReDim TS(0 To UBound(TE, 1) - 2)
For L = 2 To UBound(TE, 1)
   TS(L - 2) = Format(TE(L, 1) + TE(L, 2), "dd/mm/yyyy hh:mm")
   Next L
Me.CBxDateHeure.List = TS
End Sub
 
Dernière édition:

celine123

XLDnaute Junior
par contre comment faire ma correspondance entre les combobox et les colonnes de réponse de la feuille paramètre et l'alimentation de la feuille BDD
j'ai un décalage du coup (les réponse de la colonne A de la feuille paramétré doivent être saisie en colonne B de la feuille BDD)
 

Dranreb

XLDnaute Barbatruc
Non, il faudra que vous ajoutiez ce renseignement des autres contrôles d'après la ligne trouvée
Je vous conseille de noter ce numéro de ligne dans une variable déclarée Private LCou As Long et de réserver aussi un VLgn() As Variant dans lequel vous récupérerez les valeurs de la ligne
(pas bon de travaillez cellule par cellule: lent !)

Plutôt ça pour garnir la ComboBox :
VB:
ComboBox1.List = Intersect(Feuil2.[A2:A1000000], Feuil2.UsedRange).Value
À faire dans l'UserForm_Initialize puis à chaque fois que vous aurez ajouté une ligne

Remarque: vous pourriez avoir intérêt à mettre la plage sous forme de tableau.
ça permettrait de faire
VB:
ComboBox1.List = Feuil2.ListObjects(1).listColumns("Date heure").DataBodyRange.Value
Pour modifier une ligne :
VB:
Feuil2.ListObjects(1).ListRows(LCou).Range.Value = VLgn
Pour en créer une :
VB:
Feuil2.ListObjects(1).ListRows.Add.Range.Value = VLgn
Pour ne pas le répéter chaque fois vous pouvez aussi initialiser une Private LO As ListObject par :
VB:
Set LO = Feuil2.ListObjects(1)
 
Dernière édition:

Discussions similaires

  • Question
Microsoft 365 webbrowser
Réponses
20
Affichages
905

Statistiques des forums

Discussions
312 160
Messages
2 085 840
Membres
103 001
dernier inscrit
vivinator