Problème Macro Gsheets

Fermé
Krys15 - 7 oct. 2020 à 10:43
Christouf1542 Messages postés 15 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 26 octobre 2020 - 7 oct. 2020 à 16:16
Bonjour,

j'essaye de transférer un fichier excel sur gsheets, mais celui-ci contenait une macro.
J'ai fait cette macro en passant par l'enregistreur excel. Lorsque je fais le même enregistrement dans gsheets, la macro n'aboutit pas lorsque je la lance une fois enregistrée (message d'erreur à chaque fois, alors qu'aucun problème sur excel).
Et comme je n'ai pas encore le niveau pour faire une macro sans l'enregistreur, je suis bloqué...

Est-ce qu'un voit d'où peut venir le problème ? Existe-t-il un outil de "traduction" de macro excel vers gsheets ?
Merci par avance !!!

Voici la macro de base excel :

Sub DetailResultats_Calcul()
'
' DetailResultats_Calcul Macro
'

'
ActiveCell.FormulaR1C1 = "='Data Vidéo'!RC[16]"
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A74"), Type:=xlFillDefault
Range("A2:A74").Select
ActiveCell.FormulaR1C1 = "='Data Vidéo'!RC[16]"
Range("B2").Select
ActiveCell.FormulaR1C1 = _
"=SUMIFS('Data Vidéo'!C[5],'Data Vidéo'!C[15],'Détail des Résultats'!RC[-1])"
Range("C2").Select
ActiveCell.FormulaR1C1 = _
"=SUMIFS('Data Vidéo'!C[5],'Data Vidéo'!C[14],'Détail des Résultats'!RC[-2])"
Range("D2").Select
ActiveCell.FormulaR1C1 = _
"=SUMIFS('Data Vidéo'!C[12],'Data Vidéo'!C[13],'Détail des Résultats'!RC[-3])"
Range("H2").Select
ActiveCell.FormulaR1C1 = _
"=SUMIFS('Data Vidéo'!C[3],'Data Vidéo'!C[9],'Détail des Résultats'!RC[-7])"
Range("E2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RC[-1]/RC[-3]"
Range("F2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RC[2]/RC[-2]"
Range("G2").Select
ActiveCell.FormulaR1C1 = "=(RC[1]/RC[-5])*1000"
Range("E2").Select
Selection.Style = "Percent"
Selection.NumberFormat = "0.0%"
Selection.NumberFormat = "0.00%"
Range("F2").Select
Selection.Style = "Currency"
Selection.NumberFormat = _
"_-* #,##0.000 $_-;-* #,##0.000 $_-;_-* ""-""?? $_-;_-@_-"
Range("G2").Select
Selection.Style = "Currency"
Columns("H:H").Select
Selection.Style = "Currency"
Selection.NumberFormat = "_-* #,##0.0 $_-;-* #,##0.0 $_-;_-* ""-""?? $_-;_-@_-"
Selection.NumberFormat = "_-* #,##0 $_-;-* #,##0 $_-;_-* ""-""?? $_-;_-@_-"
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A74"), Type:=xlFillDefault
Range("A2:A74").Select
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B74"), Type:=xlFillDefault
Range("B2:B74").Select
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C74"), Type:=xlFillDefault
Range("C2:C74").Select
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D74"), Type:=xlFillDefault
Range("D2:D74").Select
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E74"), Type:=xlFillDefault
Range("E2:E74").Select
Range("F2").Select
Selection.AutoFill Destination:=Range("F2:F74"), Type:=xlFillDefault
Range("F2:F74").Select
Range("G2").Select
Selection.AutoFill Destination:=Range("G2:G74"), Type:=xlFillDefault
Range("G2:G74").Select
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H74"), Type:=xlFillDefault
Range("H2:H74").Select
Cells.Select
Range("A75").Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
ActiveSheet.Range("$A$1:$H$74").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7 _
, 8), Header:=xlYes

End Sub
A voir également:

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
Modifié le 7 oct. 2020 à 11:07
Bonjour,

Est-ce qu'un voit d'où peut venir le problème ?
Excel et Google Sheets n'utilisent pas le même langage de macro donc les macros de l'un ne fonctionnent pas sur l'autre.

Il faut écrire un fichier sans macro ce qui dans ton cas à l'air possible.

0
Christouf1542 Messages postés 15 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 26 octobre 2020
7 oct. 2020 à 16:16
Bonjour Patrice,

merci pour votre réponse. Mais comme je le disais dans mon message, lorsque j'enregistre la macro sur Gsheets, celle-ci n'est pas fonctionnelle alors qu'elle marche très bien sur excel.

Voici le code gsheets :

Merci !!!

/** @OnlyCurrentDoc */

function Macro_Resultats_Video(){
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('I13').activate();
};

function myFunction(){
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A2').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Data Vidéo'), true);
spreadsheet.getRange('Q:Q').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Détail des Résultats'), true);
spreadsheet.getRange('A1').activate();
spreadsheet.getRange('\'Data Vidéo\'!Q:Q').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('A:A').activate();
spreadsheet.getActiveRange().offset(1, 0, spreadsheet.getActiveRange().getNumRows() - 1).activate();
spreadsheet.getActiveRange().removeDuplicates().activate();
spreadsheet.getRange('B2').activate();
spreadsheet.getCurrentCell().setFormula('=SOMME.SI.ENS(\'Data Vidéo\'!D:D;\'Data Vidéo\'!Q:Q;A2)');
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Data Vidéo'), true);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Détail des Résultats'), true);
spreadsheet.getCurrentCell().setFormula('=SOMME.SI.ENS(\'Data Vidéo\'!G:G;\'Data Vidéo\'!Q:Q;A2)');
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('B2:B3'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('B3').activate();
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('B3:B11'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('B3:B11').activate();
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('B3:B39'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('C2').activate();
spreadsheet.getCurrentCell().setFormula('=SOMME.SI.ENS(\'Data Vidéo\'!H:H;\'Data Vidéo\'!Q:Q;A2)');
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('C2:C39'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('D2').activate();
spreadsheet.getCurrentCell().setFormula('=SOMME.SI.ENS(\'Data Vidéo\'!P:P;\'Data Vidéo\'!Q:Q;A2)');
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('D2:D39'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('H2').activate();
spreadsheet.getCurrentCell().setFormula('=SOMME.SI.ENS(\'Data Vidéo\'!K:K;\'Data Vidéo\'!Q:Q;A2)');
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('H2:H3'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('H2:H3').activate();
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('H2:H39'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('E2').activate();
spreadsheet.getCurrentCell().setFormula('=D2/B2');
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('E2:E39'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('E2:E39').activate();
spreadsheet.getActiveRangeList().setNumberFormat('0.00%');
spreadsheet.getRange('F2').activate();
spreadsheet.getCurrentCell().setFormula('=H2/D2');
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('F2:F39'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getActiveRangeList().setNumberFormat('#,##0.00\\ [$€-1]')
.setNumberFormat('#,##0.0\\ [$€-1]')
.setNumberFormat('#,##0.00\\ [$€-1]')
.setNumberFormat('#,##0.000\\ [$€-1]');
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('F2:F39'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('G2').activate();
spreadsheet.getCurrentCell().setFormula('=(H2/B2)*1000');
spreadsheet.getActiveRangeList().setNumberFormat('#,##0.00\\ [$€-1]');
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('G2:G39'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('A1').activate();
spreadsheet.getRange('A:H').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('A:H').activate();
spreadsheet.setCurrentCell(spreadsheet.getRange('H1'));
spreadsheet.getActiveRange().removeDuplicates().activate();
};
0