Aide sur Projet VBA Excel

Aide sur Projet VBA Excel - VB/VBA/VBS - Programmation

Marsh Posté le 02-12-2005 à 23:56:52    

Bonjour, j'ai  un projet VBA à effectuer pour ma licence management, et je débute complètement.
Donc j'aurais aimé profiter de vos connaissances d'experts.
J'ai acheté VBA Excel pour les nuls qui m'a donné pour l'instant quelques bases, mais je butte quand même.
J'apprécierai beaucoup votre aide, si je suis pas clair je vous montrerai le sujet...
 
 
Je me suis intéressé à beaucoup de choses dans l'informatique, le HTML, les bases de données SQL (pour ma culture, sans approfondir) et j'espère qu'avec votre aide, je pourrais apprendre grâce à ce projet.

Reply

Marsh Posté le 02-12-2005 à 23:56:52   

Reply

Marsh Posté le 03-12-2005 à 01:41:33    

Par exemple là, la première saisie USEFORM marche, mais ça ne passe pas à la ligne comme je le souhaiterais...
 

Code :
  1. '   Détermine la ligne vide suivante
  2.     LigneSuivante = Range("A3" ).CurrentRegion.Rows.Count + 1
  3.      
  4. '   Transfère le nom
  5.         Cells(LigneSuivante, 1) = SaisieNom.Text


Message édité par Sachy le 03-12-2005 à 01:41:44
Reply

Marsh Posté le 03-12-2005 à 06:12:42    

bonjour,
les variantes sont nombreuses.  
Celle-ci est facile à mémoriser :

Code :
  1. i = Range("A3" ).End(xlDown).Row + 1
  2. Cells(i, 1).Select


On lui préfère souvent :

Code :
  1. i = Cells(65535, 1).End(xlUp).Row + 1
  2. Cells(i, 1).Select


A+


---------------
roger
Reply

Marsh Posté le 03-12-2005 à 10:26:33    

Salut, merci pour cette variante.
En effet, je vais retenir celles là :)
 
Je les ai rentrées, et lorsque je rentre la première fois des données ça les rentre ou il faut (dans la ligne suivante).
 
En revanche, lorsque je rentre une seconde fois des données, ça me les rentre en écrasant les premières :( (un truc dans le code doit pecher... :/ )
 
    '   Détermine la ligne vide suivante
        i = Cells(2, 1).End(xlUp).Row + 1
       
    '   Transfère le nom
        Cells(i, 1) = SaisieNom.Text
       
    '   Transfère la tranche d'âge
        If optionmoins30 Then Cells(i, 2) = "Moins de 30 ans"
        If option30_40 Then Cells(i, 2) = "30-40 ans"
        If option40_50 Then Cells(i, 2) = "40-50 ans"
        If optionplus50 Then Cells(i, 2) = "Plus de 50 ans"


Message édité par Sachy le 03-12-2005 à 10:30:20
Reply

Marsh Posté le 03-12-2005 à 11:49:58    

tu réactualises bien ton i avant chaque écriture ou tu lui ajoutes 1 ?
 
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 03-12-2005 à 12:00:01    

Euh...faut il que je mette i+1 (j'ai essayé ça ne change rien). J'ai du merder sur un truc...
 
Comment "Actualiser le i" ?
 
J'avoue que je sèche là

Reply

Marsh Posté le 03-12-2005 à 12:09:59    

Tout ce que je teste, ça me met les valeurs ou il faut mais ça ne passe pas à la ligne suivante, ça écrase les données sur la même ligne que la 1ere saisie :/

Reply

Marsh Posté le 03-12-2005 à 12:12:29    

Donne ton code en entier on y verra peut être mieux.
 
Mais normalement c'est un truc du style :
 i = Cells(2, 1).End(xlUp).Row + 1
avant chaque écriture sur la cells(i,1) par exemple.
 
ou
 i = Cells(2, 1).End(xlUp).Row + 1
'ta boucle pour ecrire à la chaine avec dedans à la fin juste avant de sortir de la boucle i=i+1
 
:)
[hs]Tu fais tes macros avec excel sous mac os ?[/hs]


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 03-12-2005 à 13:18:59    

HS: oui :)

Reply

Marsh Posté le 03-12-2005 à 13:21:08    

Apparemment maintenant ça marche pour la ligne suivante. Voici le code:
 
 

Sub OKButton_Click()
    Dim i As Long
     
'   S'assure que Feuille de Saisie est active
    Sheets("Feuille de Saisie" ).Activate
 
'   S'assure qu'un nom est entré
    If SaisieNom.Text = "" Then
        MsgBox "Vous devez entrer un nom."
        SaisieNom.SetFocus
        Exit Sub
    End If
     
    '   Saisie des revenus Mensuels:
    '   S'assure qu'un montant est entré ET qu'il s'agit bien de chiffres
    If (Saisie_RevenusMensuels.Text = "" Or Not IsNumeric(Saisie_RevenusMensuels.Text)) Then
        MsgBox "Vous devez entrer le montant des revenus mensuels en chiffres."
        Saisie_RevenusMensuels.Text = ""
        Saisie_RevenusMensuels.SetFocus
        Exit Sub
    End If
     
    '   Saisie des Charges Mensuelles:
    '   S'assure qu'un montant est entré ET qu'il s'agit bien de chiffres
    If (Saisie_ChargesMensuelles.Text = "" Or Not IsNumeric(Saisie_ChargesMensuelles.Text)) Then
        MsgBox "Vous devez entrer le montant des charges mensuelles en chiffres."
        Saisie_ChargesMensuelles.Text = ""
        Saisie_ChargesMensuelles.SetFocus
        Exit Sub
    End If
     
    '   Détermine la ligne vide suivante
        i = ActiveCell.End(xlUp).Row
       
    '   Transfère le nom
        Cells(i + 1, 1) = SaisieNom.Text
       
    '   Transfère la tranche d'âge
        If optionmoins30 Then Cells(i + 1, 2) = "Moins de 30 ans"
        If option30_40 Then Cells(i + 1, 2) = "30-40 ans"
        If option40_50 Then Cells(i + 1, 2) = "40-50 ans"
        If optionplus50 Then Cells(i + 1, 2) = "Plus de 50 ans"
     
    '   Transfère le statut marital
        If Marie Then Cells(i + 1, 3) = "Marié"
        If Divorce Then Cells(i + 1, 3) = "Divorcé"
        If Celibataire Then Cells(i + 1, 3) = "Célibataire"
        If VieMaritale Then Cells(i + 1, 3) = "Vie Martiale"
         
    '   Transfère le statut marital
        If CDDCourt Then Cells(i + 1, 4) = "CDD Court"
        If CDDLong Then Cells(i + 1, 4) = "CDD Long"
        If CDI Then Cells(i + 1, 4) = "CDI"
        If Fonctionnaire Then Cells(i + 1, 4) = "Fonctionnaire"
     
    '   Transfère le montant des revenus mensuels
        Cells(i + 1, 5) = Val(Saisie_RevenusMensuels.Text)
         
    '   Transfère le montant des revenus mensuels
        Cells(i + 1, 6) = Val(Saisie_ChargesMensuelles.Text)
         
        '   Vide les contrôles de la fenetre pour la prochaine entrée
        SaisieNom.Text = ""
        Saisie_RevenusMensuels.Text = ""
        Saisie_ChargesMensuelles.Text = ""
        optionmoins30.Value = False
        option30_40.Value = False
        option40_50.Value = False
        optionplus50.Value = False
        Marie.Value = False
        Divorce.Value = False
        Celibataire.Value = False
        VieMaritale.Value = False
        CDDCourt.Value = False
        CDDLong.Value = False
        CDI.Value = False
        Fonctionnaire.Value = False
     
    '   Met le curseur dans la zone de saisie du nom
        SaisieNom.SetFocus
         
        Cells(i + 2, 1).Select
 
End Sub


Message édité par Sachy le 03-12-2005 à 16:19:40
Reply

Marsh Posté le 03-12-2005 à 13:21:08   

Reply

Marsh Posté le 03-12-2005 à 16:17:26    

Et voici ce qu'on me demande pour commencer:  

Citation :

Première évaluation des chances du client d'obtenir un prêt bancaire
Lors de la première visite d'un emprunteur potentiel, le courtier souhaite pouvoir savoir rapidement si ce client serait systématiquement accepté par la plupart des banques (catégorie "OK" ), s'il serait systématiquement refusé (catégorie "REFUSE" ), ou s'il convient de vérifier plus en détail les données (catégorie "A VERIFIER" ). Le courtier cherche donc à classer le client dans une de ces trois catégories. La plupart des banques ont en effet des critères pour classer les emprunteurs en évaluant le risque correspondant.
 
Les classes sont fonction de données relativement stables comme : l'age la situation maritale le type de contrat de travail (CDI, CDD court, CDD long, fonctionnaire …)  le montant des revenus mensuels le montant des charges mensuelles etc.  
Vous proposerez un outil qui permettra de saisir les données de l'emprunteur et d'afficher la catégorie à laquelle il appartient, en s'appuyant sur les critères habituellement utilisés par les banques.
 
Le premier critère va concerner la capacité de remboursement de l'emprunteur : si les charges mensuelles dépassent 65% du revenu mensuel, l'emprunteur potentiel est automatiquement classé "REFUSE". Dans les autres cas, on continue l'évaluation des données de l'emprunteur. Les autres critères vont permettre d'établir une notation qui permettra de classer l'emprunteur :
-le type de contrat de travail un CDD court correspond à une note égale à 1, un CDD long à 2, un CDI à 4, un fonctionnaire à 6
-l'âge, par tranche : >50 correspond à une note égale à 1, 40-50 à 2, 30-40 à 3, <30 à 5  
-la situation familiale : la situation marié donne une note égale à 3, vie maritale à 2, célibataire et divorcé à 1.
 
Ces critères n'ont pas le même poids : le type de contrat de travail représente 40% de la note finale, l'âge 35% et la situation familiale 25%.  
 
Une note inférieure à 1,8 classe dans la catégorie "REFUSE", entre 1,8 et 2,9 dans la catégorie "A VERIFIER", et au-dessus de 2,9 dans "OK".
 
 
1) L'outil doit permettre la saisie aisée des informations nécessaires à l'évaluation, puis l'affichage du résultat (catégorie à laquelle appartient l'emprunteur potentiel).  
2) Une fois cette première vérification faite, le courtier peut vouloir intégrer automatiquement les données de cet emprunteur potentiel dans la table CLIENTS (stockée dans les classeur) . Vous lui proposerez cette possibilité.  


 
 :cry:


Message édité par Sachy le 03-12-2005 à 16:21:17
Reply

Marsh Posté le 03-12-2005 à 16:30:05    

Tu serais pas à l'IAE de Toulouse toi? :D
 
Plus sérieusement, si j'ai un conseil à te donner, c'est de bien relire les consignes générales et plus particulièrement ce passage :
 

Citation :

Vous privilégierez l'utilisation des fonctionnalités d'Excel à la ré-écriture complète de macros. Vous préfererez donc l'enregistrement de macros, avec modifications ultérieures pour rendre les macros généralistes.


 
Pour moi, ça veut clairement dire que ton projet est avant tout sur Excel et doit utiliser plus les formules d'Excel (type recherchev, equiv, index etc...) que les macros, donc pas besoin de tout programmer.
 
En plus quand elle dit:

Citation :

Vous proposerez des outils conviviaux...


 
Ca peut tout simplement être des cellules à remplir et des cases à cocher ;)
 
Voici un exemple de ce que j'ai fait (je devrais pas te le montrer mais bon :whistle: ):
 
http://img386.imageshack.us/img386/654/exemple6dm.th.jpg
 
Même si c'est destiné à un "décideur non-spécialiste d'Excel", il faudrait être crétin pour pas savoir remplir les champs en jaune et cocher des cases :D
 
Et pour en revenir à tes macros, tu vas rigoler non seulement quand il va falloir prendre en compte les 17246 lignes du tableau de la liste des tarifs mais aussi lors de la soutenance... ;)
 
Bon courage :hello:  
 
Nico (filière MSTCF)


---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le 03-12-2005 à 17:14:36    

Non pas du tout  :whistle:  
 
Enchanté :jap:
 
Ok merci, tout ce que j'ai fait pour le moment j'ai saisi sous l'éditeur VBA mais je vais utiliser Excel alors.
 
C'est dommage ça aurait été plus intéressant de coder en VBA mais vu que je sais pas :D
 
Merci pour l'exemple, t'inquiètes pas je vais pas te le copier :D
 
Sinon je trouve que c'est plus facile de justifier le code qu'on a écrit que celui généré par Excel mais bon...
 
En tout cas merci je vais voir ça... Tu as déja fini toi apparemment !!!?
 
Sachy, MSG :jap:


Message édité par Sachy le 03-12-2005 à 17:25:37
Reply

Marsh Posté le 03-12-2005 à 17:31:12    

Non loin de là !!!! :D  
 
Mais j'ai fini la 1ère étape de la 1ère question. La 2nde partie est déjà bien plus galère... mais j'ai fini par trouver la solution. :sweat:  
 
Pour ce qui est de la justification du code, t'as pas besoin de justifier celui sous Excel ;)
 
Mais comme je l'ai dit, ce n'est qu'une interprétation, il se peut que je me trompe (auquel cas j'ai tout à recommencer :cry: ). Je demanderai confirmation à la prof dès que je la vois. Peux-tu faire de même et me dire ici si c'est bien ce que j'ai compris?
 

Citation :

C'est dommage ça aurait été plus intéressant de coder en VBA mais vu que je sais pas :D


 
En même temps si tu ne codes QUE sous VB, c'est un logiciel que tu vas faire, pas un classeur Excel :D


---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le 03-12-2005 à 17:42:33    

Ok pas de souci :)
 
Dis moi, tu as exploité le fichier MDB ? Sous Mac je vois pas trop avec quoi l'ouvrir :/
 
Dernière chose, tu te mets en mode "enregistrement macro" pour tout ce que tu fais, ou juste quand tu utilises des fonctions ?

Reply

Marsh Posté le 03-12-2005 à 20:02:09    

Alors pour la base de données, j'ai demandé à la prof lors du dernier cours d'info. En fait elle ne sert que pour bien expliquer ce qu'elle a mis dans le fichier CourtageQ1.xls (celui qui fait 5Mo et quelques, avec les 17426 lignes :D )
 
Mais t'as pas à t'en servir.
 
Pour les macros en fait, je sais pas si tu as bien compris le principe. Une macro c'est une suite de commande qui, soit répète ce que tu as fait sous Excel pendant l'enregistrement (exemple: tu lances l'enregistrement, tu sélectionnes tout ton document, tu fais "Edition" -> "Effacer" -> "Tout", tu arrêtes l'enregistrement et tu mets en raccourci Ctrl+e; en un raccourci clavier tu as ta page vierge, ce qui est plus rapide qu'à la souris), soit te donne les moyens d'appliquer des fonctions (par exemple une recherche multi-critères, en imbriquant des "If" ) que tu ne trouverais pas dans les simples fonctions excel.
 
Donc je n'utilise des macros que quand c'est nécessaire: dans l'image que j'ai donné, il y a un bouton "Enregistrer données". Ce bouton permet la sélection de tous les champs et de les enregistrer dans un tableau d'une autre feuille en un simple clic; c'est le côté "convivial".
 
Dans la 2nde partie, j'utilise une macro pour faire une recherche multi-critères, pour dénombrer les contacts commerciaux d'un client car il n'existe pas de fonction Excel te permettant d'avoir pour critère à la fois le n° de client et le type de contact.
 
Voilà :hello:


---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le 03-12-2005 à 20:16:26    

Nico-Rep a écrit :


Pour les macros en fait, je sais pas si tu as bien compris le principe.


Je te rassure, ça parait peut etre pas mais j'ai compris le principe  :whistle:  
 [:bricolo]


Message édité par Sachy le 03-12-2005 à 20:19:52
Reply

Marsh Posté le 03-12-2005 à 20:19:10    

Nico-Rep a écrit :


Donc je n'utilise des macros que quand c'est nécessaire: dans l'image que j'ai donné, il y a un bouton "Enregistrer données". Ce bouton permet la sélection de tous les champs et de les enregistrer dans un tableau d'une autre feuille en un simple clic; c'est le côté "convivial".


Yes j'avais imaginé que c'était ça :)
Merci beaucoup pour ces précisions et bon courage à toi
:hello:

Reply

Marsh Posté le 04-12-2005 à 11:39:27    

Merci à toi aussi ;)
 
Si jamais tu as besoin d'aide, poste ici, je pourrai te donner quelques pistes... :whistle:


---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le 05-12-2005 à 10:38:09    

Je te remercie, je risque d'en avoir besoin en plus...
Je trime :D
J'attend d'avoir des pistes, j'ai TD cet aprèm  :whistle:  
En tout cas merci et il se peut que je te sollicite  [:yaisse2v]  
J'ai touché à pas mal de trucs mais VBA (et Excel à moindre mesure), c'est pas ma spécialité on va dire [:aloy]  
(enfin pour l'épreuve de "décodage" de code VBA ça ira je pense...j'ai "VBA pour les nuls" :D)


Message édité par Sachy le 05-12-2005 à 10:38:36
Reply

Marsh Posté le 05-12-2005 à 23:40:07    

Surtout garde tout le temps à l'esprit que tu n'as besoin que de ce qu'il y a dans le cahier de TD ;)
 
Moi j'avais pas compris au début... résultat, 3h de perdu :sweat:


---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le 08-12-2005 à 08:15:34    

Effectivement c'est très bon à savoir!
 
Moi aussi j'ai perdu 3h par ci par là  :sweat:  :cry:  
 
Je trouve qu'ils ont abusé de nous donner le projet seulement maintenant... Les bons esprits qui auraient voulu s'avancer n'ont pas pu... [:aloy]

Reply

Marsh Posté le 08-12-2005 à 17:54:21    

Ouep clair... mais bon ça a l'air d'être l'organisation générale qui foire :lol:


---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le 08-12-2005 à 17:56:06    

Et pour info, c'est bien ce à quoi je pensais. La prof trouve que des inputbox de partout, c'est beaucoup trop lourd, donc elle conseille de simplement proposer à l'utilisateur de rentrer les données directement sur la feuille. ;)


---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le 09-12-2005 à 23:52:16    

Ah oué ? Bonne info...
Donc ça revient à être un projet Excel + une soutenance de comprehension de code VBA :p
 
Sinon moi j'ai fait un USERFORM pour le pack AGE/RISQUE PROFESSION, je le laisse ça me ferait mal au coeur de le jeter :d
 
PS: droit des sociétés: C'EST FAIT  [:shiryu]   :sol:


Message édité par Sachy le 09-12-2005 à 23:53:22
Reply

Marsh Posté le 10-12-2005 à 14:29:28    

En tout cas ça foire entre leur version d'excel et la version 2003-2004 :/
 
Pour la partie 2, l'outil permettant de donner le meilleur pack selon l'age et le risque profession, tu as fait un TCD, un tri?

Reply

Marsh Posté le 10-12-2005 à 18:48:17    

No, il faut utiliser les filtres élaborés ;)
 
Quant à la compatibilité, il faut que tu prévoies le coup. Si tu disposes d'un portable, tu peux présenter ton projet sous Excel 2003. Sinon, il faut que tu l'enregistres au format 97 ou 2000 (possible quand tu fais "enregistrer sous", tu sélectionnes le format 97 dans le type de fichier).


---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le 11-12-2005 à 22:46:48    

Yes la prof nous en a parlé, je présenterai avec mon ibook car j'ai subi les incompatibilités entre excel de l'IAE et excel 2003...
 
Sinon pour le Filtre élaboré:
 
Il faut faire un truc qui filtre selon Age+risque profession, puis dans les lignes filtrées on sélectionne le pack le plus bas?
 
Je suis resté le weekend sur cette question et dans mon groupe c'est le cas pour tout le monde :/ J'avoue que je suis peut être mauvais mais j'en ai un peu marre de "perdre" mon temps :(

Reply

Marsh Posté le 13-12-2005 à 16:37:04    

salut sachy, c pierrick!
on se galère aussi, est ce que quelqun pourrait nous aider a propos du la prmière partie de la question1.2 (et le reste aussi) SVP ?

Reply

Marsh Posté le 13-12-2005 à 21:34:32    

Tiens voila un nouveau renfort de licence management :D
 
Dis donc la dernière fois qu'on a joué contre Lorient, on a gagné 4-1 aussi...
 
Donc les merlus...

Reply

Marsh Posté le 13-12-2005 à 21:35:13    

On est un peu des brêles parce que le Nico-Rep de Compta Controle, il a déja bouclé le second semestre !!! :D

Reply

Marsh Posté le 14-12-2005 à 08:32:36    

Je t'avoue que je n'ai pas encore fait la partie sur la construction du pack. Mais j'ai fait la partie sur l'analyse de la clientèle, qui fonctionne sur le même principe (retrouver UN type d'évènement pour UN client = recherche multi-critère).
 
L'idée étant que les listes extraites des filtres élaborés ne le soient pas sur la liste originelle (les 17251 lignes). Mais je vais y plancher ce matin ;)


---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed