Problème Macro Gsheets

Signaler
-
Messages postés
13
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
7 octobre 2020
-
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

2 réponses

Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 2020
1 498
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.

Cordialement
Patrice

Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
Messages postés
13
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
7 octobre 2020

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();
};