IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Traduction d'un script PHP en VBA ?


Sujet :

VBA Access

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Par défaut Traduction d'un script PHP en VBA ?
    Bonjour,

    J'essaye de traduire ce script PHP en VBA mais j'ai du mal.
    Pourriez vous m'aider ?

    Merci beaucouuuup !

    François


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function affiche_chemin_fer($idpage) {
    $chemin_complet = "";
     
    if ($idpage != 0) {
    // on récupère les informations de la page en cours dans la DB
    $strSQL = 'SELECT `Titre`, `Id_parent` FROM `pages` WHERE `Id_page` = '.$idpage;
    $resultat = requete_SQL($strSQL);
    $tabl_result = mysql_fetch_array($resultat);
     
    $titrepage = $tabl_result['Titre'];
    $idparent = $tabl_result['Id_parent'];
     
    // création du lien vers la page en cours
    $chemin_page_en_cours = ' -> <a href="index.php?id_page='.$idpage.'">'.$titrepage.'</a>';
     
    // Concaténation du lien de la page N-1 et
    // du lien de la page en cours
    $chemin_complet = affiche_chemin_fer($idparent).$chemin_page_en_cours;
    }
    // renvoie le chemin complet
    return $chemin_complet;
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    bonsoir,
    sur quel aspect de la traduction rencontres-tu des soucis ?

    qu'as-tu déjà "traduit" en VBA ici ?

    Le mode de fonctionnement n'est pas "faites à ma place", mais "aidez moi svp à faire"
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Par défaut Re
    Merci vraiment de me répondre.
    J'ai commencé par le début, à savoir "VBA Pour Les Nuls"...
    :-)

    J'ai commencé à écrire ça, je me penche d'abord sur la connexion à la base
    Est-ce que c'est bon déjà ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function cheminDeFer(ID As Integer)
    Dim ChnSQL As String
    Dim Req As QueryDef
     
    Set ChnSQL = "SELECT * FROM TABLE WHERE ID=" & ID
     
    Set Req = CurrentDb.CreateQueryDef("", ChnSQL)
    Req.Execute dbFailOnError
     
    End Function
    (Ce qui est difficile pour moi c'est la syntaxe qui est nouvelle, mais côté programmation j'ai des bonnes connaissances en C/C++)

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    ok
    pas nécessaire d'avoir un objet QueryDef, un simple recordset devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function cheminDeFer(ID As Integer)
    Dim ChnSQL As String
    Dim Req As QueryDef
     
    ChnSQL = "SELECT * FROM TABLE WHERE ID=" & ID
     
    Set Req = CurrentDb.OpenRecordset(chnsql)
     
     
    End Function
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Par défaut
    Merci pour ta réponse.

    Je pense être connecté à ma base et pouvoir récupérer le contenu de toute ma table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Option Compare Database
     
    Function cheminDeFer(ID As Integer)
    Dim ChnSQL As String    ' variable contenant la requete SQL
    Dim DB As Database      ' variable contenant un pointeur vers la base de données
    Dim myRec As Recordset  ' variable contenant le retour de la requete
     
    Set DB = CurrentDb
    Set ChnSQL = "SELECT * FROM TABLE WHERE ID=" & ID
     
    Set myRec = DB.OpenRecordset(ChnSQL)
     
    With myRec
         If .AbsolutePosition = -1 Then
                 MsgBox "Pas d'enregistrement"
         Else
                 .MoveLast
                 MsgBox .RecordCount & " Enregistrement(s) Trouvé(s)"
         End If
    End With
     
     
     
     
    End Function
     
     
    Sub Macro1()
    cheminDeFer (10)
     
    End Sub
    Cependant quand je lance ma macro, il me surligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function cheminDeFer(ID As Integer)
    et me dit "Erreur de compilation : Objet Requis".

    Tu as une idée de mon erreur ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Par défaut Re
    J'ai trouvé pour mon erreur Objet Requis.
    C'est parce que je mettais Set variable = quelque chose alors que celle ci était déjà déclarée.

    Maintenant il y a juste la récupération des données de la base qui échoue, car il me dit "Erreur de syntaxe dans la clause FROM".
    Je vais essayer de trouver, n'hésitez pas si vous avez des suggestions ça m'aiderai bien.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,
    il faut nommer les champs et les tables correctement maintenant

    effectivement, pas besoin de set variable = valeur pour une chaine de caractères
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Par défaut Re
    Merci pour ton aide.
    Voilà j'ai résolu tous mes problèmes de compilation et ça fonctionne bien.

    Voici ma fonction récursive qui calcule la généalogie pour un enregistrement donné. Elle fonctionne bien.
    N'hésite pas à faire des objections
    J'espère que ça pourra servir à d'autres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Function getGenealogie(ID As Integer) 
    ' Cette fonction prend en paramètre l'ID d'un enregistrement, et parcours tous les pères de celui-ci récursivement afin d'établir sa généalogie, donc sa place dans l'arborescence 
    ' Entrée : Integer (ID de l'enregistrement) 
    ' Sortie : String (le chemin complet avec des quotes et des slashs) 
     
    Dim ChnSQL As String ' variable contenant la requete SQL 
    Dim DB As Database ' variable contenant un pointeur vers la base de données 
    Dim myRec As Recordset ' variable contenant le retour de la requete 
    Dim IDPERE As Integer ' variable contenant l'id du parent 
    Dim INTITULE As String ' variable contenant l'intitule de l'objet courant 
    Dim CheminEnCours As String 'variable contenant le chemin en cours 
     
    If ID <> 0 Then 
     
    'On récupère les informations de l'intitulé en cours 
    Set DB = CurrentDb 
    ChnSQL = "SELECT CODE, ID, INTITULE, IDPERE FROM [NOMENCLATURE-ARCHIVES] WHERE ID=" & ID 
    Set myRec = DB.OpenRecordset(ChnSQL) 
    myRec.MoveFirst 
     
    With myRec 
    If myRec.AbsolutePosition > -1 Then 
    CODE = myRec("CODE") 
    INTITULE = myRec("INTITULE") 
    IDPERE = myRec("IDPERE") 
    End If 
    End With 
     
    'On ferme l'enregistrement 
    myRec.Close 
     
    'creation du chemin avec la page en cours 
    'Chr(34) correspond à l'insertion d'un double quote, nécessaire pour la création des répertoires sous UNIX afin de gérer les espaces dans les noms 
    CheminEnCours = Chr(34) & CODE & "-" & INTITULE & Chr(34) & "/" 
     
    'creation du chemin complet grace a un appel recursif 
    CheminComplet = getGenealogie(IDPERE) & CheminEnCours 
     
     
    Else 
    ' return de fonction 
    getGenealogie = CheminComplet 
    End If 
     
    'On retourne la valeur du chemin 
    getGenealogie = UCase(CheminComplet) 
    End Function

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 07h45
  3. Exécution script php
    Par devmat dans le forum Linux
    Réponses: 11
    Dernier message: 22/04/2007, 11h14
  4. Pb d'execution de requete avec un script php
    Par ythierrin dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/08/2003, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo