1 pièce(s) jointe(s)
Fichier trop lourd, trop de codes
Bonjour à tous,
Je vous expose mon problème: j'ai créé un sorte de formulaire pour la gestion de mes réserves qui, une fois saisie, vient incrémenter une base de donnée.
Les contraintes que j'ai rencontré et mon faible niveau en VBA font que j'ai un fichier avec plein de code dans tous les sens et une utilisation pas très "friendly".
En effet, lorsque je veux par exemple supprimer les filtres de mes segments via le bouton "Supprimer les filtres", c'est hyper long. Idem quand je veux cliquer sur le bouton Effacer. (Dans mon fichier les macros que j'utilise se situent dans le module 3)
De plus, je voudrais que les formules qui sont dans les zones grisées (Ex: de la cellule B26 à C66 ou toutes les formules du pavé "identifications dossiers") ne se lancent uniquement quand on clique sur le bouton "Rechercher".
Si quelqu'un a des idées, je suis preneur :)
Merci d'avance !
le problème n'est pas forcement celui que l'on croit
bonjour, je n'est pas regardé le code ou les formules. j'ai vue la base de donnée et je pense que c'est là ou se trouve ton problème.
sans devenir un spécialiste , recherche de la doc sur l' ORGANISATION d'une DB ...
1) une Data Base est constituée de plusieurs Table (on vat dire que une Table est un onglet , et donc l'ensemble des onglets constituent la Data Base)
2) chacune des Table (onglet) est une liste de donnée (spécifique et complémentaire)
3) la liste principale doit avoir le moins de colonnes possible (pour plus de rapidité)
en fait le mécanisme est le même que les listes en cascade... une sélection (dans la table 1) vat déterminer un repaire / index qui permet de rechercher des data dans les autres table ...
@+JP
1 pièce(s) jointe(s)
relation entre les tables ... fonction Excel
bonjour,
bon , j'avoue , j'ai eu du mal avec les fonctions Excel :furieux:
Pièce jointe 613584
le problème de la fonction RECHERCHEV c'est qu'elle n'est pas souple du tout du tout !!!
j'ai du m'adapter à son mode de fonctionnement , c'est à dire par exemple que la colonne de recherche doit être la première à gauche.
j'ai bataillé aussi avec le format des cellules , nombre et texte et autre ... la solution au format c'est la fonction VALEURNOMBRE()
VALEURNOMBRE(DROITE(H12;5)&"01")
il faut savoir qu'il y a une bizarre conception des numéro de commande , par exemple : 058833 ... pourquoi le "0" du début ??
parce que les numéro des ID de détail de commande n'ont pas ce "0" : 5883301 , 5883302 ... et il y a aussi des ID qui n'ont pas de "01" et qui débute à "02" ... oups !!
la fonction DROITE(H12;5) ne garde pas le "0" du début de "058833" ce qui donne "58833" , on ajoute le rang de l'ID avec &"01" et on reformate en nombre avec VALEURNOMBRE()
RECHERCHEV(H21;C21:E48;2;FAUX)
H21 c'est notre numéro d'ID "5883301"
C21:E48 c'est la zone "data" sans les entêtes du tableau "Commande_Detail"
2 c'est la colonne 2 du tableau (description)
FAUX c'est le mode de recherche , il est très important que ce soit FAUX et non VRAI !!
SIERREUR(RECHERCHEV(H21;C21:E48;2;FAUX);"")
si par exemple on recherche l'ID "5883311" qui n'existe pas , un message d'erreur s'affiche ... pour éviter ces messages , on utilise la fonction SIERREUR().
si il y a une erreur , déclenché par la fonction RECHERCHEV() alors on écrit rien : "" :D
mais si il n'y a pas d'erreur !!! et qu'on veut écrire quelque chose , comment utiliser la fonction SI() ??
SI(SIERREUR(RECHERCHEV(VALEURNOMBRE(DROITE(H12;5)&"01");C21:E48;2;FAUX);"err")="err";VALEURNOMBRE(DROITE(H12;5)&"02");VALEURNOMBRE(DROITE(H12;5)&"01"))
la plus grosse difficulté , ici , c'est de traiter le résultat de la fonction SIERREUR() .
on a vue plus haut que en cas d'erreur , on écrit rien : "" mais ce rien empêche le bon fonctionnement de SI() , alors on vat écrire quelque chose , par exemple "err" pour erreur (çà n'a pas d'importance) 8O .
donc on teste la première partie de SI() , SI( la fonction SIERREUR() a écrit "err" ; vrai ; faux) , si c'est vrai on écrit l'ID "5883302" et si c'est faux (donc pas d'erreur) on écrit l'ID "5883301"
il est à noter que la colonne E20:E48 sert uniquement à la fonction NB.SI(E21:E48;H12) qui indique le nombre d'ID de détail de la commande
"ID ("&NB.SI(E21:E48;H12)&")"
c'est le texte de l'entête : ID (9)
E21:E48 c'est la colonne de recherche
H12 c'est le numéro de commande "058833"
voila , pour la partie "fonction" des relations entre les tables ...
j'allais oublier , toutes les données proviennent du seul fait d'avoir écrit le nom du client en I3 !!
:coucou: @+JP
2 pièce(s) jointe(s)
relation entre les tables ... orienté DB
bonjour,
d'accord la réponse est un peu longue , mais il s'agit d'un vaste sujet ou se croisent plusieurs méthodes :
1) les "fonctions" que nous avons vues , avec du "VBE" qui s'oriente vers les fonctions , usage "normal" de Excel
2) le "VBE" qui s'oriente vers les fichiers , usage "orienté DB" sans être un usage "Access" ,
il est question , ici , de gestion de fichier ; fichiers externes ou fichiers internes représentés par des tableaux qui ne doivent pas être triés
pour mener à bien ce dernier point , il faut peut être plus de rigueur mais cela reste abordable.
voila donc le schéma (sommaire :weird: ) des liens d'une donnée / data .
Pièce jointe 613592
ce schéma offre des possibilités beaucoup plus grandes que nos besoins ...
c'est pour cela qu'il y a des cases qui ne seront pas utilisées (BG / BD)
on reprends les mêmes tables , avec le nouveau système , bien sur on vat voir çà en détail 8O
Pièce jointe 613595
un état des lieux s'impose !!!
1) les colonnes "ligne" , ces colonnes ne sont là que pour l'exemple car elle représentent les numéro de ligne d'Excel (en réalité elles n'existent pas , tout comme les noms des tables)
2) la table "Client" n'a pas les entêtes "S / G / D / BG / BD" , dans une table de "personne" elles gèrent des arbre généalogique par exemple ou des ventes multi-niveaux avec réversion en cascade...
les 2 colonnes "CmdG" et "CmdD" relient la table "Commande" à la table "Client"
CmdG , lien n1 vers "Commande" , les numéros représentent les lignes dans la table "Commande" , pour le client "CARLIER" (3) la vraie ligne est 14 :calim2:
CmdD , dernier lien vers "Commande" , dans le cas ou le client aurait plusieurs commande (actuellement 0 puisque 1 seule commande)
3) la table "Commande" est susceptible d'utiliser toutes les entêtes "S / G / D / BG / BD" même si pour le moment "G" et "D" sont à zéro .
S , pour Supérieur / Parent , à la ligne 3 on voit que S est à 3 , ici , S pointe vers "Client" , et donc dans "Client" à la ligne 3 qui on retrouve ? ... le client "CARLIER" :D
souvenez vous le "schémas des tables" , dans le cas d'un accès "direct" à la table "Commande" ,
on peu lister les clients grace à "S"
on peu lister toutes les commandes d'un client grace à "G" et "D"
on peu lister en détail tout les ID de la table "Commande_Detail" avec entre autre "BG" et "BD"
voila pour la présentation , je vais préparer le code "VBE"
:coucou: @+ JP