Besoin d'aide avec VBA

yolojo

XLDnaute Occasionnel
Bonjour, j'ai crée ( avec l'aide précieux de certains d'entre vous) un fichier pour gérer les commandes de parfums de mon CE. Le fichier fonctionne normalement avec des listes déroulantes en cascades directement en validation de données.
J'ai voulu l'améliorer en ajoutant un formulaire et là malheureusement mes compétences en VBA me font défaut. J'ai essayé avec plusieurs codes trouvé sur le net, voir même avec des codes tout fait, mais cela ne marche pas. Je n'arrive pas à :
- Gérer les listes déroulantes en cascades
- sélectionner mon choix de saisie (soi en entrant le nom soi avec le numéro)
- faire fonctionner des message d'alerte lorsque des cases ne sont pas remplies (défaut débogage)
- Rentrer les données du formulaire dans mon tableau récapitulatif
Bref, pas grand chose fonctionne !!!
Je vous joints mon fichier si vous avez des idées et surtout des explications.
Merci d'avance
 

yolojo

XLDnaute Occasionnel
Re : Besoin d'aide avec VBA

Tout simplement génial, tu es trop fort Dranreb .
J'ai rentré ton code et maintenant j'ai bien le nom avec le contenant
Super, super, super
J'ai rajouter une feuille pour la facture totale en supprimant les doublons
Si tu veux jeter un œil (ce n'est pas de la grande programmation, mais ça à l'air de fonctionner)
J'aurais plus qu'a en insérer une autre ou je ferais un copier coller de la page "choix" et où je trierais les clients par ordre alphabétique pour avoir leurs commandes
Encore merci
 

Dranreb

XLDnaute Barbatruc
Re : Besoin d'aide avec VBA

Non, Non, non. tachez de comprendre comment ça marche. On n'est plus dans les modules de service pointus, là. C'est du code relativement banal. On a dans une valiable générale LaLigne le numéro de ligne dans la plage de liste correspondant à l'article.
CBL tient gentiment en permanence à notre disposition l'objet Range correspondant à cette liste, c'est sa propriété PlgTablo.
Donc CBL.PlgTablo.Rows(LaLigne) représente cette ligne. Il faut se débrouiller partout avec ça.

Heu… Là je répondais au post d'avant. Je vais lire le dernier que je n'avais pas vu.

Bien, bien. Tu avances. Mais essaye de régler le problème de l'affichage du prix de la ligne de commande avant ajout.
À +
 
Dernière édition:

yolojo

XLDnaute Occasionnel
Re : Besoin d'aide avec VBA

:confused::confused::confused: Désolé, ce n'est pas faute de vouloir comprendre, mais même ce code relativement banal est pour moi du chinois :confused::confused::confused:

Il faut que je me face la main sur des codes beaucoup plus simple et surtout que je comprenne le principe et le langage car pour l'instant c'est loin d'être clair.
Encore désolé de te décevoir mais si tu connais de bonnes vidéos ou je pourrais apprendre en reprenant depuis le début, je suis preneur.
J'aurais d'autres fichiers du même genre mais pour d'autres activités à réaliser, il faut donc que je comprenne pour être autonome.
En attendant je craints d'être obligé d'embêter encore du monde sur ce forum pendant quelque temps.
Merci quand même
 

Dranreb

XLDnaute Barbatruc
Re : Besoin d'aide avec VBA

N'hésite pas à demander une explication sur tout ce que tu veux savoir. Pour les mots clés du langage tel que Set tu as la touche F1, le curseur étant dessus. Et si tu ne comprend pas l'explication, demande moi. Il faut absolument intégrer totalement la notion d'objet. C'est la base d'une compréhension véritable, car ensuite tout en découle pour ce qui est de la compréhension de telle ou telle propriété ou méthode particulière de tel ou tel type d'objet particulier.
 
Dernière édition:

yolojo

XLDnaute Occasionnel
Re : Besoin d'aide avec VBA

et bien disons le tout début, les bases impératives à connaitre avec des exemples concrets.
Mais je ne veux pas monopoliser tout ton temps.
J'aimerais trouver des tutaux ou des vidéos qui pourraient démystifier ces bases mais jusqu'à présent, tout ce que j'ai trouvé n'est pas assez explicit pour moi (ou bien moi trop bête pour ces explications !!!)
Tant que je n'aurais pas compris les bases de ce langage, je ne pourrais pas progresser.
J'aimerais bien faire un stage ou une formation sur le sujet, mais il faut trouver.
Dommage que Belfort soit trop loin de chez moi Hi Hi Hi
En attendant, merci de ton dévouement.
Pour ma part je vais méditer tout cela, la nuit porte conseil
Bonne nuit et à bientôt
Cordialement
 

Dranreb

XLDnaute Barbatruc
Re : Besoin d'aide avec VBA

Bonjour.
Je reviens un peu sur mon poste #14 parce que j'ai trouvé un meilleur endroit encore pour mettre l'instruction, c'est tout à la fin de la Sub HabiliterContrôles. Comme ça elle est toujours exécutée. Mais là, elle peut provoquer une erreur. Donc il faut éviter que ça plante:
VB:
On Error Resume Next
LabelPrix.Caption = Intersect(CBL.PlgTablo.Rows(LaLigne), [Tarifs]).Value * CDbl(Me.TextQantite) & " €"
If Err Then LabelPrix.Caption = ""
Remarque: j'ai remonté un peu la saisie de quantité et mis le label LabelPrix juste en dessous précédé d'un label "Prix"
En fait j'ai glissé déplacé, Ctrl enfoncé, les labels pour le Tolal tout en bas puis les ai modifié et renommé.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Besoin d'aide avec VBA

Voilà, voilà.
En pénitence tu m'utiliseras la touche F1 après avoir mis tour à tour le curseur texte en plein milieu de chacun des mots:
On, Caption, Intersect, Rows, Value, CDbl, Me et Err.
Il ne serait pas inutile, dans le sommaire de l'aide, de faire un tour du coté des Opérateurs (et de tout le reste aussi d'ailleurs)
Pour ce qui est de la signification des crochets "[" et "]", ça évidemment il faut déjà le savoir, il faut chercher dans l'aide la méthode Evaluate de l'objet Application, ça y est indiqué en Remarque.
Et si tu ne comprends pas complètement une des explications, demande moi.

P.S. Je viens de le re-joindre après avoir fait un sacré ménage dans les noms de plages (la plupart étaient en #REF!)
C'est curieux, 5 des 6 noms qui restent sont définis des lignes 2:589 alors que j'étais persuadé de les avoir définis sur les colonnes entières. S'il est garanti que ces références couvriront toujours la partie utilisée de la feuille Liste, et je sais que la nouvelle version d'Excel permet ce genre de chose, on devrait pouvoir simplifier toutes les expressions de la forme Intersect(CBL.PlgTablo.Rows(LaLigne), [NomDePlage]).Value en [NomDePlage].Rows(LaLigne).Value
Dans le cas contraire, après ajout de nouveaux éléments au delà de la ligne 589, les Intersect pourraient planter (mais pas le module de classe ComboBoxLiés, car il ne s'intéresse qu'aux numéros de colonnes) si les noms ne sont pas définis sur les colonnes entières.
Voir aussi si on ne peut pas, dans UserForm.Initialize, spécifier la plage d'un ListObject, si toutefois la liste a bien été convertie en tableau conformément aux nouvelles dispositions prévues. Je ne peux pas le faire de mon coté, cette classe d'objet n'existe pas dans l'interface à VBA de ma version d'Excel.
 

Pièces jointes

  • CommandeParfums.xls
    332 KB · Affichages: 30
  • CommandeParfums.xls
    332 KB · Affichages: 33
  • CommandeParfums.xls
    332 KB · Affichages: 35
Dernière édition:

yolojo

XLDnaute Occasionnel
Re : Besoin d'aide avec VBA

Bon alors, L'aide avec F1 est aussi claire que la programmation des codes !!!!!
Je ne comprend rien au code, Néanmoins, j'en ai déduis que la valeur de LabelPrix est égale à la valeur de l'intersection dans un tableau (lequel j'en sais rien, avec quelle cellule je ne sais pas non plus, mais surement celui dans la feuille "liste") entre la valeur sur la ligne de CBL.PlgTablo (là aussi je ne vois pas à quoi cela correspond) et la valeur dans la liste "tarifs" qui correspond à cette fameuse ligne. Le tout multiplier par la valeur de TextQantite dans le formulaire (ça j'ai compris !!!) ajouté au petit € (là aussi, j'ai compris !!!)
Tout cela pour donner la valeur à Labelprix que je ne retrouve pas dans mon formulaire !!!
Faut-il recréer un nouveau label pour le prix ?
Voila ce que j'en déduit. C'est là le problème, ce n'est que de la déduction mais à aucun moment de la compréhension !!!
Qu'en penses- tu ?
 

yolojo

XLDnaute Occasionnel
Re : Besoin d'aide avec VBA

tu es beaucoup plus rapide que moi
J'ai vu effectivement que tu as rajouter un label Prix, là c'est plus clair
Le champ Total dans l'état actuel ne m'avance pas forcément. Avoir le total de toutes les commandes n'est pas forcément nécessaire dans le formulaire. En revanche si on pouvait avoir le total de la commande en fonction du nom et du prénom (par client) cela me permettrait au moment de la saisie de contrôler si je n'ai pas fait d'erreur en rentrant les commandes de chaque client.
Encore merci
 

yolojo

XLDnaute Occasionnel
Re : Besoin d'aide avec VBA

Concernant, les nom de plages, c'était surement au départ lorsque j'avais crée des noms par marque. Il ne sont plus utile maintenant.
Quand au fait que ca ne prenne que jusqu'à la cellule 589, risque de poser problème si je dois rajouter des parfums. Tu as raison, par colonne entière serait mieux.
C'est peut-être mois qui en jonglant avec les différentes version de fichier qui à modifier tes nom et leur champ d'application.
Désolé. Dois-je modifié les 5 plages de nom dans la feuille "Liste" comme cela: =Liste!$E$2:$E$ pour que cela fonctionne correctement ?
Par contre concernant UserForm.Initialize, et ListObject , je ne vois pas ce que tu veux dire
 

Discussions similaires

Réponses
8
Affichages
248

Statistiques des forums

Discussions
312 492
Messages
2 088 942
Membres
103 989
dernier inscrit
jralonso