XL 2021 VBA Formulaire

delsart59

XLDnaute Nouveau
Bonjour à vous,

Je suis actuellement sur un projet de collecte de données pour mon entreprise et j'ai donc voulu créer un formulaire automatiser pour ajouter toutes ces données.

Depuis peu mon formulaire ne fonctionne plus et je ne sais pas pourquoi.

Je vous explique, à travers le formulaire présent dans le fichier que je vais vous joindre, avant je pouvais à l'aide de petits boutons que j'ai programmé, alimenter une table qui elle-même alimentait des combobox. Mes combobox me permettaient à la fois de filtrer ma listeview et d'ajouter des données à ma base de données.
Or depuis peu, je ne sais pas pourquoi, je ne peux plus ajouter des données à l'aide du bouton et consulter juste après ma combobox à jour, si je fais cela mon fichier plante.
Petite précision, si j'ajoute une donnée (cette fonction marche correctement) et que je ferme et reouvre le formulaire, cela met à jour ma combobox et mon fichier ne plante pas mais ce n'est pas pratique.

SI quelqu'un peu me venir en aide please.

PS: Je ne pourrais pas télécharger vos fichier car je suis sur mon ordinateur du travail.

Merci par Avance.

Cordialement
 

Pièces jointes

  • DATABASE FINALE Neels 2.1.xlsm
    213.5 KB · Affichages: 9
Solution
Hello

une nouvelle version en PJ
1) pour modifier une ligne, il faut selectionner la ligne dans la listview ET cliquer sur le bouton "Modifier" (il n'apparait QUE si tu as selectionné une ligne)
tant que tu n'as pas cliqué sur ce bouton, les sélections dans les combo déclenchent les filtres
une fois cliqué, les autres boutons deviennent inactifs, et le bouton change de texte ("Valider la modif")
tu fais tes modifs en selectionnant dans les combo
tu valides en recliquant sur le bouton
==> la table excel est mise à jour, ET la ListView est rechargée, les boutons redeviennent actifs

2) j'ai aussi ajouté un bouton "Supprimer la ligne" qui permet de supprimer une ligne de la table

vgendron

XLDnaute Barbatruc
ok
est ce que tu pourrais aussi mettre quelques données bidons (quleques lignes suffisent)
parce que la.. on a rien à mettre dans la listview..
en plus.. je vois que le code va chercher des infos dans la colonne J, mais cette colonne est aussi vide et pire, elle ne fait meme pas partie du tableau structuré de la feuille Base de Données
 

vgendron

XLDnaute Barbatruc
manque encore des choses
dans le code pour remplir la listview, tu "définis" un critère sur la colonne J
==> y a quoi dans la colonne J?
et le format.. c'est pour formater quoi sous quel format??

'On définit le critère sur lequel la couleur sera appliquée (ici les problèmes avec Analyse)
Moncritere = Format(cells(i, 10))

il reste aussi une plage nommée "Famille" sans réf

plutot que supprimer les données confidentielles.. peux tu juste les remplacer par des données bidons?
 

delsart59

XLDnaute Nouveau
manque encore des choses
dans le code pour remplir la listview, tu "définis" un critère sur la colonne J
==> y a quoi dans la colonne J?
et le format.. c'est pour formater quoi sous quel format??

'On définit le critère sur lequel la couleur sera appliquée (ici les problèmes avec Analyse)
Moncritere = Format(cells(i, 10))

il reste aussi une plage nommée "Famille" sans réf

plutot que supprimer les données confidentielles.. peux tu juste les remplacer par des données bidons?
La colonne J ne comporte plus rien, c'était sensé compté le nombre de cellule de cette colonne qui était remplie et la couleur, c'était pour mettre en évidence les lignes avec une cellule de la colonne J remplie.
Donc ca peut être supprimée.

J'avais fait le fichier pour un certain type de besoin et on m'a demandé de l'adapter

Cordialement
 

delsart59

XLDnaute Nouveau
manque encore des choses
dans le code pour remplir la listview, tu "définis" un critère sur la colonne J
==> y a quoi dans la colonne J?
et le format.. c'est pour formater quoi sous quel format??

'On définit le critère sur lequel la couleur sera appliquée (ici les problèmes avec Analyse)
Moncritere = Format(cells(i, 10))

il reste aussi une plage nommée "Famille" sans réf

plutot que supprimer les données confidentielles.. peux tu juste les remplacer par des données bidons?
Les plages Familles et Phase sont elles aussi du fichier de base
 

vgendron

XLDnaute Barbatruc
ton fichier a déjà fonctionné tel quel??

j'y vois du code pour des controls qui n'existent meme pas sur le formulaire..
tu dis que la colonne J ne comporte plus rien et qu'on peut la supprimer.. oui, mais voila.. le code va y chercher des infos.. que s'il ne trouve pas.. il plante...
 

delsart59

XLDnaute Nouveau
ton fichier a déjà fonctionné tel quel??

j'y vois du code pour des controls qui n'existent meme pas sur le formulaire..
tu dis que la colonne J ne comporte plus rien et qu'on peut la supprimer.. oui, mais voila.. le code va y chercher des infos.. que s'il ne trouve pas.. il plante...
tel quel peut être pas, j'ai commencé à faire les modifications mais ca n'a pas marché. Cependant sur mon fichier de base les controles fonctionnait. Tu parles de quels controls qui n'existe pas ?
J'ai oublié de dire au cas ou, je fais appelle aux plage de données dans les propriétés des combobox.
 

vgendron

XLDnaute Barbatruc
du code sur un textbox5 par exemple;

bon.. je regarde un peu et je reviens vers toi vers un fichier plus propre
1) donner des noms aux tables structurées dans les feuilles "t_BDD" et "t_Listes"
2) Donner des noms aux controls du formulaire
pour éviter d'avoir Combobox1, combobox2 combobox3.... on ne sait pas duquel il s'agit
alors que:
Cbx_Projet, Cbx_Systèmes, Cbx_SousSystème.... c'est déjà plus parlant.. plus besoin d'aller cliquer sur tous les controls pour savoir duquel il s'agit

3) utiliser les tables structurées (=Listobjects en vba) pour remplir la listview et les combo
4) supprimer le code qui ne sert à rien
 

delsart59

XLDnaute Nouveau
du code sur un textbox5 par exemple;

bon.. je regarde un peu et je reviens vers toi vers un fichier plus propre
1) donner des noms aux tables structurées dans les feuilles "t_BDD" et "t_Listes"
2) Donner des noms aux controls du formulaire
pour éviter d'avoir Combobox1, combobox2 combobox3.... on ne sait pas duquel il s'agit
alors que:
Cbx_Projet, Cbx_Systèmes, Cbx_SousSystème.... c'est déjà plus parlant.. plus besoin d'aller cliquer sur tous les controls pour savoir duquel il s'agit

3) utiliser les tables structurées (=Listobjects en vba) pour remplir la listview et les combo
4) supprimer le code qui ne sert à rien
Je te remercie pour ton aide, je vais regarder. Je viens aussi de m'appercevoir que pour le bouton réinitialisation je n'avais pas appelé la fonction reset des combobox et textbox et aussi que je n'avais pas reparamétré mon bouton extraction ( sur le fichier que j'ai envoyé, tu as le bouton modifier à la place).
 

delsart59

XLDnaute Nouveau
tout (du moins une grosse partie) est à revoir je pense..
et le problème de plantage apparait lorsque tu ajoutes une ligne en dehors de la plage nommée en "dur" dans la feuille excel
Le problème c'est que cette fonction était fonctionnelle sur le fichier de base. si je fait ajouter une donnée, que je ferme le formulaire et le réouvre, cela fonctionne mais c'est l'enchainement ajout de données + ouverture de la liste déroulante du combobox qui plante (peut être le chargement de celle-ci après l'ajout de la nouvelle donnée)
 

vgendron

XLDnaute Barbatruc
Regarde la PJ
j'ai fait un peu de ménage et modifié le code pour exploiter les TablesStructurées (Listobjects)

J'ai supprimé les plages nommées,
j'ai donc supprimé les rowsources des combobox
==> j'ai créé une macro "LoadCombo" qui permet de les charger
j'ai modifié le code pour ajouter des éléments dans les différentes tables "listes"
==> donc, lorsque tu ajoutes un élément, le combo est automatiquement rechargé avec le nouvel élément
 

Pièces jointes

  • DATABASE FINALE Neels 3.xlsm
    217.8 KB · Affichages: 6
Dernière édition:

Discussions similaires

Réponses
15
Affichages
862
Réponses
7
Affichages
184
Réponses
3
Affichages
510
Réponses
17
Affichages
1 K

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD