Création d'un devis sur base VBA

Bonjour à tous,

Pour mon boulot, j'aimerais créer un petit programme VBA pour créer des devis automatiques en fonction de mes besoins.

Pour se faire j'ai créé des formulaires VBA ou on peut cocher via des checkbox les différentes "activités" qu'il faut faire. J'aimerais qu'une fois avoir coché ce dont on a besoin, une feuille excel s'ouvre (après avoir appuyé sur "création de devis") et cré un devis avec uniquement les informations des cases que j'ai coché. (dans le but d'optimiser ma feuille )

J'aimerais donc savoir comment assigner une checkbox a une certaine procédure qui afficherait un tableau de devis par exemple.

Ci-joint le fichier que j'ai déjà pu réaliser pour vous montrer de quoi je veux parler. Sur la feuille 1 j'ai créé l'allure que j'aimerais avoir pour mon devis.

J'ai essayé quelques trucs mais je suis novice et dois encore bcp apprendre sur VBA.

Bien à vous,

133devis2.xlsm (22.26 Ko)

je vous joins un exemple simplifier qui vous permettra sans doute de comprendre

je vous conseille de mieux nommer vos objets

exemple : au lieu de cb1 mettre cb_fenetre

quand vous programmer en tapant "me.cb" apparaitre en clair le nom de l'objet souhaité

renommer vos objets

si vous n'y arriverai pas je pourrai regardé à partir de mercredi de la semaine prochaine

134devis.xlsm (23.61 Ko)

Merci beaucoup pour votre exemple c'est déjà une bonne base sur laquelle je peux m'inspirer !

J'essaie d'améliorer ma version et je reviens vers vous si j'ai encore des questions (si ca ne vous dérange pas!)

Bien à vous

k

bonjour

je viens de modifier ma programmation

plus simple au niveau de la mise en page du devis

j'ai essayer de commenter le code pour que vous puissiez poursuivre (voir fichier joint)

je suis toujours prêt à vous aider

74devis.xlsm (25.27 Ko)

Bonjour,

j'ai un peu avancé sur le programme sur base du premier exemple que vous m'avez donné. je suis en train de mettre en place le "corps du devis", merci beaucoup pour votre aide!

Je vais aussi devoir me pencher sur l'esthetique du devis (mise en couleur, changement de police, taille des cellules, etc...)

voici le fichier

66devis2a.xlsm (38.29 Ko)

vous devriez regarder ma dernière version elle permet une programmation plus simple

en ce qui concerne la taille, la couleur (police, fond de cellule), il est plus simple de réaliser des procédures que l'on appelle cela allège le programme

voir fichier ci-joint

54couleur-police.xlsm (24.02 Ko)

Merci pour le petit exemple, j'allégerai mon programme qd tout sera clair dans ma tete !

Ok pour le couleurs, je vais essayer de créer les procédures qui se déclenchent quand j'appui sur le bouton "créer devis"

je vous tiens au courant de mon avancement.

Bien à vous,

Bonjour,

Voilà ce que j'ai pu réaliser, bon j'admets le code est un peu imbuvable mais on fait avec ce qu'on peut.

Pour l'instant, il n'y a que la partie "façades" qui est réalisé. Je compte faire le reste

Si vous avez des conseils, hesitez pas.

54devisjl.xlsm (95.97 Ko)

attention le fichier joint ne fonctionne pas, garder le votre

aller lire le module mod_correction que j'ai ajouté

vous pouvez supprimer de nombreux if, ce qui rendra plus clair la programmation

en tenir compte pour la suite

ce qui est fait est tout à fait correcte

d'accord merci j'optimiserai mon programme.

Une question plus pratique maintenant:

j'aimerais créer une cellule ou il y aurait à l'intérieur une multiplication de 2 termes:

l'un est une valeur reprise dans une autre feuille excel, pour celle ci, je sais que je peux reprendre la valeur d'une autre feuille en appliquant cette formule :

Worksheets("nomdelafeuille").Cells(x, y).Value

l'autre est un coefficient que je choisirai après avoir crée ma feuille de devis (et donc après avoir cliqué sur "créer le devis"

Donc j'aimerais qu'après avoir créé mon devis, il y ait dans ma cellule la formule de la multiplication de ces deux éléments, et non pas simplement la réponse.

Je sais pas si je me fais comprendre, je m'exprime pas très bien je suis un peu fatigué ^^

utilise la fonction adresse

=ADRESSE(1;1;4;1;"F1") & "*" & ADRESSE(1;1;4;1;"F1") & " ="& A1*B1

en espérant que cela te convienne

je comprends pas vraiment ta formule,

je veux rentrer cette formule dans vba pour que quand j'appuie sur "créé mon devis" il y a dans ma cellule en question ,la formule qui multiplie la valeur d'une cellule d'une autre feuille et mon coefficient que je détermine par après (situé dans une cellule juste a coté)


en gros, j'ai ca:

If Me.cb_fdemolition3.Value = True Then

devis.Cells(ligne, 4) = "démolition 3cm"

devis.Cells(ligne, 9) = Worksheets("recap").Cells(36, 8).Value

ligne = ligne + 1

End If

je veux que dans mon devis.cells(ligne,9)="Worksheets("recap").Cells(36, 8).Value * cells (ligne,8) "

mais vu qu'il y a des guillements, ca me met dans la cellule l'information telle quelle. (MAIS je veux avoir la formule marqué dans ma cellule)

je sais pas si c'est plus clair maintenant

la formule que j'ai indiqué est à mettre dans une cellule, mais pas dans le code vba (je n'avais pas bien compris votre demande)

envoyé moi à nouveau votre fichier en donnant le maximum d'explication

Merci de prendre du temps pour m'aider

Alors récapitulons:

Je prends l'exemple de ma ligne "demolition des bétons-3cm" dans ma feuille "devis". Dans la colonne "norme" (colonne 9) j'ai une valeur que je prends d'une autre feuille (la feuille "recap",colonne 8) via VBA comme ceci:

devis.Cells(ligne, 21) = Worksheets("recap").Cells(29, 20).Value

J'aimerais enfait que cette cellule fasse une multiplication (et mette la formule sur la cellule une fois le devis créé) avec la valeur trouvée plus haut et un coefficient qu'on peut changer par la suite sur devis.cells(ligne,20) par exemple (la cellule juste a gauche)

Mais vu que le coefficient doit etre une variable (depend de la ligne dans laquelle on se trouve), on ne peut pas juste marquer ="B13*H12" ou quelque chose du genre

Voici le fichier


ok ne fais pas attention aux valeurs des colonnes/lignes que je t'ai donné jme suis trompé

enfin j'espère que t'as compris le principe

67devisjl.xlsm (142.54 Ko)

si tu comprends tjr pas jte réexpliquerai mieux demain

Donc:

je veux que quand je créé mon devis, il y ait une cellule dans mon devis ou a l'intérieur de celle-ci il y ait la formule d'une multiplication entre un coefficient que je peux changer quand je veux sur ma feuille excel et une valeur fixe qui se trouve sur une autre feuille.

j'ai essayé quelque chose du genre ca:

devis.cells(ligne,x).formula="nomdelafeuille!H27*" & devis.cells(ligne,x-1)

Donc je veux que mon programme créé une cellule (devis.cells(ligne,x)= valeur fixe situé dans une autre feuille * valeur qui peut changer suivant ce que l'on entre dans la cellule devis.cells(ligne,x-1)

et je voudrais que devis.cells(ligne,x-1) soit une cellule référencié genre H17 ou B15 (donc qu'on puisse changer la valeur du coefficient quand on le souhaite


Bon je parle tout seul mais c'est bon j'ai trouvé:

devis.Cells(ligne, 9).Formula = "=" & "H" & ligne & "*recap!H27"

voila voila, désolé pour ces pavés

"Donc je veux que mon programme créé une cellule (devis.cells(ligne,x)= valeur fixe situé dans une autre feuille * valeur qui peut changer suivant ce que l'on entre dans la cellule devis.cells(ligne,x-1)

et je voudrais que devis.cells(ligne,x-1) soit une cellule référencié genre H17 ou B15 (donc qu'on puisse changer la valeur du coefficient quand on le souhaite"

ce que je ne comprends pas :

devis.cells(ligne,x-1) est une partie d' instruction du code VBA, ce n'est pas une cellule

essaye de me créer un fichier où il n'y a que ce problème avec le résultat souhaité

ce qui m'intéresse c'est que je vois sur une feuille excel le résultat avec des commentaires

Je reviens ici pour une petite question. Ma procédure est trop grande donc impossible de lancer mon programme. En effet, j'ai beaucoup de textes qui se répètent.

par exemple je dois specifier ce code pas mal de fois:

devis.Cells(ligne, 13).Formula = "=sum(" & "M" & ligne + 1 & ":M" & ligne + 3 & ")"

devis.Cells(ligne, 11).Formula = "=sum(" & "K" & ligne + 1 & ":K" & ligne + 3 & ")"

devis.Cells(ligne, 18).Formula = "=sum(" & "R" & ligne + 1 & ":R" & ligne + 3 & ")"

devis.Cells(ligne, 22).Formula = "=sum(" & "V" & ligne + 1 & ":V" & ligne + 3 & ")"

devis.Cells(ligne, 25).Formula = "=sum(" & "Y" & ligne + 1 & ":Y" & ligne + 3 & ")"

ne serait-ce pas possible de créer une variable dont la valeur serait ce code au dessus. Comme ca à chaque fois que j'ai besoin de ces lignes, j'ai juste à taper la variable

Merci d'avance

Rechercher des sujets similaires à "creation devis base vba"