Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Base de données alimentée par un userform ne fonctionne pas

  • Initiateur de la discussion Initiateur de la discussion Yann71
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Yann71

XLDnaute Occasionnel
Bonsoir la com, bonsoir le forum.
Me voici avec un problème récurrent. J'ai une BD alimentée par un Userform. Si ma BD est vide, je ne peux l'alimentée avec l'userform,
par contre si dans les lignes A2 et A3 j'y inscrit des données directement dans ma BD, plus de problème, je peux alimenter par la suite depuis mon l'userform.
Donc en résumé pour que tout fonctionne je dois avoir au minimum 2 lignes remplie. Donc serait-il possible de faire en sorte que tout fonctionne même si
aucune donnée n'est inscrite dans ma BD.

Merci pour votre futur aide.
 

Pièces jointes

Bonsoir,

Je ne suis pas très fort. Mais pour alimenter la bd à partir du formulaire, je n'ai traité que cette partie (pas la vérification de la présence du code).
VB:
Private Sub btnAjouter_Click()
    Dim i As Integer
    For i = 2 To Range("A:A").End(xlDown).Row
        If Cells(i, 1).Text = txtCode.Text Then MsgBox " Ce code est déjà attribué à " & Cells(i, 2).Value: txtCode.Text = " ": txtCode.SetFocus: Exit Sub
    Next i
    '''''''alimenter feuille''''''''''''
    Dim ws As Worksheet, NewRow As ListRow
    Set ws = Sheets("BD")
    Set NewRow = ws.ListObjects(1).ListRows.Add
    With NewRow
        .Range(1) = txtCode.Text
        .Range(2) = cboCivilité.Text
        .Range(3) = txtNom.Text
        .Range(4) = txtPrénom.Text
        .Range(5) = txtAdresse.Text
        .Range(6) = txtCP.Text
        .Range(7) = txtVille.Text
        .Range(8) = txtTéléphone1.Text
        .Range(9) = txtTéléphone2.Text
        .Range(10) = txtMail.Text
    End With
End Sub
Bonne soirée.
 
Bonsoir Cp4, merci pour ton intervention. J'ai remplacer mon code par le tient, mais une erreur survient à ce niveau:

t(i, 3) = t(i, 2)





Sub GarnirListBox1()
Dim t, i&
With Sheets("BD")
ListBox1.ColumnCount = 3
ListBox1.ColumnWidths = Join(Array(0, ListBox1.Width / 2 - 10, ListBox1.Width / 2 - 10), ";")
Label1.Caption = "Nom:": Label1.Left = ListBox1.Left
Label2.Caption = "Prénom:": Label2.Left = ListBox1.Left + ListBox1.Width / 2 + 10
ListBox1.Clear
On Error Resume Next
t = .Range("a1").ListObject.DataBodyRange.Columns("c:d")
If Not IsArray(t) Then Exit Sub
ReDim Preserve t(1 To UBound(t), 1 To UBound(t) + 1)
On Error GoTo 0
For i = 1 To UBound(t)
t(i, 3) = t(i, 2)
t(i, 2) = t(i, 1)
t(i, 1) = "Ligne n° " & String(10 - Len(CStr(i + 1)), " ") & (i + 1)
Next i
ListBox1.List = t
End With
End Sub
 
Je commence à te montrer comment on édite un code (voir animation Gif).
Ne passe pas sur le forum (fichier trop lourd)Lien du fichier

Ensuite, on ne sait pas vraiment ce que tu veux faire. Le code que tu présentes est le tien. Je n'ai rien touché à ce formulaire. Qui est celui que tu utilises pour supprimer un client. Chez moi, je n'ai pas rencontré ce bug.

Est-ce que tu arrives à ajouter des clients en partant d'un tableau vide? C'était ta question initiale.
 
Dernière édition:
Bonsoir Jean-Marie, comment vas-tu ?
Merci pour ton intervention. Après avoir modifier la ligne de code par la tienne, mon Userform 1 ne s'ouvre plus qu'à mon Userform 2 aucun problème.
 
Re
Yann
Afin de ne pas ( comme disait Coluche) t'introduire par erreur !
J'ai supprimé toutes les anneries que j'avais pu commettre sur ce fil lol
Bonne journée
A bientôt sur des fils ou je pourrai t'aider.

jean marie
 
Dernière édition:
Re
Afin de ne pas ( comme disait Coluche) t'introduire par erreur !
J'ai supprimé toutes les anneries que j'avais pu commettre sur ce fil lol
Bonne journée
A bientôt sur des fils ou je pourrai t'aider.
Jean marie
 
Dernière édition:
Ajout : Pour Yann71
Bonne nuit,
Après la télé EXCEL !
Désolé, je ne pédale pas très vite, j'en suis à répondre au 1er post !

Ton problème, quand tu as supprimé (je dis bien supprimé, pas effacé) la seule ligne qui reste dans ton tableau, c'est que Listrows.Count vaut 0, que les DataBodyRange ne sont plus définis et que Lisrows(1) renvoie une erreur "l'indice n'appartient pas à la sélection".
Cela plante le formulaire ...
Je prends des précautions sur les tableaux vides et je ramène le cas 1 seule ligne vide à aucune ligne.

J'ai modifié les codes

Dans Userform1
btn_Ajouter
btn_Annuler
btn_Modifier
Userform_Initialize
affiche
J'ai ajouté Charger_Combo

Dans Userform2
CommandButton1_Click
GarnirListBox1

Plus le courage de regarder le reste.
C'est vraiment l'heure de se coucher.

A bientôt
Alain
 

Pièces jointes

Dernière édition:
Pour info: Mon objet ComboBoxLiées, qui prend à son compte la collection ListRows du ListObject en tant que propriété Lignes, n'est pas géné s'il est vide. Sa méthode Plage prends toutefois toujours au moins 2 lignes derrière la HeaderRowRange. Ça n'a pas posé de problème jusqu'à présent.
Sa méthode Actualiser, qui établit les listes complètes au niveau base, n'emploie DataBodyRange que si Lignes.Count > 1
 
Dernière édition:
On ne se couche pas !
Salut Dranreb
Comme je le disais dans mon post, qui s'adresse plutôt à Yann71, je répondais au post du début. Je suis un peu lent et je n'ai pas encore épluché les posts suivants.
Donc ma réponse tentait d'expliquer le plantage du premier fichier de Yann71 quand il avait supprimé toutes les lignes de son tableau.
Ceci sans révolutionner l'ensemble de son projet.
Promis je regarde ton projet plus tard, après un peu de sommeil et je te fais un retour.
A bientôt
Alain
 
Bonjour.
Ça doit être à cause d'une options 'Arrêt sur toutes les erreurs' cochée à tort dans VBE, menu Outils, Options…, onglet Général, rubrique Récupération d'erreur. Cochez donc plutôt 'Arrêt dans le module de classe'.
 
Réactions: cp4
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…