Problème Macro Gsheets
Krys15
-
Christouf1542 Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
Christouf1542 Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Problème Macro Gsheets
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
2 réponses
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.
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.
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();
};
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();
};