Convertir macro Excel vers GSheet

Bonjour à tous,

J'ai réussi à "bricoler" une macro sur Excel, en faisant des recherche se jour sur le forum. (merci pour les ressources)

J'aimerais maintenant réussir à faire la même chose mais sur Google Sheet. Pourriez vous m'aider svp, car je n'arrive vraiment pas à me lancer ?

Le but de la macro est de pouvoir récupérer de les indices de prix sur la base de l'Insee.

Ensuite j'essaierai de récupérer les données, peut être avec la formule IMPORTRANGE.

Merci d'avance

Cordialement

1test-indice.zip (327.21 Ko)

Voici la macro:

Sub Series()
Dim IdBank As Variant, i As Byte

IdBank = Array("000008630", "001711010", "001711007", "010534841", _
"010536480", "010534826", "010534803", "010535746", _
"001710953", "001710986", "001710950", "001710951", _
"001711005", "001710963", "001710979", "001710974", _
"010535147", "010534825", "001711017", "010534267")

For i = 0 To UBound(IdBank)
Import IdBank(i)
Next i
End Sub

Sub Import(Idbk As Variant)
Dim Site As String, Sht As Worksheet

Site = "*********************" & Idbk

Application.DisplayAlerts = False
Set Sht = Sheets.Add(, ActiveSheet)
Sht.Name = Idbk
With Sheets(Idbk)
ThisWorkbook.XmlImport Url:=Site, ImportMap:=Nothing, Overwrite:=True, _
Destination:=.Range("A3")

.Range("A1").Value = "Mise à jour du :"
.Range("A1").HorizontalAlignment = xlRight
.Range("B1").Value = Format(Now(), "dd/mm/yyyy")
.Range("C1").Value = Format(Now(), "hh:nn")
End With
Application.DisplayAlerts = True
Set Sht = Nothing
End Sub

Sub Effacement_Toute_Feuille()
Dim Ctr As Integer
Application.DisplayAlerts = False
For Ctr = Sheets.Count To 1 Step -1
If Sheets(Ctr).Name <> ActiveSheet.Name Then
Sheets(Ctr).Delete
End If
Next
Application.DisplayAlerts = True
End Sub
Sub MAJ_Indices()
'
' MAJ_Indices Macro
'

'
Application.Run "'Test indice.xlsm'!Effacement_Toute_Feuille"
Application.Run "'Test indice.xlsm'!Series"
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
Sheets("Base").Select
Range("A1").Select
End Sub

Bonjour,

Pour ce genre de tâche l'IA s'y prête plutôt bien, essaye avec chatGPT, à moi que @Alexander soit dans le coin il a plus l'habitude que moi d'en user.

Je viens d'essayer, c'est plutôt impressionnant mais je n'ai pas réussi à le rendre utilisable.

La voici au format Google Script, pensez vous pouvoir la rendre exploitable ?

Merci

Cordialement

function Series() {
var idBank = ["000008630", "001711010", "001711007", "010534841",
"010536480", "010534826", "010534803", "010535746",
"001710953", "001710986", "001710950", "001710951",
"001711005", "001710963", "001710979", "001710974",
"010535147", "010534825", "001711017", "010534267"];

for (var i = 0; i < idBank.length; i++) {
Import(idBank[i]);
}
}

function Import(idbk) {
var site = "https:**bdm.insee.fr*series*sdmx*data*SERIES_BDM*" + idbk; remplacer "*" par "//" pour avoir l'url
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.insertSheet(idbk);
var range = sheet.getRange("A3");

var xmlContent = UrlFetchApp.fetch(site).getContentText();
var document = XmlService.parse(xmlContent);
var root = document.getRootElement();
var xmlText = root.toString();

range.setValue(xmlText);

sheet.getRange("A1").setValue("Mise à jour du :");
sheet.getRange("A1").setHorizontalAlignment("right");
sheet.getRange("B1").setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "dd/MM/yyyy"));
sheet.getRange("C1").setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "HH:mm"));
}

function Effacement_Toute_Feuille() {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i = sheets.length - 1; i >= 0; i--) {
if (sheets[i].getName() !== "Sheet1") { // Change "Sheet1" to the name of your active sheet
SpreadsheetApp.getActiveSpreadsheet().deleteSheet(sheets[i]);
}
}
}

function MAJ_Indices() {
Effacement_Toute_Feuille();
Series();
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheetByName("Base")); // Change "Base" to the name of your desired sheet
ss.getActiveRange().getCell(1, 1).activate();
}

Bonjour à tous, essai ce code, si (et à mon avis il va en y avoir) tu rencontres des erreurs postes les dans ça </> (code)

function Series() {
  var IdBank = ["000008630", "001711010", "001711007", "010534841",
  "010536480", "010534826", "010534803", "010535746",
  "001710953", "001710986", "001710950", "001710951",
  "001711005", "001710963", "001710979", "001710974",
  "010535147", "010534825", "001711017", "010534267"];

  for (var i = 0; i < IdBank.length; i++) {
    Import(IdBank[i]);
  }
}

function Import(Idbk) {
  var Site = "*********************" + Idbk;
  var Sht = SpreadsheetApp.getActiveSpreadsheet().insertSheet(Idbk);

  var response = UrlFetchApp.fetch(Site);
  var data = Utilities.parseCsv(response.getContentText());
  Sht.getRange(3, 1, data.length, data[0].length).setValues(data);

  Sht.getRange("A1").setValue("Mise à jour du :");
  Sht.getRange("A1").setHorizontalAlignment("right");
  Sht.getRange("B1").setValue(Utilities.formatDate(new Date(), "GMT", "dd/MM/yyyy"));
  Sht.getRange("C1").setValue(Utilities.formatDate(new Date(), "GMT", "HH:mm"));
}

function Effacement_Toute_Feuille() {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (var i = 0; i < sheets.length; i++) {
    if (sheets[i].getName() !== SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName()) {
      SpreadsheetApp.getActiveSpreadsheet().deleteSheet(sheets[i]);
    }
  }
}

function MAJ_Indices() {
  Effacement_Toute_Feuille();
  Series();
  SpreadsheetApp.getActiveSpreadsheet().setActiveSheet(SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Base"));
}

"Veuillez noter que le code ci-dessus suppose que vous avez une feuille nommée “Base” dans votre Google Sheets. De plus, veuillez remplacer “*********************” par l’URL réelle que vous utilisez pour importer les données. Enfin, n’oubliez pas que Google Apps Script ne prend pas en charge l’importation XML, donc si votre URL renvoie des données XML, vous devrez peut-être utiliser une bibliothèque tierce pour analyser les données XML."

Bonjour,

Un grand merci, cela fonctionne très bien !

Très bonne surprise. 😉

Rechercher des sujets similaires à "convertir macro gsheet"