Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1819 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Petit programme en VBA... besoin d´aide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Petit programme en VBA... besoin d´aide

n°1561813
Speedracer​33
Posté le 17-05-2007 à 23:19:11  profilanswer
 

Salut,
Je vais pas mentir, j´ai un programme VBA à faire pour un projet en cours, mais sachant que ça fait 5h au total qu´on a fait ça en cours, et que personne comprend rien, y compris moi, je vois vraiment pas comment je pourrai réaliser ce programme...
Donc si jamais quelqu´un aurait l´aimable volonté de réaliser ce programme (qui, à mon avis, ne doit vraiment pas être compliqué pour qqn s´y connaissant un tant soit peu), ce serait super.
Sinon, évidemment, vous pouvez simplement m´aider en m´indiquant quelques codes pour certains trucs demandés dans le sujet.
 
Merci d´avance aux éventuels personnes qui répondront ;)
 
Donc voici le sujet :
 
http://img243.imageshack.us/img243/3042/info1kd4.jpg
http://img84.imageshack.us/img84/5579/info2zl0.jpg
 
J´ai tout de même commencé à écrire quelques lignes en cours, mais je doute qu´elles soient correctes...
http://tmxrt.free.fr/1/VBA.xls
 
Merci d´avance ;)

mood
Publicité
Posté le 17-05-2007 à 23:19:11  profilanswer
 

n°1561867
seniorpapo​u
Posté le 18-05-2007 à 07:56:19  profilanswer
 

Bonjour,
En s'y mettant à plusieurs on doit pouvoir t'aider.
1) C'est pour quand?
2) Expliques comment ton groupe pense structurer ses données
3) D'après ton module, tes notions de VBA sont à améliorer: as-tu réfléchi sur les actions réalisées par chaque ligne?
 
par exemple:
 Nom = InputBox("Entrer le nom du client:", "SAISIE", "0" )
.
.
.
.
 Nom = Worksheets("Clients" ).Cells(3, 1).Value
 
 
a)   tu demandes le Nom par inputbox
b)   tu mets dans Nom la value qui se trouve en cells(3,1)
 
3= ligne 3            1= colonne 1
Je suppose que tu veux faire "les contraires" :
  Worksheets("Clients" ).Cells(1, 3).Value = Nom
 
Maintenant: si tu boucles sur cette séquence: tu vois bien que tu vas recouvrir toujours la même ligne!!!!
Il faudrait alors remplacer le 1  par un indice: i que tu fais progresser
Oui, mais si tu arrètes ta saisie pour la reprendre après la pause café: catastrophe, tu reprends en ligne 1!!!!! Alors il faut rechercher sur le forum la manière de chercher la dernière ligne libre, ou de remplacer une ligne si le code client existe déjà.
 
Si tu crées un formulaire, tu pourras éviter tous tes inputbox....
C'est tout pour l'instant
 
Cordialement


Message édité par seniorpapou le 18-05-2007 à 07:57:09
n°1561889
Speedracer​33
Posté le 18-05-2007 à 10:01:06  profilanswer
 

1 > Pour lundi 28 au plus tard ;)
2 > Structurer ses données, c'est à dire ? Selon la prof, il faut que nous réalisions pour chaque fonction (données clients, factures,...) des sous programmes ( Sub). Je sais pas trop si c'est de ça que tu me parlais ^^
 
3 > Depuis l'autre fois, on a eu un cours supplémentaire, du coup le fichier n'est plus à jour. Et effectivement, on a utilisé l'indice i pour passer à une nouvelle ligne. Enfaite, je pense, la partie pour la saisie des données clients à été faite ;)
Par contre, je n'ai jamais entendu parler de formulaire...
 
Je posterais le fichier lundi soir ;)
 
Merci déjà pour ces éclaircissement ! :)

n°1562025
tegu
Posté le 18-05-2007 à 13:38:22  profilanswer
 

« je n'ai jamais entendu parler de formulaire... »
Tout l'ambiguité du vocabulaire Excel à cause des tradcutions.
On parle de feuille de calcul Excel et en langage VBA c'est des objets Sheet (ou même Worksheet).
Et paradoxalement quand on regarde l'explorateur de projet (ALT-F11, puis CTRL+R), on peut explorer une arborescence permettant de voir des « feuilles » qui sont en fait des formulaires (en VBA ce sont des objets Form).

 

Si tu insères une nouvelle « feuille » tu peux alors créer des formulaires de saisie élaborés, avec des controles, ...


Message édité par tegu le 18-05-2007 à 13:38:44
n°1562297
Speedracer​33
Posté le 19-05-2007 à 08:56:51  profilanswer
 

Si je comprend bien, le formulaire se crée sous Excel simplement, et non sous le VBA ?
Si c'est bien ça, la prof ne veut pas... elle veut que tout soit fait sous forme de programme VBA.

n°1562306
seniorpapo​u
Posté le 19-05-2007 à 09:44:15  profilanswer
 

Bonjour,
http://cjoint.com/?ftjPlW0HA7
extraire les deux fichiers du zip et lancer le .htm
Juste pour donner un bref aperçu d'un formulaire en vb pour Excel
Cordialement

n°1562321
Speedracer​33
Posté le 19-05-2007 à 11:29:00  profilanswer
 

Ok, merci ;)
On a jamais vu comment créé ça, donc je pense pas que ce soit cela que la prof veuille qu'on utilise.
Mais maintenant je saurais :)

n°1562348
seniorpapo​u
Posté le 19-05-2007 à 13:25:00  profilanswer
 

Re,
Bon, restons sur les input, je suppose que les maquettes des factures etc... sont faites?
 
pour le "programme" de recherche, sous vba tapes :  Find, puis tu surlignes, puis: touche F1 tu auras les infos pour chercher l'adresse d'une valeur  
 en plaçant les deux lignes
 
        i = Range(firstaddress).Row
        j = Range(firstaddress).Column
 
au bon endroit dans l'exemple tu auras les coordonnées demandées
Cordialement


Message édité par seniorpapou le 19-05-2007 à 13:26:14
n°1562454
Speedracer​33
Posté le 19-05-2007 à 20:04:59  profilanswer
 

Oui j'ai créé les feuilles de factures ;)
Meric pour l'astuce :)

n°1562986
Speedracer​33
Posté le 21-05-2007 à 15:11:47  profilanswer
 

Bonjour,
 
Voila le fichier mis à jour : http://tmxrt.free.fr/1/ProjetInfo.xls
 
Le programme pour entrer les données clients, ainsi que les feuilles excel sont correctes selon la prof.
 
Par contre, impossible d'arriver à créer le programme pour la recherche des données clients à intégré sur la facture... D'après ce que j'ai compris, il faut utiliser du "Do While", du "If, Then, Else", mais on n'y arrive pas :/
 
Si vous pouviez m'aider sur ce point (la question 4 enfaite), ça nous aiderez beaucoup ;)
 
Merci d'avance.

mood
Publicité
Posté le 21-05-2007 à 15:11:47  profilanswer
 

n°1563195
seniorpapo​u
Posté le 21-05-2007 à 21:35:35  profilanswer
 

Bonsoir,
a) L'utilisation du find, proposée plus haut est-elle possible?
si non  
i = 2
Do While Not IsNull(Worksheets("clients" ).Cells(i, 1))
If numclient = Worksheets("clients" ).Cells(i, 1) Then
Worksheets("facture" ).Cells(1, 2).Value = Worksheets("clients" ).Cells(i, 1).Value
Worksheets("facture" ).Cells(2, 2).Value = Worksheets("clients" ).Cells(i, 2).Value
Worksheets("facture" ).Cells(3, 2).Value = Worksheets("clients" ).Cells(i, 3).Value
Worksheets("facture" ).Cells(4, 2).Value = Worksheets("clients" ).Cells(i, 4).Value
Worksheets("facture" ).Cells(5, 2).Value = Worksheets("clients" ).Cells(i, 5).Value
Worksheets("facture" ).Cells(6, 2).Value = Worksheets("clients" ).Cells(i, 6).Value
Worksheets("facture" ).Cells(7, 2).Value = Worksheets("clients" ).Cells(i, 7).Value
 Exit Do
 
Else
i = i + 1
End If
Loop
 
 
Cordialement
 
edit si c'est la question 4  : faire un programme.....
on peut  intégrer:
_____________________________________________________
Do While Not IsNull(Worksheets(nomdefeuille).Cells(i, nucol))
If numclient = Worksheets(nomdefeuille).Cells(i, nucol) Then
laligne=i
 Exit Do
 
Else
i = i + 1
End If
Loop
msgbox "pas de client...."
_______________________________________________________
dans une fonction  laligne (i as   ..., nomdefeuille as ...., nucol as ...., numclient as ...) as ....
qui ne délivre que la ligne du code cherché
 
pour chercher le i et le j dans un "range" donné, le "find" est quand même plus pratique que de mettre deux Do imbriqués. Voir plus haut


Message édité par seniorpapou le 21-05-2007 à 22:03:43
n°1563254
seniorpapo​u
Posté le 22-05-2007 à 07:21:49  profilanswer
 

Bonjour,
Je ne suis pas là de la journée, si quelqu'un peut faire avancer le schmilblik ce serait sympa.
Bien entendu: sans donner tout "tout cuit"
Cordialement


Message édité par seniorpapou le 22-05-2007 à 07:22:54
n°1563767
Speedracer​33
Posté le 23-05-2007 à 07:10:35  profilanswer
 

Bonjour :)
 
"a) L'utilisation du find, proposée plus haut est-elle possible? "
Je ne pense pas, je vais donc prendre plutot la méthode donnée en dessous ;)
 
Les lignes de Worksheets, je les ais, mais par contre y'a qqles lignes de code dont je n'ai jamasi entendu parler, donc je ne sais pas trop si je peux les utiliser, ni à quoi elles correspondent :
- (Do While) Not IsNull(Worksheets("clients" ).Cells(i, 1))
- Exit Do
 
Ainsi que les dernières phrases...  
- dans une fonction  laligne (i as   ..., nomdefeuille as ...., nucol as ...., numclient as ...) as ....
qui ne délivre que la ligne du code cherché  
- pour chercher le i et le j dans un "range" donné  
 
Si vous pouviez me détailler un peu ces lignes, merci ;)
 
Merci pour votre aide :)

n°1563784
seniorpapo​u
Posté le 23-05-2007 à 09:07:08  profilanswer
 

Bonjour,
J'ai utilisé le Do While parce qu'il est cité plus haut, ce qui implique la connaissance du "loop" qui lui est associé.
Le "Exit Do" permet de sortir de la boucle Do de façon anticipée et d'enchainer immédiatement après le Loop qui lui est associé (à noter que le msgbox que j'ai placé n'est pas correct, il faut ajouter un test sur IsNull(Worksheets("clients" ).Cells(i, 1))...)
 
J'espère que votre prof admet que vous utilisiez le help de VB pour travailler, à moins qu'elle vous donne une liste exhaustive des instructions à utiliser.
 
 
Utilisation de la fonction Isnull:
elle renvoie True si le contenu de Worksheets("clients" ).Cells(i, 1)) est nul c'est le cas pour la ligne qui n'a pas de client
et renvoie False si un code client existe.
Not isnull  nous donne le contraire donc: le Do while Not Isnull... demande l'execution de la séquence tant que l'on trouve un code client en colonne 1.
 
 
 
POur les "dernières phrases", j'avais supposé (à tord apparemment) que la connaissance de l'écriture d'une fonction ou d'un subroutine était acquise.  Il va falloir demander au prof comment introduire le "programme" du 4) sans passer par des paramètres, à moins de connaître l'utilisation des variables "public" qui ne sont pas vraiment appropriées au problème.
Cordialement  
 
 
 
   
 
 
 
 
 
 
 
 

n°1564814
Speedracer​33
Posté le 24-05-2007 à 18:38:41  profilanswer
 

Merci pour l'explication du "Exit Do"
 
On doit réaliser ce programme d'après ce qu'on est censé avoir appris... à savoir à peine 2-3 codes (du genre MSGBOX, Worksheets, Do While, If, etc, rien de plus développé...
 
Ce qui m'amène à dire qu'on a jamais vu la fonction Isnull :s Mais bon au pire on va essayer avec ça ;)
 
En tout cas, merci encore une fois ;)

n°1564825
seniorpapo​u
Posté le 24-05-2007 à 18:57:55  profilanswer
 

Bonsoir,
ceci est-il plus de niveau?
 
i = 2
Maxclient=250 'par exemple
aucun=true
 
Do While i<= maxclient+1
 
If numclient = Worksheets("clients" ).Cells(i, 1) Then  
Worksheets("facture" ).Cells(1, 2).Value = Worksheets("clients" ).Cells(i, 1).Value  
Worksheets("facture" ).Cells(2, 2).Value = Worksheets("clients" ).Cells(i, 2).Value  
Worksheets("facture" ).Cells(3, 2).Value = Worksheets("clients" ).Cells(i, 3).Value  
Worksheets("facture" ).Cells(4, 2).Value = Worksheets("clients" ).Cells(i, 4).Value  
Worksheets("facture" ).Cells(5, 2).Value = Worksheets("clients" ).Cells(i, 5).Value  
Worksheets("facture" ).Cells(6, 2).Value = Worksheets("clients" ).Cells(i, 6).Value  
Worksheets("facture" ).Cells(7, 2).Value = Worksheets("clients" ).Cells(i, 7).Value  
 aucun=false
ligneclient = i   'cela peut servir
 i=maxclient+2 'pour sortir tout de suite
Else  
i=i+1
End If  
 
Loop  
if aucun then msgbox "pas de client"
 
Cordialement


Message édité par seniorpapou le 24-05-2007 à 20:11:55
n°1564861
coolkiwi
Posté le 24-05-2007 à 20:17:20  profilanswer
 

@seniorpapou:
 
Une toute petit question sur le "do while Not Isnull" avec ce genre d'instruction je peux parcourir toutes les lignes de mon tableau jusqu'à la fin sans avoir à préciser sa taille, non?
 
Donc en gros je n'ai pas besoin de faire ça:
 
Do Until (Cells(s, 2) = "" And Cells(s + 1, 2) = "" )
s = s + 1
Loop
 
pour trouver la dernière nigne de mon tableau et rentrer "s" dans la macro qui suit, non?
 
Kiwi

n°1564900
seniorpapo​u
Posté le 24-05-2007 à 21:13:52  profilanswer
 

Bonsoir,
OUi, tu peux, mais une ligne est plus souvent utilisée pour trouver la première ligne disponible:
 
lignelibre = Sheets("Feuil1" ).Range("A65536" ).End(xlUp).Row + 1
 
Le do while.suppose qu'il n'y as pas de cellule vide dans la colonne testée (ici la colonne A de la feuill1)L'utilisation du  end(xlup) suppose que, dans la colonne testée, il n'y a pas de cellule vide pour une ligne non vide ( par exemple A10 vide et B10 non vide)
Je n'ai pas donné cette ligne de code dans ce fil puisque les connaissances sont supposées restreintes.
Cordialement
 
Edit: regarder le  End pour Excel dans help VB
Edit du Edit:    
http://jacxl.free.fr/cours_xl/cour [...] ml#der_cel
peut servir


Message édité par seniorpapou le 25-05-2007 à 07:15:11
n°1564929
Speedracer​33
Posté le 24-05-2007 à 22:48:22  profilanswer
 

@ Apparement ces lignes de codes correspondent mieux vu qu'elles n'utilisent que des codes que "je connais" ;)
 
Je pense donc qu'on pourra convenablement finir ce programme lundi, merci seniorpapou pour ta grande aide ;)

n°1565440
coolkiwi
Posté le 25-05-2007 à 19:51:46  profilanswer
 

@seniorpapou:
 
thanks a lot pour les infos ;)

n°1566445
Speedracer​33
Posté le 28-05-2007 à 23:20:07  profilanswer
 

Bon et bien finis le projet ce matin (enfin pas vraiment fini, pas eu le temps...)
On verra bien ce que ça donne...
 
Merci en tout cas ;)

n°1566503
seniorpapo​u
Posté le 29-05-2007 à 07:29:50  profilanswer
 

Comment dit-on bonne chance??
M....

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Petit programme en VBA... besoin d´aide

 

Sujets relatifs
[AIDE] Qqun peut il me creer un site sur-mesure?Besoin d'aide pour un script de DoS
Segmentation Fault : bersoin d'aide[VBA] Valeur maximale d'une sélection
Aide pour VB .Net[PHP] Petit jeu...
Gnu Scientific Library : besoin d'aide avec la génération de nombre alExecuter un programme en C via PHP
Plus de sujets relatifs à : Petit programme en VBA... besoin d´aide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR