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

APIs Google Discussion :

Traduire VBA en JavaScript


Sujet :

APIs Google

  1. #1
    Membre averti Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Points : 394
    Points
    394
    Par défaut Traduire VBA en JavaScript
    Bonjour à tous,

    J'explique la situation :

    J'ai un code VBA que j'utilisais sous excel mais quand j'ai importé mon fichier sur google doc, j'ai remarqué que les macros VBA doivent être converties manuellement vers Javascript, le langage utilisé par google apps script. Donc je voudrais savoir si possible comment pourrais-je faire pour le code suivant.

    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
    Sub calcul()
     
    Dim f As Long, r As Long, C As Long, J As Long
     
    f = ActiveCell.Row
    r = Cells(f, 3).Value
     
    C = 0
    J = 0
    i = f
     
    If Not IsEmpty(Cells(i - 1, 4)) Then
     
         If IsNumeric((Cells(i - 1, 4))) Then
     
     
               Do Until C + Cells(i, 4).Value >= r
               C = C + Cells(i, 4): Cells(f, 14) = C
               i = i - 1
               J = J + 1
               If Not IsNumeric(Cells(i, 4)) Then
               Exit Do
               End If
               Loop
     
     
               Cells(f, 18) = J
               X = f - J
               Cells(f, 19) = X
     
     
                      MsgBox "Données historiques insuffisantes"
    C'est juste une partie de mon code mais si j'arrive à modifier ceci en javascript je pourrais le faire pour le reste.


    Merci à vous,

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 070
    Points : 44 677
    Points
    44 677
    Par défaut
    Bonjour,
    la documentation Class Sheet devrait t'aider pour cela.

  3. #3
    Membre averti Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Points : 394
    Points
    394
    Par défaut
    Merci pour ta réponse. Mais j'y étais déjà et je suis entrain de traduire mon code step by step.

    Voilà ce qu'il en est pour le moment :

    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
     
    function myFunction() {
     
      var ss = SpreadsheetApp.getActiveSpreadsheet();
     
      var sheet = ss.getSheetByName("Feuille 1");
     
      var active = sheet.getActiveCell();
     
      var f = active.getRowIndex();
     
      var values = [   [ f ] ];
     
      var r= sheet.getRange(f,3);
     
     
      var val = [ [r]];
     
      var test = sheet.getRange(5,5);
     
      //Injecter la valeur de la cellule(f,3) dans la cellule(5,5)
      test.setValues(val);
     
    }
     
     
     
    }
    Ca me retourne "Range" au niveau de la cellule (5,5) alors que j'ai la valeur "400" dans la cellule (f,3).

  4. #4
    Membre averti Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Points : 394
    Points
    394
    Par défaut
    J'ai trouvé pour cette partie du code. J'ai fait comme suit :

    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
    function myFunction() {
     
      var ss = SpreadsheetApp.getActiveSpreadsheet();
     
      var sheet = ss.getSheetByName("Feuille 1");
     
      var active = sheet.getActiveCell();
     
      var f = active.getRowIndex();
     
      var values = [   [ f ] ];
     
      var r= sheet.getRange(f,3);
     
      var j= r.getValues();
     
     
      var val = [ [j]];
     
      var test = sheet.getRange(5,5);
     
      //Injecter la valeur de la cellule(f,3) dans la cellule(5,5)
     
     test.setValues(j);
     
     
     
    }

    Maintenant pour le bloc if et do pour des cellules à incrémenter je cherche comment faire.

  5. #5
    Membre averti Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Points : 394
    Points
    394
    Par défaut
    J'en suis à la partie Do until et j'ai fait le code suivant :

    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
     
          var i = f
     
          var cellule = sheet.getRange(i,4).getValues();
     
          var C = 0
     
          do {
     
            C = C + cellule;
            var destination = sheet.getRange(f,14);      
            destination.setValue(C);
            i = i-1;
     
             }while (C + cellule <= r);
    Sur la cellule (f,3) j'ai la valeur 200, et sur les cellules (f,4), (f-1,4), (f-2,4) j'ai respectivement 300, 50, 100.
    Mais le code continue à tourner en vain.

  6. #6
    Membre averti Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Points : 394
    Points
    394
    Par défaut
    J'ai réussi grâce à l'aide d'une personne. Ce que je voudrais savoir c'est : Comment affecter un format de chiffre à 1 décimale en script.

    C'est bon je peux faire ça juste grâce à l'onglet format et après le calcul avec mon script ça se met au bon format automatiquement.

    Merci.

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 070
    Points : 44 677
    Points
    44 677
    Par défaut
    Comment affecter un format de chiffre à 1 décimale en script.
    Toujours dans la documentation setNumberFormat(numberFormat).

    PS : pourrais tu laisser ton résultat pour de possibles candidats à des conversions.

  8. #8
    Membre averti Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Points : 394
    Points
    394
    Par défaut
    Oui bien sûr.

    Je vais le faire ligne par ligne pour plus de détails :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      var ss = SpreadsheetApp.getActiveSpreadsheet();
     var sheet = ss.getSheetByName("Feuille 1");
     var active = sheet.getActiveCell(); 
     var f = active.getRowIndex();
    est équivalent à

    est équivalent à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var r = sheet.getRange(rowIndex,3).getValue();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var C= 0;
    var J = 0;
    var i = f;
    est équivalent à

    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
      do{
        var cellData = sheet.getRange(i, 4).getValue();
     
        if(typeof(cellData) !=='string') { 
     
              if(cellData !== ''){ 
     
                C += cellData; 
                i --; 
                J++; 
     
              } else {      
                      sheet.getRange(f,7).setBackground('Orange');
                      break; 
              }
        }
     
        else{
              sheet.getRange(f,7).setBackground('Orange');
              break;
        }
     
      } while (C <= r);
    est équivalent à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Do Until C + Cells(i, 4).Value >= r
     
               C = C + Cells(i, 4)
               i = i - 1
               J = J + 1
               If Not IsNumeric(Cells(i, 4)) Then
               Exit Do
               if Not isText(Cells(i,4)) Then
               Exit Do
               End If
               Loop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheet.getRange(f, 7).setValue(r/(C/J));
    est équivalent à

    Voilà si vous avez des questions n'hésitez pas.

  9. #9
    Nouveau Candidat au Club
    Femme Profil pro
    Salarié
    Inscrit en
    Octobre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Salarié

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut traduction VBA en Java script
    Bonjour Kiouane, mon entreprise vient de passée tout ses fichier d'EXCEL a GOOGLE du coup toutes les macros utilisées ne fonctionne plus j'ai bien essayé de retranscrire et de déchiffrer mais je ne suis pas douée du coup je n'y arrive pas.
    Je ne voudrais pas publier un autre message du même type mais je cherche quelqu'un qui pourrais m'aider a traduire entre le langage VBA et Editeur script .

    Voici le code de la macro si jamais y a un moyen de m'aider et merci d'avance a celui ou celle qui me répondra
    Code VBA : 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
    Sub COPIE_DES_DONNEES()
     
    'Définition des variables
    Dim base As Worksheet, Cell As Range, NoCol As Integer
    Dim NoLig As Long, DerLig As Long, Var As Variant
    Dim DerLigVar As Long, DerLigRes As Long
     
    'Feuille comprenant la liste des pages à traiter avec la macro (PA, PB, etc.)
    'Les noms de feuilles doivent être inscrits dans la colonne A sans cellule vide.
    Set base = Worksheets("FEUILLES_A_TRAITER")
     
    'Récupération du numéro de la dernière ligne de "FEUILLES_A_TRAITER"
    DerLig = Split(base.UsedRange.Address, "$")(4)
     
    'Dans "FEUILLES_A_TRAITER", on ne va parcourir que la première colonne (colonne A)
    NoCol = 1
     
    'Création d'une boucle pour traiter toutes les pages référencées dans "FEUILLES_A_TRAITER"
    For NoLig = 1 To DerLig
     
    'Page à traiter
    Var = base.Cells(NoLig, NoCol)
     
    'Récupération de la dernière ligne de la page à traiter
    DerLigVar = Sheets(Var).Range("A65536").End(xlUp).Row
     
    'Récupération de la ligne où coller les données dans la feuille "résumé".
    DerLigRes = Sheets("résumé").Range("A65536").End(xlUp).Row + 1
     
    'Copie des données de la page à taiter
    ActiveWorkbook.Worksheets(Var).Range("A13:F" & DerLigVar).Copy
     
    'Collage des données dans la feuille "Résumé". Collage spécial pour avoir les valeurs.
    ActiveWorkbook.Worksheets("résumé").Range("A" & DerLigRes).PasteSpecial Paste:=xlPasteValues
     
    'On traite la prochaine page
    Next
    Set base = Nothing
     
    End Sub

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

Discussions similaires

  1. VBA/IE/Javascript KO pb Maj IE9 et/ou MAJ de Site ?
    Par Gorzyne dans le forum Excel
    Réponses: 0
    Dernier message: 26/02/2013, 18h28
  2. [Toutes versions] Basculer valeur variable VBA dans JavaScript
    Par Antho87 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/08/2009, 15h27
  3. Comment traduire ca en JavaScript
    Par pasdeprisedetete dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/04/2007, 12h39
  4. [RegEx] Traduire des "expression régulières" VBA en PHP
    Par jcachico dans le forum Langage
    Réponses: 13
    Dernier message: 19/01/2006, 14h02
  5. [VBA-E]Pouvez vous me traduire ceci svp ?
    Par jcachico dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/01/2006, 13h45

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