Problème de syntaxe

Résolu
Hystic Messages postés 10 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 7 juin 2014 - 6 juin 2008 à 13:12
Hystic Messages postés 10 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 7 juin 2014 - 9 juin 2008 à 10:09
Bonjour,

Je fais actuellement un stage et on m'a demandé de modifier un programme afin de lui ajouter des fonctionalité et plein d'autres truc
Le hic c'est que c'est un programme ne Visual Basic sous microsoft Acces et je n'ai jamais utilisé ce langage bien qu'il ressemble au java que j'ai expérimenté.
Ca fait maintenant 2 jours que je comprend le programme cependant il subsite quelques lignes de codes qui sont flou...
Donc je fais appel à vous pour comprendre les syntaxes des lignes de codes suivantes :

- If Me.elementmachine <> "" Then

- ra = rst1!datemax

- .WindowState = wdWindowStateMaximize

- Dim sSQL As String

-   Set objrange = appwd.Selection.Range
    objrange.SetRange Start:=objrange.Start - 32, End:=objrange.End - 34
    an = objrange

- SendKeys "%ls", True
  SendKeys "\" & modele & "-t", True
  SendKeys "~", True
  SendKeys "%la", True
  SendKeys "%lv", True

- Set rst = DB.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)

-   Dim lHwnd As Long
     lHwnd = FindWindow(vbNullString, "Event Viewer - Application Log on \" & modele & "-T")
 
     If lHwnd = 0 Then
         MsgBox "Titre non-trouvé!!!"
     Else
         Call SendMessage(lHwnd, WM_CLOSE, HTCAPTION, ByVal 0&)
     End If

-   If coderror Like "12012155" Then
    numelem = Right(Element, 1)
    coderror = coderror + numelem
    End If

- Dim MaLigne As Variant
   MaLigne = xlapp.Range("A2").End(xlDown).Address
   MaLigne = xlapp.Range(MaLigne).Row


For j = k To MaLigne
    monfichier = xlapp.Cells(j, 1).Value
    If monfichier = vide Then
    GoTo line5

Merci d'avance de vos réponses ;-)

3 réponses

lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
6 juin 2008 à 13:22
Bonjour,

Je vais essayer de t'éclairer sur une partie...

- ra = rst1!datemax --> ra prends la valeur de datemax contenu dans le recordset rst1

- .WindowState = wdWindowStateMaximize --> la fenêtre à l'affichage est au maximun

- Dim sSQL As String   --> Déclaration de variable de type chaîne de caractères

- Set rst = DB.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly) --> Configuration d'un recordset par le contenu d'une base de données que l'on ouvre au travers les paramètres (sSQL, dbOpenForwardOnly, dbReadOnly)

Voila sur les quelques éléments sur lesquels je peux t'aider... Vba je pratique plus depuis trop longtemps même si on retrouve du vb dedans je ne suis pas capable de tout t'expliquer...
Bon courage

S.L.B.
<hr />*********************************************************************************
Même si l'orthogr
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
6 juin 2008 à 14:32
- If Me.elementmachine <> "" Then
=> Il doit y avoir un objet nommé elementmachine sur ton formulaire, et la condition vérifie que ce qui est affiché/sélectionné dans cet objet (ça peut être un label, une zone de texte, une combobox ou une listbox) n'est pas vide.

SendKeys "%ls", True
  SendKeys "\" & modele & "-t", True
  SendKeys "~", True
  SendKeys "%la", True
  SendKeys "%lv", True
=> Sendkeys correspond en fait à l'appui sur une touche du clavier. Tu as toute l'aide dans Accès (clique sur le mot Sendkeys et fait F1)

Dim MaLigne As Variant
   MaLigne = xlapp.Range("A2").End(xlDown).Address   MaLigne xlapp.Range(MaLigne).Row> Définition d'une variable de type variant.
Ton appli ACCESS travaille sur un fichier Excel (de l'automation). Tu as sans doute quelque part dans ton code un Set xlapp = ... qui te dira le nom du classeur et de la feuille sur laquelle tu travailles.
Sur cette feuille, le code va chercher la dernière ligne remplie de la colonne A et l'enregistre dans la variable MaLigne (basiquement, ce code revient à cliquer dans une feuille Excel, dans la cellule A2, et de faire ctrl+flèche bas)
Au passage, la variable MaLigne doit pouvoir être déclarée en integer.

For j = k To MaLigne
    monfichier = xlapp.Cells(j, 1).Value
    If monfichier = vide Then
    GoTo line5
=> Crée une boucle allant de la valeur contenue dans la variable k à la valeur contenue dans la variable maLigne.
A chaque itération de la boucle, la variable monfichier prend pour valeur le contenu de la cellule Excel ayant pour référence la ligne j et la colonne 1
(Traduit : Si ta boucle va de 2 à 10, la variable monfichier contiendra le contenu de la cellule A2, puis A3, puis A4, ... jusqu'à A10).
La condition vérifie que le contenu de la variable, et si elle est vide, le code t'envoit vers l'étique appellée ligne5 (et ayant la syntaxe line: quelque part dans ton code).

Accessoirement, Mettre le contenu d'une cellule dans une variable, pour ensuite vérifier qu'elle est vide, on peut sauter l'étape variable. Et éviter dès qu'on le peut d'utiliser des goto. Il y a sûrement bien mieux à faire.

Molenn
Hystic Messages postés 10 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 7 juin 2014
9 juin 2008 à 10:09
Merci je comprends mieux une partie du code ;-)
Rejoignez-nous