Aide pour VBA sous Excel

Aide pour VBA sous Excel - VB/VBA/VBS - Programmation

Marsh Posté le 04-09-2007 à 18:50:00    

Bonjour,
 
Je viens tout juste de commencer un stage en programmation VBA sous excel mais malheureusement pour moi je galère un petit peu...  :sweat:  
Je viens donc pour poster mes différentes questions, j'espère que vous pourrez m'aider, car malheureusement pour vous je vais beaucoup vous solliciter.
On ferra étape par étage, je vais commencer mais vous expliquer le sujet de mon stage:
Dans un premier temps je dois faire des modifs sur 2 fichiers excel afin de les rendre plus maniables.
Dans un deuxieme temps je dois faire une liaison entre mes 2 fichiers excel et un ficher word
Mais pour le moment j'ai pas mal de modif a faire sur les fichers excel!  
 
Mes 2 fichiers excel :)
Le premier est un "bon de commande", je dois pour y ajouter la date d'aujourd'hui si le fichier est un nouveau fichier. (Mon premier probleme :s)
j'ai fait une fonction qui lors de l'ouverture de mon fichier, si celui ci est l'original ("offres.xls" ), je mets la date dans plusieurs cellules  

Citation :


Private Sub Workbook_Open()
    If ActiveWorkbook.Name = "offres.xls" Then
    Today = "=AUJOURDHUI()"
    Worksheets("offre" ).Range("C12,E12" ).Value = Today
    Worksheets("offre" ).Range("D13" ).Formula = Today
    End If
End Sub


 
Quand j'ouvre alors mon ficher la date ne s'affiche pourtant pas!  
 
C'est un de mes nombreux problemes, j'espere que vous pourrez m'aider, merci d'avance
 
Aurore

Reply

Marsh Posté le 04-09-2007 à 18:50:00   

Reply

Marsh Posté le 04-09-2007 à 21:42:26    

Première chose à apprendre : comment deboguer une macro ou un programme VBA.
F8 te permet de lancer ton programme en mode pas à pas.
Sais-tu poser des points d'arret ?
Là tu pourras visualiser les valeurs de tes variables et comprendre pourquoi (peut-être) l'exécution ne passe pas dans ton If.
 

Reply

Marsh Posté le 24-09-2007 à 10:21:31    

Salut,
 
je profite de l'existence de ce topic, pour poser une question de gros noob du VBA...  :D  
 
J'ai une boucle dans ma macro, basée sur un compteur, et je souhaiterai que pour une valeur donnée de ce compteur, le contenu de la boucle soit zappé (passage à l'itération suivante).
 
J'ai essayé de sauter le contenu de la boucle, à l'aide d'un "Goto" qui renverrai à la fin de la boucle, mais le mot clé "continue" n'a pas l'air d'etre reconnu...
 
Exemple :
 

Code :
  1. For compteur = 1 To 10
  2. If (compteur = 3) Then
  3. GoTo 999
  4. End If
  5. (opérations réalisées)
  6. 999 continue
  7. Next compteur


 
le mot clé "continue" n'existe-t-il pas en VBA ?
ou alors c'est mon label "999" qui n'est pas réglementaire ?  :??:  
 
Merci d'avance pour toute info/solution.


---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 24-09-2007 à 10:27:23    

horreur, pas de goto à tort et à travers stp ! :o
pour "zapper" ta valeur tu mets juste un  

Code :
  1. if i<>3 then
  2. instructions
  3. end if

Reply

Marsh Posté le 24-09-2007 à 10:44:54    

Si je comprend bien, le "<>" équivaut à "différent".
 
L'ennui c'est que je réalise un certain nombre de tests, à base de boucles If, et selon les valeurs de mon compteur (qui va de 2 à 65 en réalité), je réalise telles ou telles instructions.
Pour plus de clarté, je souhaiterai donc que le test basé sur le chiffre à zapper, précède les instructions et ne les englobe pas (je sais pas si je suis très clair...).
 
Un truc du style :

Code :
  1. For compteur = 1 To 10
  2. If (compteur = 3) Then
  3. Quit
  4. End If
  5. (opérations réalisées habituellement de 1 à 10, sauf pour 3)
  6. Next compteur


 
Sauf que je ne veux pas quitter la boucle du compteur, mais passer directement à l'itération suivante.
Peut être puis-je feinter, en mettant "compteur = compteur + 1" ou bien "Next compteur" à la place de "Quit" ?
Mais je me demande si cela ne perturberai pas la boucle globale...


---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 24-09-2007 à 10:58:18    

d'une manière générale, et j'en connais bcp qui le rabache dès qu'ils en ont l'occasion, ne pas utiliser de sortie sauvage par un quit, end ou tout autre façon de faire la même chose. Si tu fais cela, c'est qu'il n'y a pas d'autre alternative, et que ton algorithme de base n'est pas le meilleur possible.
si tu testes différentes valeurs, je recommande un select case compteur, là au moins tu traites exactement ce que tu veux, quitte à passer par une fonction générique dans laquelle tu passes l'indice compteur en paramètre.
 

Reply

Marsh Posté le 24-09-2007 à 11:16:29    

Merci pour ces précisions, mais étant complètement débutant en VBA, et souhaitant simplement tracer une comparaison d'une soixantaine de courbes réparties sur 2 feuilles EXCEL (mais dont les colonnes sont parfois décallées, voire inexistantes), je ne pense pas prendre le temps de m'immerger aussi profondément dans le sujet...
 
Je vais donc utiliser la solution que tu as évoquée plus haut, même si j'aurai préféré un test à part, qui n'englobe pas les instructions de traçage. J'aurai ainsi eu mes différents tests regroupés avant les instructions, ce que je trouve plus propre (je suis un poil maniaque, j'avoue  :D ).
 
Merci pour les infos en tout cas !


---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Sujets relatifs:

Leave a Replay

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